16 lookahead symbols (tokens) follow (these are the column labels for the table): begin keyword end keyword ; special := special if keyword then keyword + special += special = special identifier number EndMarker else keyword for keyword to keyword do keyword 10 nonterminals follow, along with the table showing rules used for each: PROGRAM 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 BLOCK 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 STATEMENT 3 0 0 0 11 0 0 0 0 4 0 0 0 14 0 0 LIST 5 0 0 0 5 0 0 0 0 5 0 0 0 5 0 0 TAIL 0 7 6 0 0 0 0 0 0 0 0 0 0 0 0 0 ASSIGNMENT 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 EXPRESSION 0 0 0 0 0 0 0 0 0 9 10 0 0 0 0 0 SELECTION 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 FORLOOP 0 0 0 0 0 0 0 0 0 0 0 0 0 13 0 0 CONDITION 0 0 0 0 0 0 0 0 0 15 15 0 0 0 0 0 15 grammar rules follow (each digit indicates # of items in rule body): 1 PROGRAM -> 1 BLOCK 2 BLOCK -> 3 begin LIST end 3 STATEMENT -> 1 BLOCK 4 STATEMENT -> 1 ASSIGNMENT 5 LIST -> 2 STATEMENT TAIL 6 TAIL -> 2 ; LIST 7 TAIL -> 0 8 ASSIGNMENT -> 3 identifier := EXPRESSION 9 EXPRESSION -> 1 identifier 10 EXPRESSION -> 1 number 11 STATEMENT -> 1 SELECTION 12 SELECTION -> 6 if CONDITION then STATEMENT else STATEMENT 13 FORLOOP -> 8 for identifier := EXPRESSION to EXPRESSION do STATEMENT 14 STATEMENT -> 1 FORLOOP 15 CONDITION -> 3 EXPRESSION = EXPRESSION