fix: correct operator precedence for % token from PREC_TERM to PREC_FACTOR
The modulo operator was incorrectly assigned PREC_TERM precedence, making it evaluate at the same level as + and -. This caused expressions like "13 + 1 % 7" to parse as "(13 + 1) % 7" instead of the correct "13 + (1 % 7)". Changed the grammar rule for TOKEN_PERCENT to use PREC_FACTOR, matching the precedence of * and / operators. Added a precedence test case in mod.wren to verify the fix.
This commit is contained in:
+1
-1
@@ -2183,7 +2183,7 @@ GrammarRule rules[] =
|
||||
/* TOKEN_COMMA */ UNUSED,
|
||||
/* TOKEN_STAR */ INFIX_OPERATOR(PREC_FACTOR, "* "),
|
||||
/* TOKEN_SLASH */ INFIX_OPERATOR(PREC_FACTOR, "/ "),
|
||||
/* TOKEN_PERCENT */ INFIX_OPERATOR(PREC_TERM, "% "),
|
||||
/* TOKEN_PERCENT */ INFIX_OPERATOR(PREC_FACTOR, "% "),
|
||||
/* TOKEN_PLUS */ INFIX_OPERATOR(PREC_TERM, "+ "),
|
||||
/* TOKEN_MINUS */ OPERATOR("- "),
|
||||
/* TOKEN_PIPE */ INFIX_OPERATOR(PREC_BITWISE, "| "),
|
||||
|
||||
Reference in New Issue
Block a user