diff options
Diffstat (limited to 'src/parser.mly')
| -rw-r--r-- | src/parser.mly | 84 |
1 files changed, 63 insertions, 21 deletions
diff --git a/src/parser.mly b/src/parser.mly index d08ab7bf..257c6d7a 100644 --- a/src/parser.mly +++ b/src/parser.mly @@ -549,12 +549,8 @@ star_right_atomic_exp: { eloc (E_app_infix($1,Id_aux(Id("mod"), locn 2 2), $3)) } | star_exp StarUnderS starstar_right_atomic_exp { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } - | star_exp StarUnderSi starstar_right_atomic_exp - { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | star_exp StarUnderU starstar_right_atomic_exp { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } - | star_exp StarUnderUi starstar_right_atomic_exp - { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } plus_exp: | star_exp @@ -572,18 +568,34 @@ plus_right_atomic_exp: | plus_exp Minus star_right_atomic_exp { eloc (E_app_infix($1,Id_aux(Id("-"), locn 2 2), $3)) } -cons_exp: +shift_exp: | plus_exp { $1 } - | plus_exp ColonColon cons_exp + | shift_exp GtGt plus_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + | shift_exp GtGtGt plus_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + | shift_exp LtLt plus_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + +shift_right_atomic_exp: + | plus_right_atomic_exp + { $1 } + | shift_exp GtGt plus_right_atomic_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + +cons_exp: + | shift_exp + { $1 } + | shift_exp ColonColon cons_exp { eloc (E_cons($1,$3)) } - | plus_exp Colon cons_exp + | shift_exp Colon cons_exp { eloc (E_app_infix($1,Id_aux(Id(":"), locn 2 2), $3)) } cons_right_atomic_exp: - | plus_right_atomic_exp + | shift_right_atomic_exp { $1 } - | plus_exp ColonColon cons_right_atomic_exp + | shift_exp ColonColon cons_right_atomic_exp { eloc (E_cons($1,$3)) } at_exp: @@ -595,6 +607,8 @@ at_exp: { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | cons_exp Carrot at_exp { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + | cons_exp TildeCarrot at_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } at_right_atomic_exp: | cons_right_atomic_exp @@ -611,20 +625,32 @@ eq_exp: { $1 } | 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 + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp GtEq at_exp { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp GtEqUnderS at_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp GtEqUnderU at_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp Gt at_exp { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp GtUnderS at_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp LtEq at_exp { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp LtEqUnderS at_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp Lt at_exp { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp LtUnderS at_exp { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp LtUnderSi at_exp { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } - | eq_exp IN at_exp - { eloc (E_app_infix($1,Id_aux(Id("In"), locn 2 2), $3)) } + | eq_exp LtUnderU at_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp ColonEq at_exp { eloc (E_assign($1,$3)) } @@ -633,6 +659,32 @@ eq_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 + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp GtEq at_right_atomic_exp + { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp GtEqUnderS at_right_atomic_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp GtEqUnderU at_right_atomic_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp Gt at_right_atomic_exp + { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp GtUnderS at_right_atomic_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp LtEq at_right_atomic_exp + { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp LtEqUnderS at_right_atomic_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp Lt at_right_atomic_exp + { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp LtUnderS at_right_atomic_exp + { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp LtUnderSi at_right_atomic_exp + { eloc (E_app_infix ($1,Id_aux(Id($2), locn 2 2), $3)) } + | eq_exp LtUnderU at_right_atomic_exp + { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp ColonEq at_right_atomic_exp { eloc (E_assign($1,$3)) } @@ -643,9 +695,6 @@ and_exp: { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp AmpAmp and_exp { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } - | eq_exp AND and_exp - { eloc (E_app_infix($1,Id_aux(Id("And"), locn 2 2), $3)) } - and_right_atomic_exp: | eq_right_atomic_exp @@ -654,8 +703,6 @@ and_right_atomic_exp: { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } | eq_exp AmpAmp and_right_atomic_exp { eloc (E_app_infix($1,Id_aux(Id($2), locn 2 2), $3)) } - | eq_exp AND and_right_atomic_exp - { eloc (E_app_infix($1,Id_aux(Id("And"), locn 2 2), $3)) } or_exp: | and_exp @@ -664,9 +711,6 @@ or_exp: { eloc (E_app_infix($1,Id_aux(Id("|"), locn 2 2), $3)) } | and_exp BarBar or_exp { eloc (E_app_infix($1,Id_aux(Id("||"), locn 2 2), $3)) } - | and_exp OR or_exp - { eloc (E_app_infix($1,Id_aux(Id("OR"), locn 2 2), $3)) } - or_right_atomic_exp: | and_right_atomic_exp @@ -675,8 +719,6 @@ or_right_atomic_exp: { eloc (E_app_infix($1,Id_aux(Id("|"), locn 2 2), $3)) } | and_exp BarBar or_right_atomic_exp { eloc (E_app_infix($1,Id_aux(Id("||"), locn 2 2), $3)) } - | and_exp OR or_right_atomic_exp - { eloc (E_app_infix($1,Id_aux(Id("OR"), locn 2 2), $3)) } exp: | or_exp |
