diff --git a/src/shared/parser.mly b/src/shared/parser.mly
index bce9c3df..eefb8b85 100644
--- a/src/shared/parser.mly
+++ b/src/shared/parser.mly
@@ -108,9 +108,9 @@ plain_topdef:
     { Commands.TopLetRec defs }
   | EXTERNAL x = ident COLON t = ty EQUAL n = STRING
     { Commands.External (x, t, n) }
-  | EFFECT eff = effect COLON t1 = prod_ty ARROW t2 = ty
+  | EFFECT eff = effect_ COLON t1 = prod_ty ARROW t2 = ty
     { Commands.DefEffect (eff, (t1, t2))}
-  | EFFECT eff = effect COLON t = prod_ty
+  | EFFECT eff = effect_ COLON t = prod_ty
     { let unit_loc = Location.make $startpos(t) $endpos(t) in
       Commands.DefEffect (eff, ({it= TyTuple []; at= unit_loc}, t))}
 
@@ -220,9 +220,9 @@ plain_simple_term:
     { Variant (lbl, None) }
   | cst = const_term
     { Const cst }
-  | PERFORM LPAREN eff = effect t = term RPAREN
+  | PERFORM LPAREN eff = effect_ t = term RPAREN
     { Effect (eff, t)}
-  | PERFORM eff = effect
+  | PERFORM eff = effect_
     { let unit_loc = Location.make $startpos(eff) $endpos(eff) in
       Effect (eff, {it= Tuple []; at= unit_loc})}
   | LBRACK ts = separated_list(SEMI, comma_term) RBRACK
@@ -265,9 +265,9 @@ function_case:
 match_case:
   | p = pattern ARROW t = term
     { Val_match (p, t) }
-  | EFFECT LPAREN eff = effect p = simple_pattern RPAREN k = simple_pattern ARROW t = term
+  | EFFECT LPAREN eff = effect_ p = simple_pattern RPAREN k = simple_pattern ARROW t = term
     { Eff_match (eff, (p, k, t)) }
-  | EFFECT eff = effect k = simple_pattern ARROW t = term
+  | EFFECT eff = effect_ k = simple_pattern ARROW t = term
     { let unit_loc = Location.make $startpos(eff) $endpos(eff) in
       Eff_match (eff, ({it= PTuple []; at= unit_loc}, k, t)) }
 
@@ -297,9 +297,9 @@ let_rec_def:
 
 handler_clause: mark_position(plain_handler_clause) { $1 }
 plain_handler_clause:
-  | EFFECT LPAREN eff = effect p = simple_pattern RPAREN k = simple_pattern ARROW t = term
+  | EFFECT LPAREN eff = effect_ p = simple_pattern RPAREN k = simple_pattern ARROW t = term
     { EffectClause (eff, (p, k, t)) }
-  | EFFECT eff = effect  k = simple_pattern ARROW t = term
+  | EFFECT eff = effect_  k = simple_pattern ARROW t = term
     { let unit_loc = Location.make $startpos(eff) $endpos(eff) in
       EffectClause (eff, ({it= PTuple []; at= unit_loc}, k, t)) }
   | c = function_case
@@ -518,7 +518,7 @@ sum_case:
   | lbl = UNAME OF t = ty
     { (lbl, Some t) }
 
-effect:
+effect_:
   | eff = UNAME
     { eff }
 
