LL(1) Parsing

Write your own context-free grammar and see an LL(1) parser in action!

1. Write your LL(1) grammar

Formatting Instructions

  • Write each production rule in a separate line (see example to the left)
  • Separate each token using whitespace
  • The non-terminal on the left-hand-side of the first rule is the start non-terminal
  • The string '' represents denotes the empty string (ε).
  • $ is reserved as the end-of-input symbol, and S' is reserved as an artificial start symbol. The grammar is automatically augmented with the rule S' ::= start $


  • More information about the parser construction is printed on the console
  • The source code follows the pseudocode in lecture. In particular, see computeNullable, computeFirst, computeFollow, and computeLL1Tables

Generate tables

2. Nullable/First/Follow Table and Transition Table

Nonterminals FIRST FOLLOW

3. Parsing

Start/Reset Step Forward

Partial Parse Tree