quantifier "(" path-expr "," comparison ")" (spec §6.2, §6.4). The
inner comparison is deliberately a plain Comparison, not a
BoolExpr — a quantifier’s inner test MUST NOT contain &&/||/!
(spec §6.4), so this can’t nest arbitrary boolean expressions.
A boolean expression: any combination of comparison/quantifier-expr/
defined-expr joined by &&, ||, and unary ! (spec §6.2). A bare
Comparison (no combinator) is the pre-existing, common case.
An operand (spec §6.2): either a value-expr (a path, number,
arithmetic expression, or built-in function call) or a non-numeric
literal (string/bool/null/array). A bare numeric literal always
parses as Value(ValueExpr::Number(_)), never Literal(Literal::Number(_))
— value-expr is tried first in the grammar’s ordered choice.
value-expr (spec §6.2): a path-expr/number/func-call, optionally
combined with +/-/*//. A bare Path/Number, with no
arithmetic operator, is the pre-existing, common case.
Conformance floor for the total operand count in one condition-expr
(spec §6.2): a Conforming Parser MUST accept at least this many. This is
the actual limit this implementation enforces (well above the floor);
see count_operands in etdl-compiler’s typeck module (rule V-206).
Counts operands (every Comparison leaf’s two operands, plus every
arithmetic/function operand nested within them) in a BoolExpr tree, for
rule V-206’s conformance-floor check (spec §6.2).