1. Write your LL(1) grammar (empty string '' represents ε):
Valid LL(1) Grammars
For any production S -> A | B, it must be the case that:
- For no terminal t could A and B derive strings beginning with t
- At most one of A and B can derive the empty string
- if B can derive the empty string, then A does not derive any string beginning with a terminal in Follow(A)
Formatting Instructions
- The non-terminal on the left-hand-side of the first rule is the start non-terminal
- Write each production rule in a separate line (see example to the left)
- Separate each token using whitespace
- $ 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 $
Debugging
- 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
|
|