0 $accept : %entry% $end 1 start : expr EOF 2 expr : IDENT 3 | INT 4 | expr ADD expr 5 | expr SUB expr 6 | expr MUL expr 7 | LPAREN expr RPAREN 8 %entry% : '\001' start state 0 $accept : . %entry% $end (0) '\001' shift 1 . error %entry% goto 2 state 1 %entry% : '\001' . start (8) INT shift 3 IDENT shift 4 LPAREN shift 5 . error start goto 6 expr goto 7 state 2 $accept : %entry% . $end (0) $end accept state 3 expr : INT . (3) . reduce 3 state 4 expr : IDENT . (2) . reduce 2 state 5 expr : LPAREN . expr RPAREN (7) INT shift 3 IDENT shift 4 LPAREN shift 5 . error expr goto 8 state 6 %entry% : '\001' start . (8) . reduce 8 state 7 start : expr . EOF (1) expr : expr . ADD expr (4) expr : expr . SUB expr (5) expr : expr . MUL expr (6) EOF shift 9 ADD shift 10 SUB shift 11 MUL shift 12 . error state 8 expr : expr . ADD expr (4) expr : expr . SUB expr (5) expr : expr . MUL expr (6) expr : LPAREN expr . RPAREN (7) ADD shift 10 SUB shift 11 MUL shift 12 RPAREN shift 13 . error state 9 start : expr EOF . (1) . reduce 1 state 10 expr : expr ADD . expr (4) INT shift 3 IDENT shift 4 LPAREN shift 5 . error expr goto 14 state 11 expr : expr SUB . expr (5) INT shift 3 IDENT shift 4 LPAREN shift 5 . error expr goto 15 state 12 expr : expr MUL . expr (6) INT shift 3 IDENT shift 4 LPAREN shift 5 . error expr goto 16 state 13 expr : LPAREN expr RPAREN . (7) . reduce 7 state 14 expr : expr . ADD expr (4) expr : expr ADD expr . (4) expr : expr . SUB expr (5) expr : expr . MUL expr (6) MUL shift 12 EOF reduce 4 ADD reduce 4 SUB reduce 4 RPAREN reduce 4 state 15 expr : expr . ADD expr (4) expr : expr . SUB expr (5) expr : expr SUB expr . (5) expr : expr . MUL expr (6) MUL shift 12 EOF reduce 5 ADD reduce 5 SUB reduce 5 RPAREN reduce 5 state 16 expr : expr . ADD expr (4) expr : expr . SUB expr (5) expr : expr . MUL expr (6) expr : expr MUL expr . (6) . reduce 6 12 terminals, 4 nonterminals 9 grammar rules, 17 states