LearnViz CompSci
Home / Learn / Languages & Compilers / LL and LR Parsing

Intermediate Topic 24 of 50 Languages & Compilers

LL and LR Parsing

Families of deterministic parsing algorithms.

How it works

LL parsers read input left to right and build a leftmost derivation top-down, predicting which production to apply from lookahead tokens, using a table or recursive functions; they require grammars without left recursion and common prefixes. LR parsers read left to right and build a rightmost derivation in reverse, bottom-up, using a stack with shift and reduce actions driven by a state table, and handle a larger class of grammars, including left-recursive ones. Variants include SLR, LALR and canonical LR.

Step-by-step walkthrough

  1. LL parsers read left to right and build the tree top-down.
  2. They predict which rule to apply by looking ahead.
  3. LR parsers also read left to right and build bottom-up.
  4. They shift tokens onto a stack and reduce them with rules.
  5. LR handles more grammars, LL is easier to write by hand.

Where it is used

Parser generators such as ANTLR for LL(*) and Yacc, Bison and Menhir for LALR and LR are used to build compilers and tools.

Common pitfall

Grammar conflicts, shift/reduce and reduce/reduce, indicate ambiguity or insufficient lookahead and must be resolved by rewriting rules or specifying precedence. LR tables are big and errors can be cryptic. Semantic actions mixed into grammars become hard to maintain. Use precedence declarations carefully and test thoroughly.

Where it fits in the course

LL and LR Parsing is topic 24 of 50 in Languages & Compilers, rated Intermediate. It follows Recursive Descent Parsing. The next topic is Parser Generators.

Practice and explore

How to study this topic

  1. Read the explanation above and restate the definition in your own words.
  2. Open the interactive lesson and answer its mini quiz.
  3. Read the common pitfall, then write a short example that avoids it.
  4. Check your understanding in the Languages & Compilers quiz, and revisit the topic if you miss a question.

Frequently asked questions

What is LL and LR Parsing?
Families of deterministic parsing algorithms. It belongs to Languages & Compilers and is an intermediate-level topic.
Where do people use LL and LR Parsing?
Parser generators such as ANTLR for LL(*) and Yacc, Bison and Menhir for LALR and LR are used to build compilers and tools.
What is the most common mistake with LL and LR Parsing?
Grammar conflicts, shift/reduce and reduce/reduce, indicate ambiguity or insufficient lookahead and must be resolved by rewriting rules or specifying precedence.
What should I learn before this topic?
Start with Recursive Descent Parsing, the topic just before it in Languages & Compilers.
How can I practice it?
Answer the mini quiz in the interactive lesson, then take the Languages & Compilers quiz.
Is LL and LR Parsing hard to learn?
It is an Intermediate topic. Be comfortable with the Beginner topics in this area first, then read the common pitfall carefully, since it is where most mistakes happen.
How long does it take to learn LL and LR Parsing?
Most learners can read the explanation and finish the interactive lesson in under an hour. Fluency comes from applying the idea, so plan a few short practice sessions with the quiz.
Which topics are related to LL and LR Parsing?
Recursive Descent Parsing, Parser Generators, Compiler Phases are closely connected. The full list is in the related topics section of this page.
What should I study after LL and LR Parsing?
Continue with Parser Generators, the next topic in Languages & Compilers.

Related topics