Each precedence level is represented by a separate grammar rule. This
way we can unambiguously encode precedence and fixity of all operators.
Rearrange all operators into four groups based on their precedence.
NonBrace.* expressions now include OpComma, to parse parameter lists for
operators like map.
NonBraceExpression was renamed to BlockLevelExpression.
BlockLevelExpressiion and NonBraceExpression have different rules around
commas, to allow { push @a, 1 }, but to disallow {1, 2} (to avoid
block/anonhash abiguity).
Each precedence level is represented by a separate grammar rule. This way we can unambiguously encode precedence and fixity of all operators.
Rearrange all operators into four groups based on their precedence.
NonBrace.* expressions now include OpComma, to parse parameter lists for operators like
map
.NonBraceExpression was renamed to BlockLevelExpression. BlockLevelExpressiion and NonBraceExpression have different rules around commas, to allow
{ push @a, 1 }
, but to disallow{1, 2}
(to avoid block/anonhash abiguity).Fixes #28