Practice free →
HomeGATE CSEcomputerscienceCompiler Design › How does a parser typically encode OPERATOR PREC…

How does a parser typically encode OPERATOR PRECEDENCE in the grammar?

Aencoded as code comments
Bnon-terminal per precedence level
Cchecked at runtime during execution
Dhandled inside the lexer (scanner)
Answer & Solution
Correct answer: B. non-terminal per precedence level
1. CASCADING precedence: each precedence LEVEL gets its own non-terminal. Higher-precedence rules sit BENEATH lower ones. 2. Standard hierarchy (low to high): - Expression: equality, comparison, addition, multiplication, unary, primary 3. Grammar: - $E \to A \,(==\, A)^*$ (equality, lowest) - $A \to M\, (+\, M)^*$ (additive) - $M \to U\, (*\, U)^*$ (multiplicative) - $U \to !U \mid P$ (unary) - $P \to NUM \mid (E)$ (primary, highest) 4. The deeper in the recursion = higher precedence (binds tighter). Same approach in Crafting Interpreters Lox grammar. 5. Other options don't encode precedence properly. _Source: Bob Nystrom, "Crafting Interpreters", Ch 6.2 (Recursive descent — precedence ladder)._
Solve this in the app — GATE CSE practice & 24k+ MCQs →
Related questions