diff options
Diffstat (limited to 'parsing/parser.mly')
-rw-r--r-- | parsing/parser.mly | 25 |
1 files changed, 3 insertions, 22 deletions
diff --git a/parsing/parser.mly b/parsing/parser.mly index 87d43bdab..43a485151 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -319,17 +319,6 @@ let wrap_type_annotation newtypes core_type body = let polyvars, core_type = varify_constructors newtypes core_type in (exp, ghtyp(Ptyp_poly(polyvars,core_type))) -let let_operator op bindings cont = - let pat, expr = - match List.rev bindings with - | [] -> assert false - | [x] -> x - | l -> - let pats, exprs = List.split l in - ghpat (Ppat_tuple pats), ghexp (Pexp_tuple exprs) - in - mkexp(Pexp_apply(op, ["", expr; "", ghexp(Pexp_function("", None, [pat, cont]))])) - %} /* Tokens */ @@ -397,7 +386,6 @@ let let_operator op bindings cont = %token LESS %token LESSMINUS %token LET -%token <string> LETOP %token <string> LIDENT %token LPAREN %token MATCH @@ -474,7 +462,6 @@ The precedences must be listed from low to high. %nonassoc below_SEMI %nonassoc SEMI /* below EQUAL ({lbl=...; lbl=...}) */ %nonassoc LET /* above SEMI ( ...; let ... in ...) */ -%nonassoc LETOP %nonassoc below_WITH %nonassoc FUNCTION WITH /* below BAR (match ... with ...) */ %nonassoc AND /* above WITH (module rec A: SIG with ... and ...) */ @@ -995,8 +982,9 @@ expr: { mkexp(Pexp_apply($1, List.rev $2)) } | LET rec_flag let_bindings IN seq_expr { mkexp(Pexp_let($2, List.rev $3, $5)) } - | let_operator let_bindings IN seq_expr - { let_operator $1 $2 $4 } + | LET DOT simple_expr let_binding IN seq_expr + { let (pat, expr) = $4 in + mkexp(Pexp_apply($3, ["", expr; "", ghexp(Pexp_function("", None, [pat, $6]))])) } | LET MODULE UIDENT module_binding IN seq_expr { mkexp(Pexp_letmodule($3, $4, $6)) } | LET OPEN mod_longident IN seq_expr @@ -1719,7 +1707,6 @@ operator: | INFIXOP2 { $1 } | INFIXOP3 { $1 } | INFIXOP4 { $1 } - | LETOP { $1 } | BANG { "!" } | PLUS { "+" } | PLUSDOT { "+." } @@ -1735,12 +1722,6 @@ operator: | AMPERAMPER { "&&" } | COLONEQUAL { ":=" } ; -let_operator: - LETOP - { mkexp (Pexp_ident(Lident $1)) } - | mod_longident DOT LETOP - { mkexp (Pexp_ident(Ldot ($1, $3))) } -; constr_ident: UIDENT { $1 } /* | LBRACKET RBRACKET { "[]" } */ |