Problem
I found a bug in lama parser, that is somehow connected to ambiguous grammar rules for case expression and infix operators.
Example code
infix | at ++ (lhs, rhs) {
lhs ++ rhs
}
infix -> at ++ (lhs, rhs) {
lhs ++ rhs
}
(* Prints "WAT" *)
printf ("%s\n",
case "?" of
"?" -> "W"
| "A" -> "T"
esac.string
);
(* Prints W *)
printf ("%s\n",
case "?" of
"?" -> "W"
| "A" -> "T"
esac
)
Expected behaviour
Both outputs are quite reasonable but they should be the same for both expressions.
Environment
Problem
I found a bug in lama parser, that is somehow connected to ambiguous grammar rules for case expression and infix operators.
Example code
Expected behaviour
Both outputs are quite reasonable but they should be the same for both expressions.
Environment