diff options
Diffstat (limited to 'chapter23/docs/23-grammar.md')
| -rw-r--r-- | chapter23/docs/23-grammar.md | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/chapter23/docs/23-grammar.md b/chapter23/docs/23-grammar.md index 1d52d5a6..cd231b08 100644 --- a/chapter23/docs/23-grammar.md +++ b/chapter23/docs/23-grammar.md @@ -80,11 +80,16 @@ expression : logicalExpression ('?' assignment (':' assignment)?)? ; logicalExpression : bitwiseExpression (('&&' | '||') logicalExpression)? ; bitwiseExpression - : comparisonExpression (('&' | '|' | '^') comparisonExpression)* + : equalityExpression (('&' | '|' | '^') equalityExpression)* ; +equalityExpression : comparisonExpression (('==' | '!=') comparisonExpression)* ; + +// Compare adjacent operands once; stop after the first false comparison. +// Keep one direction per chain; < and <= (or > and >=) may mix. comparisonExpression - : shiftExpression (('==' | '!=' | '<' | '<=' | '>' | '>=') shiftExpression)* + : shiftExpression (('<' | '<=') shiftExpression)* + | shiftExpression (('>' | '>=') shiftExpression)+ ; shiftExpression |
