Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- From 7cfd771288da557b056be51fba557def9b266e25 Mon Sep 17 00:00:00 2001
- From: Kaustuv Chaudhuri <kaustuv.chaudhuri@inria.fr>
- Date: Sat, 29 Jun 2013 10:58:54 +0200
- Subject: Add support for M.[] and M.{}.
- They are abbreviations for M.([]) and M.({}), respectively.
- ---
- camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml | 4 ++++
- parsing/parser.mly | 11 +++++++++++
- 2 files changed, 15 insertions(+)
- diff --git a/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml b/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml
- index 1545b5e..4146650 100644
- --- a/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml
- +++ b/camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml
- @@ -705,6 +705,10 @@ New syntax:\
- | s = a_CHAR -> <:expr< $chr:s$ >>
- | i = TRY module_longident_dot_lparen; e = sequence; ")" ->
- <:expr< let open $i$ in $e$ >>
- + | i = TRY module_longident_dot_lparen; "["; mk_list = sem_expr_for_list; "::"; last = expr; "]" ->
- + <:expr< let open $i$ in $mk_list last$ >>
- + | i = TRY module_longident_dot_lparen; "{"; el = label_expr_list; "}" ->
- + <:expr< let open $i$ in { $el$ } >>
- | i = TRY val_longident -> <:expr< $id:i$ >>
- | "`"; s = a_ident -> <:expr< ` $s$ >>
- | "["; "]" -> <:expr< [] >>
- diff --git a/parsing/parser.mly b/parsing/parser.mly
- index 429d6be..03df3b7 100644
- --- a/parsing/parser.mly
- +++ b/parsing/parser.mly
- @@ -1109,6 +1109,12 @@ simple_expr:
- { let (exten, fields) = $2 in mkexp(Pexp_record(fields, exten)) }
- | LBRACE record_expr error
- { unclosed "{" 1 "}" 3 }
- + | mod_longident DOT LBRACE record_expr RBRACE
- + { let (exten, fields) = $4 in
- + let rec_exp = mkexp(Pexp_record(fields, exten)) in
- + mkexp(Pexp_open(Fresh, mkrhs $1 1, rec_exp)) }
- + | mod_longident DOT LBRACE record_expr error
- + { unclosed "{" 3 "}" 5 }
- | LBRACKETBAR expr_semi_list opt_semi BARRBRACKET
- { mkexp(Pexp_array(List.rev $2)) }
- | LBRACKETBAR expr_semi_list opt_semi error
- @@ -1119,6 +1125,11 @@ simple_expr:
- { reloc_exp (mktailexp (rhs_loc 4) (List.rev $2)) }
- | LBRACKET expr_semi_list opt_semi error
- { unclosed "[" 1 "]" 4 }
- + | mod_longident DOT LBRACKET expr_semi_list opt_semi RBRACKET
- + { let list_exp = reloc_exp (mktailexp (rhs_loc 6) (List.rev $4)) in
- + mkexp(Pexp_open(Fresh, mkrhs $1 1, list_exp)) }
- + | mod_longident DOT LBRACKET expr_semi_list opt_semi error
- + { unclosed "[" 3 "]" 6 }
- | PREFIXOP simple_expr
- { mkexp(Pexp_apply(mkoperator $1 1, ["",$2])) }
- | BANG simple_expr
- --
- 1.7.10.4
Add Comment
Please, Sign In to add comment