diff --git a/src/parser/parser.mly b/src/parser/parser.mly index e201a7fb60eaf135a9af27384b3b132ecb8b686e..10b3cd0fb02800097df9b1be26f89488eb64444a 100644 --- a/src/parser/parser.mly +++ b/src/parser/parser.mly @@ -633,7 +633,7 @@ numeral: prog_decl: | VAL ghost kind labels(lident_rich) mk_expr(val_defn) { Dlet ($4, $2, $3, $5) } | LET ghost kind labels(lident_rich) mk_expr(fun_defn) { Dlet ($4, $2, $3, $5) } -| LET ghost kind labels(lident_rich) EQUAL seq_expr { Dlet ($4, $2, $3, $6) } +| LET ghost kind labels(lident_rich) const_defn { Dlet ($4, $2, $3, $5) } | LET REC with_list1(rec_defn) { Drec $3 } | EXCEPTION labels(uident) { Dexn ($2, PTtuple [], Ity.MaskVisible) } | EXCEPTION labels(uident) return { Dexn ($2, fst $3, snd $3) } @@ -663,6 +663,10 @@ val_defn: | params ret_opt spec { Eany ($1, Expr.RKnone, fst $2, snd $2, $3) } +const_defn: +| cast EQUAL seq_expr { { $3 with expr_desc = Ecast ($3, $1) } } +| EQUAL seq_expr { $2 } + (* Program expressions *) mk_expr(X): d = X { mk_expr d $startpos $endpos }