From e2b042bd9721995486f4f0cf96847c02d27908e3 Mon Sep 17 00:00:00 2001 From: Cliff Click Date: Sat, 24 Oct 2026 15:26:23 -0700 Subject: Fix chained comparisons and restore recursion coverage --- chapter23/docs/23-grammar.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'chapter23/docs/23-grammar.md') 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 -- cgit v1.2.3