summaryrefslogtreecommitdiffstats
path: root/parsing/parser.mly
diff options
context:
space:
mode:
Diffstat (limited to 'parsing/parser.mly')
-rw-r--r--parsing/parser.mly17
1 files changed, 9 insertions, 8 deletions
diff --git a/parsing/parser.mly b/parsing/parser.mly
index b563094c1..0164e3219 100644
--- a/parsing/parser.mly
+++ b/parsing/parser.mly
@@ -1212,18 +1212,19 @@ expr_comma_list:
| expr COMMA expr { [$3; $1] }
;
record_expr:
- simple_expr WITH lbl_expr_list opt_semi { (Some $1, List.rev $3) }
- | lbl_expr_list opt_semi { (None, List.rev $1) }
+ simple_expr WITH lbl_expr_list { (Some $1, $3) }
+ | lbl_expr_list { (None, $1) }
;
lbl_expr_list:
+ lbl_expr { [$1] }
+ | lbl_expr SEMI lbl_expr_list { $1 :: $3 }
+ | lbl_expr SEMI { [$1] }
+;
+lbl_expr:
label_longident EQUAL expr
- { [mkrhs $1 1,$3] }
+ { (mkrhs $1 1,$3) }
| label_longident
- { [mkrhs $1 1, exp_of_label $1 1] }
- | lbl_expr_list SEMI label_longident EQUAL expr
- { (mkrhs $3 3, $5) :: $1 }
- | lbl_expr_list SEMI label_longident
- { (mkrhs $3 3, exp_of_label $3 3) :: $1 }
+ { (mkrhs $1 1, exp_of_label $1 1) }
;
field_expr_list:
label EQUAL expr