summaryrefslogtreecommitdiff
path: root/src/parser.mly
diff options
context:
space:
mode:
authorBrian Campbell2017-12-07 11:10:50 +0000
committerBrian Campbell2017-12-07 11:10:50 +0000
commit691efa994a72d0e9cdbcdfcc4d6a9b1976d91e2b (patch)
tree5f5a31d4d6632e1283c3916b403de6adacc3e701 /src/parser.mly
parente36e7e0e5068abc31b69831d98138ee5d1e541da (diff)
Resolve function clause guard parsing ambiguity by requiring parentheses
Diffstat (limited to 'src/parser.mly')
-rw-r--r--src/parser.mly8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/parser.mly b/src/parser.mly
index 755c2cc7..5e4a2cad 100644
--- a/src/parser.mly
+++ b/src/parser.mly
@@ -869,6 +869,8 @@ eq_exp:
| at_exp
{ $1 }
/* XXX check for consistency */
+ | eq_exp Eq at_exp
+ { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) }
| eq_exp EqEq at_exp
{ eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) }
| eq_exp ExclEq at_exp
@@ -905,6 +907,8 @@ eq_exp:
eq_right_atomic_exp:
| at_right_atomic_exp
{ $1 }
+ | eq_exp Eq at_right_atomic_exp
+ { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) }
| eq_exp EqEq at_right_atomic_exp
{ eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) }
| eq_exp ExclEq at_right_atomic_exp
@@ -1017,8 +1021,8 @@ letbind:
patsexp_funcl:
| atomic_pat Eq exp
{ peloc (Pat_exp($1,$3)) }
- | atomic_pat When exp Eq exp
- { peloc (Pat_when ($1, $3, $5)) }
+ | Lparen atomic_pat When exp Rparen Eq exp
+ { peloc (Pat_when ($2, $4, $7)) }
funcl:
| id patsexp_funcl