Commit Graph

8750 Commits (0b9347f482130b9c92c84ed2d0914c8a327d69fb)

Author SHA1 Message Date
Alain Frisch 0b9347f482 Represent exception declarations as constructor declarations in the Parsetree.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13442 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-25 15:49:10 +00:00
Alain Frisch dd61fb5e55 Represent label and constructor declarations as records in the typedtree. Also keep return type for GADT constructors.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13441 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-25 14:56:56 +00:00
Alain Frisch 5c98dd91fe Starting to keep attributes in the typedtree.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13440 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-25 14:16:07 +00:00
Alain Frisch f85f1e2759 Get rid of alternative syntax for '(module...)'.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13420 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-22 11:30:28 +00:00
Alain Frisch b9ad592ac0 Infix syntax for attributes/extension nodes restricted to expression constructions starting with a (combination of) keywords.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13419 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-22 11:25:52 +00:00
Alain Frisch 734a4b6816 Fix example.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13418 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-21 08:53:42 +00:00
Alain Frisch b0987fd693 Attributes on expresions (etc) are now stored in the expression record, to facilitate pattern matching on structured fragments of AST while ignoring attributes. Introducing a new Ast_helper module to help creating AST fragments.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13381 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-08 14:59:45 +00:00
Alain Frisch 556d070fdb Adapt examples.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13380 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-08 09:36:55 +00:00
Alain Frisch 7c4129960b Adapt examples.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13379 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-08 09:34:02 +00:00
Alain Frisch a483bbaaf4 Experimenting with alternative syntax for extension nodes (as an annotation on the opening keyword/delimiter).
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13378 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-08 09:17:30 +00:00
Alain Frisch ab2a491ba0 Support attributes on opening delimiter/keyword for all kinds of expressions.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13377 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-08 08:42:53 +00:00
Alain Frisch dec300a026 Allow seq_expr, not only expr as argument of attributes/extension nodes. This allows us to write [%do a; b; c <-- d; f c; ...].
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13376 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-08 08:18:01 +00:00
Alain Frisch a9148b249e Typo.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13375 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-07 15:33:13 +00:00
Alain Frisch cbf93255c5 Doc.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13374 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-07 15:29:30 +00:00
Alain Frisch 07e81b2f0d Examples. Also accept uppercase idents (and some keywords) as ids for attributes/extension nodes.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13373 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-07 15:29:11 +00:00
Alain Frisch eaf9e3744a It is now possible to start a signature or a structure with a ';;' token and to have two successive ';;' tokens.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13372 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-07 14:15:23 +00:00
Alain Frisch 72a638757c Stand-alone ("floating") sig_item/str_item attributes now use the
standard syntax for item attributes.  They are recognized at the 
beginning of the signature/structure and after a ";;" token.



git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13371 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-07 13:46:44 +00:00
Alain Frisch 378c1d92df Simplify.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13370 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-07 13:13:36 +00:00
Alain Frisch a555c12f52 Support attributes on recursive modules.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13369 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-07 13:07:32 +00:00
Alain Frisch 63b229658e Remove prefix syntax for attributes.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13368 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-07 13:00:01 +00:00
Alain Frisch 076eca73cc Alternative syntax for some constructions starting with a keyword.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13364 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 14:53:39 +00:00
Alain Frisch 9f8b148761 More doc.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13363 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 14:29:04 +00:00
Alain Frisch 8055753e58 Typo.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13362 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 13:51:39 +00:00
Alain Frisch 97c5f1a253 Attributes on label in record type declarations.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13361 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 13:51:18 +00:00
Alain Frisch cb3b398308 Document the changes on the branch.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13360 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 12:57:56 +00:00
Alain Frisch d50038cae7 Attribute has structure/signature item.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13359 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 12:27:32 +00:00
Alain Frisch 2cf65c8c85 Record for module type declarations.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13358 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 12:14:02 +00:00
Alain Frisch 24a0c6eb0e Name is part of the value_description record.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13357 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 12:00:18 +00:00
Alain Frisch 241abe55e6 Type name is part of the type declaration record.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13356 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 11:47:59 +00:00
Alain Frisch 59bdf321d3 Switch Pstr_modtype argument to a record type.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13355 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 10:49:44 +00:00
Alain Frisch a79811afe9 Finish attributes on module/recursive modules in structures.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13354 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-06 10:12:21 +00:00
Alain Frisch d32b19008a Parse recursive module as standard modules, and check in the type-checker that an explicit type is provided. (Unfinished.)
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13353 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-05 16:50:05 +00:00
Alain Frisch e0045d42dd Parse attributes on modules/recursive modules/module types in structures (currently not kept in Parsetree).
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13352 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-05 12:49:27 +00:00
Alain Frisch cc70961d4f Support item attributes on exn rebind.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13351 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-05 12:44:40 +00:00
Alain Frisch b01b7305bd Put name in the exception_declaration record.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13350 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-05 12:37:17 +00:00
Alain Frisch 8823b9dd6c Item attributes on external declarations in structures.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13349 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-05 12:17:12 +00:00
Alain Frisch 42a33460ed Item attributes on classes.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13348 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-05 12:06:38 +00:00
Alain Frisch 7de8a9688e Allow to put 'item' attributes before the 'type' or 'module rec' keywords. They apply to the first item in the declaration.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13347 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-05 11:51:51 +00:00
Alain Frisch db579b0a1e Extension as structure/signature items [%%lid expr].
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13346 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-05 11:46:25 +00:00
Alain Frisch a64152ae6e Use [%lid expr] syntax for extensions.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13345 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-05 11:30:15 +00:00
Alain Frisch 8461db39f1 Attributes on module/module type/recursive module declarations in interfaces.
Module:

[^^id expr] [^^id expr] ...
module X : S
[@@id expr] [@@id expr] ...

Module types:

[^^id expr] [^^id expr] ...
module type X = S
[@@id expr] [@@id expr] ...

Recursive modules:

module rec [^^id expr] [^^id expr] X1 : S1 [@@id expr] [@@id expr] ...
       and [^^id expr] [^^id expr] X1 : S1 [@@id expr] [@@id expr] ...




git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13344 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 17:39:07 +00:00
Alain Frisch a5059464fe Attributes on open/include in signatures.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13343 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 16:36:32 +00:00
Alain Frisch 46c790a663 Attributes on exception declarations.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13342 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 16:20:49 +00:00
Alain Frisch 2825f94d5b Attributes on value declared in signatures.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13341 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 16:03:20 +00:00
Alain Frisch a3f6606793 Prefix attributes for 'items'.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13340 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 15:53:43 +00:00
Alain Frisch f8706985c2 Adding prefix syntax for attributes [^id expr] ...
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13339 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 15:48:24 +00:00
Alain Frisch 5f0aead005 Adding attributes on constructor declarations (type t = A [@id expr] | B [@id expr] of ...), and switch to a record type to represent those constructor declarations in the Parsetree.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13338 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 15:35:47 +00:00
Alain Frisch 70bc46ef0c New syntax:
Attributes:   ... [@id expr]
 Extension:    [#id expr]
 
 Attributes on items:  ... [@@id expr]




git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13337 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 15:00:30 +00:00
Alain Frisch be76a15a6b Attributes/extensions as module types.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13336 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 14:11:15 +00:00
Alain Frisch a2acbc8d3b Adding extension/attribute on patterns.
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/extension_points@13335 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
2013-03-04 13:52:23 +00:00