diff --git a/parser.mly b/parser.mly
index df8f827074a2d6dceb07ff182939acdde5c5b51f..f4dc10fec959e35e3e26d79e76b7c4cf85899dc7 100644
--- a/parser.mly
+++ b/parser.mly
@@ -23,8 +23,8 @@
     in
     let rec flatten_nary = function
       | [] -> []
-      | Nary (op, Nary (op2, left) :: right) :: tl when op2 = op ->
-        Nary (op, flatten_nary left @ flatten_nary right) :: flatten_nary tl
+      | Nary (op1, Nary (op2, left) :: right) :: tl when op1 = op2 ->
+        flatten_nary (Nary (op1, flatten_nary left @ flatten_nary right) :: tl)
       | hd :: tl -> hd :: flatten_nary tl
     in
     match terms |> transform_ops |> flatten_nary with