Created by PLY version 3.11 (http://www.dabeaz.com/ply) Grammar Rule 0 S' -> expression Rule 1 expression -> CONST Rule 2 expression -> WHILE expression DO LBRACE expression RBRACE Terminals, with rules where they appear CONST : 1 DO : 2 LBRACE : 2 RBRACE : 2 WHILE : 2 error : Nonterminals, with rules where they appear expression : 2 2 0 Parsing method: LALR state 0 (0) S' -> . expression (1) expression -> . CONST (2) expression -> . WHILE expression DO LBRACE expression RBRACE CONST shift and go to state 2 WHILE shift and go to state 3 expression shift and go to state 1 state 1 (0) S' -> expression . state 2 (1) expression -> CONST . $end reduce using rule 1 (expression -> CONST .) DO reduce using rule 1 (expression -> CONST .) RBRACE reduce using rule 1 (expression -> CONST .) state 3 (2) expression -> WHILE . expression DO LBRACE expression RBRACE (1) expression -> . CONST (2) expression -> . WHILE expression DO LBRACE expression RBRACE CONST shift and go to state 2 WHILE shift and go to state 3 expression shift and go to state 4 state 4 (2) expression -> WHILE expression . DO LBRACE expression RBRACE DO shift and go to state 5 state 5 (2) expression -> WHILE expression DO . LBRACE expression RBRACE LBRACE shift and go to state 6 state 6 (2) expression -> WHILE expression DO LBRACE . expression RBRACE (1) expression -> . CONST (2) expression -> . WHILE expression DO LBRACE expression RBRACE CONST shift and go to state 2 WHILE shift and go to state 3 expression shift and go to state 7 state 7 (2) expression -> WHILE expression DO LBRACE expression . RBRACE RBRACE shift and go to state 8 state 8 (2) expression -> WHILE expression DO LBRACE expression RBRACE . $end reduce using rule 2 (expression -> WHILE expression DO LBRACE expression RBRACE .) DO reduce using rule 2 (expression -> WHILE expression DO LBRACE expression RBRACE .) RBRACE reduce using rule 2 (expression -> WHILE expression DO LBRACE expression RBRACE .)