Parser operator precedence inverts JS semantics for bitwise operators
File: packages/utils.parser/src/operators.ts:172–192
Issue: Bitwise operators |(12), ^(11), &(10) have higher precedence than relational (11) and equality (10) operators — the exact inverse of JavaScript. Expression a < b | c parses as a < (b | c) instead of (a < b) | c. ^ collides with < at 11; & collides with === at 10.
Current:
operators['|'].precedence = 12
operators['^'].precedence = 11
operators['&'].precedence = 10
operators['<'].precedence = 11
operators['==='].precedence = 10
Recommended (match JS/MDN precedence):
operators['<'].precedence = 12 // relational
operators['<='].precedence = 12
operators['>'].precedence = 12
operators['>='].precedence = 12
operators['=='].precedence = 11 // equality
operators['!='].precedence = 11
operators['==='].precedence = 11
operators['!=='].precedence = 11
operators['&'].precedence = 10 // bitwise AND
operators['^'].precedence = 9 // bitwise XOR
operators['|'].precedence = 8 // bitwise OR
Detected in #297
Parser operator precedence inverts JS semantics for bitwise operators
File: packages/utils.parser/src/operators.ts:172–192
Issue: Bitwise operators |(12), ^(11), &(10) have higher precedence than relational (11) and equality (10) operators — the exact inverse of JavaScript. Expression a < b | c parses as a < (b | c) instead of (a < b) | c. ^ collides with < at 11; & collides with === at 10.
Current:
Recommended (match JS/MDN precedence):
Detected in #297