Created by PLY version 3.11 (http://www.dabeaz.com/ply)

Grammar

Rule 0     S' -> E
Rule 1     E -> LET D IN E
Rule 2     E -> ID
Rule 3     E -> ID LPAREN A RPAREN
Rule 4     E -> E AOP E
Rule 5     E -> LPAREN E RPAREN
Rule 6     E -> CONST
Rule 7     E -> ID ASSIGN E
Rule 8     E -> E SEMICOLON E
Rule 9     E -> IF B THEN E ELSE E
Rule 10    E -> WHILE B DO LBRACE E RBRACE
Rule 11    A -> E
Rule 12    A -> A COMMA E
Rule 13    D -> ID LPAREN V RPAREN LBRACE E RBRACE
Rule 14    D -> D D
Rule 15    V -> ID
Rule 16    V -> V COMMA V
Rule 17    B -> E EQOP E
Rule 18    B -> E COMP E
Rule 19    B -> B EQOP B
Rule 20    B -> B LOP B
Rule 21    B -> TRUE
Rule 22    B -> FALSE
Rule 23    B -> LPAREN B RPAREN

Terminals, with rules where they appear

AOP                  : 4
ASSIGN               : 7
COMMA                : 12 16
COMP                 : 18
CONST                : 6
DO                   : 10
ELSE                 : 9
EQOP                 : 17 19
FALSE                : 22
ID                   : 2 3 7 13 15
IF                   : 9
IN                   : 1
LBRACE               : 10 13
LET                  : 1
LOP                  : 20
LPAREN               : 3 5 13 23
RBRACE               : 10 13
RPAREN               : 3 5 13 23
SEMICOLON            : 8
THEN                 : 9
TRUE                 : 21
WHILE                : 10
error                : 

Nonterminals, with rules where they appear

A                    : 3 12
B                    : 9 10 19 19 20 20 23
D                    : 1 14 14
E                    : 1 4 4 5 7 8 8 9 9 10 11 12 13 17 17 18 18 0
V                    : 13 16 16

Parsing method: LALR

state 0

    (0) S' -> . E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 1

state 1

    (0) S' -> E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 2

    (1) E -> LET . D IN E
    (13) D -> . ID LPAREN V RPAREN LBRACE E RBRACE
    (14) D -> . D D

    ID              shift and go to state 11

    D                              shift and go to state 10

state 3

    (2) E -> ID .
    (3) E -> ID . LPAREN A RPAREN
    (7) E -> ID . ASSIGN E

    AOP             reduce using rule 2 (E -> ID .)
    SEMICOLON       reduce using rule 2 (E -> ID .)
    $end            reduce using rule 2 (E -> ID .)
    RPAREN          reduce using rule 2 (E -> ID .)
    EQOP            reduce using rule 2 (E -> ID .)
    COMP            reduce using rule 2 (E -> ID .)
    COMMA           reduce using rule 2 (E -> ID .)
    ELSE            reduce using rule 2 (E -> ID .)
    THEN            reduce using rule 2 (E -> ID .)
    LOP             reduce using rule 2 (E -> ID .)
    DO              reduce using rule 2 (E -> ID .)
    RBRACE          reduce using rule 2 (E -> ID .)
    LPAREN          shift and go to state 12
    ASSIGN          shift and go to state 13


state 4

    (5) E -> LPAREN . E RPAREN
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 14

state 5

    (6) E -> CONST .

    AOP             reduce using rule 6 (E -> CONST .)
    SEMICOLON       reduce using rule 6 (E -> CONST .)
    $end            reduce using rule 6 (E -> CONST .)
    RPAREN          reduce using rule 6 (E -> CONST .)
    EQOP            reduce using rule 6 (E -> CONST .)
    COMP            reduce using rule 6 (E -> CONST .)
    COMMA           reduce using rule 6 (E -> CONST .)
    ELSE            reduce using rule 6 (E -> CONST .)
    THEN            reduce using rule 6 (E -> CONST .)
    LOP             reduce using rule 6 (E -> CONST .)
    DO              reduce using rule 6 (E -> CONST .)
    RBRACE          reduce using rule 6 (E -> CONST .)


state 6

    (9) E -> IF . B THEN E ELSE E
    (17) B -> . E EQOP E
    (18) B -> . E COMP E
    (19) B -> . B EQOP B
    (20) B -> . B LOP B
    (21) B -> . TRUE
    (22) B -> . FALSE
    (23) B -> . LPAREN B RPAREN
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    TRUE            shift and go to state 17
    FALSE           shift and go to state 18
    LPAREN          shift and go to state 19
    LET             shift and go to state 2
    ID              shift and go to state 3
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    B                              shift and go to state 15
    E                              shift and go to state 16

state 7

    (10) E -> WHILE . B DO LBRACE E RBRACE
    (17) B -> . E EQOP E
    (18) B -> . E COMP E
    (19) B -> . B EQOP B
    (20) B -> . B LOP B
    (21) B -> . TRUE
    (22) B -> . FALSE
    (23) B -> . LPAREN B RPAREN
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    TRUE            shift and go to state 17
    FALSE           shift and go to state 18
    LPAREN          shift and go to state 19
    LET             shift and go to state 2
    ID              shift and go to state 3
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    B                              shift and go to state 20
    E                              shift and go to state 16

state 8

    (4) E -> E AOP . E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 21

state 9

    (8) E -> E SEMICOLON . E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 22

state 10

    (1) E -> LET D . IN E
    (14) D -> D . D
    (13) D -> . ID LPAREN V RPAREN LBRACE E RBRACE
    (14) D -> . D D

    IN              shift and go to state 24
    ID              shift and go to state 11

    D                              shift and go to state 23

state 11

    (13) D -> ID . LPAREN V RPAREN LBRACE E RBRACE

    LPAREN          shift and go to state 25


state 12

    (3) E -> ID LPAREN . A RPAREN
    (11) A -> . E
    (12) A -> . A COMMA E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    A                              shift and go to state 26
    E                              shift and go to state 27

state 13

    (7) E -> ID ASSIGN . E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 28

state 14

    (5) E -> LPAREN E . RPAREN
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    RPAREN          shift and go to state 29
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 15

    (9) E -> IF B . THEN E ELSE E
    (19) B -> B . EQOP B
    (20) B -> B . LOP B

    THEN            shift and go to state 30
    EQOP            shift and go to state 31
    LOP             shift and go to state 32


state 16

    (17) B -> E . EQOP E
    (18) B -> E . COMP E
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    EQOP            shift and go to state 33
    COMP            shift and go to state 34
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 17

    (21) B -> TRUE .

    THEN            reduce using rule 21 (B -> TRUE .)
    EQOP            reduce using rule 21 (B -> TRUE .)
    LOP             reduce using rule 21 (B -> TRUE .)
    DO              reduce using rule 21 (B -> TRUE .)
    RPAREN          reduce using rule 21 (B -> TRUE .)


state 18

    (22) B -> FALSE .

    THEN            reduce using rule 22 (B -> FALSE .)
    EQOP            reduce using rule 22 (B -> FALSE .)
    LOP             reduce using rule 22 (B -> FALSE .)
    DO              reduce using rule 22 (B -> FALSE .)
    RPAREN          reduce using rule 22 (B -> FALSE .)


state 19

    (23) B -> LPAREN . B RPAREN
    (5) E -> LPAREN . E RPAREN
    (17) B -> . E EQOP E
    (18) B -> . E COMP E
    (19) B -> . B EQOP B
    (20) B -> . B LOP B
    (21) B -> . TRUE
    (22) B -> . FALSE
    (23) B -> . LPAREN B RPAREN
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    TRUE            shift and go to state 17
    FALSE           shift and go to state 18
    LPAREN          shift and go to state 19
    LET             shift and go to state 2
    ID              shift and go to state 3
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    B                              shift and go to state 35
    E                              shift and go to state 36

state 20

    (10) E -> WHILE B . DO LBRACE E RBRACE
    (19) B -> B . EQOP B
    (20) B -> B . LOP B

    DO              shift and go to state 37
    EQOP            shift and go to state 31
    LOP             shift and go to state 32


state 21

    (4) E -> E AOP E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    AOP             reduce using rule 4 (E -> E AOP E .)
    SEMICOLON       reduce using rule 4 (E -> E AOP E .)
    $end            reduce using rule 4 (E -> E AOP E .)
    RPAREN          reduce using rule 4 (E -> E AOP E .)
    EQOP            reduce using rule 4 (E -> E AOP E .)
    COMP            reduce using rule 4 (E -> E AOP E .)
    COMMA           reduce using rule 4 (E -> E AOP E .)
    ELSE            reduce using rule 4 (E -> E AOP E .)
    THEN            reduce using rule 4 (E -> E AOP E .)
    LOP             reduce using rule 4 (E -> E AOP E .)
    DO              reduce using rule 4 (E -> E AOP E .)
    RBRACE          reduce using rule 4 (E -> E AOP E .)

  ! AOP             [ shift and go to state 8 ]
  ! SEMICOLON       [ shift and go to state 9 ]


state 22

    (8) E -> E SEMICOLON E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    SEMICOLON       reduce using rule 8 (E -> E SEMICOLON E .)
    $end            reduce using rule 8 (E -> E SEMICOLON E .)
    RPAREN          reduce using rule 8 (E -> E SEMICOLON E .)
    EQOP            reduce using rule 8 (E -> E SEMICOLON E .)
    COMP            reduce using rule 8 (E -> E SEMICOLON E .)
    COMMA           reduce using rule 8 (E -> E SEMICOLON E .)
    ELSE            reduce using rule 8 (E -> E SEMICOLON E .)
    THEN            reduce using rule 8 (E -> E SEMICOLON E .)
    LOP             reduce using rule 8 (E -> E SEMICOLON E .)
    DO              reduce using rule 8 (E -> E SEMICOLON E .)
    RBRACE          reduce using rule 8 (E -> E SEMICOLON E .)
    AOP             shift and go to state 8

  ! AOP             [ reduce using rule 8 (E -> E SEMICOLON E .) ]
  ! SEMICOLON       [ shift and go to state 9 ]


state 23

    (14) D -> D D .
    (14) D -> D . D
    (13) D -> . ID LPAREN V RPAREN LBRACE E RBRACE
    (14) D -> . D D

  ! shift/reduce conflict for ID resolved as shift
    IN              reduce using rule 14 (D -> D D .)
    ID              shift and go to state 11

  ! ID              [ reduce using rule 14 (D -> D D .) ]

    D                              shift and go to state 23

state 24

    (1) E -> LET D IN . E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 38

state 25

    (13) D -> ID LPAREN . V RPAREN LBRACE E RBRACE
    (15) V -> . ID
    (16) V -> . V COMMA V

    ID              shift and go to state 39

    V                              shift and go to state 40

state 26

    (3) E -> ID LPAREN A . RPAREN
    (12) A -> A . COMMA E

    RPAREN          shift and go to state 41
    COMMA           shift and go to state 42


state 27

    (11) A -> E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    RPAREN          reduce using rule 11 (A -> E .)
    COMMA           reduce using rule 11 (A -> E .)
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 28

    (7) E -> ID ASSIGN E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    SEMICOLON       reduce using rule 7 (E -> ID ASSIGN E .)
    $end            reduce using rule 7 (E -> ID ASSIGN E .)
    RPAREN          reduce using rule 7 (E -> ID ASSIGN E .)
    EQOP            reduce using rule 7 (E -> ID ASSIGN E .)
    COMP            reduce using rule 7 (E -> ID ASSIGN E .)
    COMMA           reduce using rule 7 (E -> ID ASSIGN E .)
    ELSE            reduce using rule 7 (E -> ID ASSIGN E .)
    THEN            reduce using rule 7 (E -> ID ASSIGN E .)
    LOP             reduce using rule 7 (E -> ID ASSIGN E .)
    DO              reduce using rule 7 (E -> ID ASSIGN E .)
    RBRACE          reduce using rule 7 (E -> ID ASSIGN E .)
    AOP             shift and go to state 8

  ! AOP             [ reduce using rule 7 (E -> ID ASSIGN E .) ]
  ! SEMICOLON       [ shift and go to state 9 ]


state 29

    (5) E -> LPAREN E RPAREN .

    AOP             reduce using rule 5 (E -> LPAREN E RPAREN .)
    SEMICOLON       reduce using rule 5 (E -> LPAREN E RPAREN .)
    $end            reduce using rule 5 (E -> LPAREN E RPAREN .)
    RPAREN          reduce using rule 5 (E -> LPAREN E RPAREN .)
    EQOP            reduce using rule 5 (E -> LPAREN E RPAREN .)
    COMP            reduce using rule 5 (E -> LPAREN E RPAREN .)
    COMMA           reduce using rule 5 (E -> LPAREN E RPAREN .)
    ELSE            reduce using rule 5 (E -> LPAREN E RPAREN .)
    THEN            reduce using rule 5 (E -> LPAREN E RPAREN .)
    LOP             reduce using rule 5 (E -> LPAREN E RPAREN .)
    DO              reduce using rule 5 (E -> LPAREN E RPAREN .)
    RBRACE          reduce using rule 5 (E -> LPAREN E RPAREN .)


state 30

    (9) E -> IF B THEN . E ELSE E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 43

state 31

    (19) B -> B EQOP . B
    (17) B -> . E EQOP E
    (18) B -> . E COMP E
    (19) B -> . B EQOP B
    (20) B -> . B LOP B
    (21) B -> . TRUE
    (22) B -> . FALSE
    (23) B -> . LPAREN B RPAREN
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    TRUE            shift and go to state 17
    FALSE           shift and go to state 18
    LPAREN          shift and go to state 19
    LET             shift and go to state 2
    ID              shift and go to state 3
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    B                              shift and go to state 44
    E                              shift and go to state 16

state 32

    (20) B -> B LOP . B
    (17) B -> . E EQOP E
    (18) B -> . E COMP E
    (19) B -> . B EQOP B
    (20) B -> . B LOP B
    (21) B -> . TRUE
    (22) B -> . FALSE
    (23) B -> . LPAREN B RPAREN
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    TRUE            shift and go to state 17
    FALSE           shift and go to state 18
    LPAREN          shift and go to state 19
    LET             shift and go to state 2
    ID              shift and go to state 3
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    B                              shift and go to state 45
    E                              shift and go to state 16

state 33

    (17) B -> E EQOP . E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 46

state 34

    (18) B -> E COMP . E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 47

state 35

    (23) B -> LPAREN B . RPAREN
    (19) B -> B . EQOP B
    (20) B -> B . LOP B

    RPAREN          shift and go to state 48
    EQOP            shift and go to state 31
    LOP             shift and go to state 32


state 36

    (5) E -> LPAREN E . RPAREN
    (17) B -> E . EQOP E
    (18) B -> E . COMP E
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    RPAREN          shift and go to state 29
    EQOP            shift and go to state 33
    COMP            shift and go to state 34
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 37

    (10) E -> WHILE B DO . LBRACE E RBRACE

    LBRACE          shift and go to state 49


state 38

    (1) E -> LET D IN E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    SEMICOLON       reduce using rule 1 (E -> LET D IN E .)
    $end            reduce using rule 1 (E -> LET D IN E .)
    RPAREN          reduce using rule 1 (E -> LET D IN E .)
    EQOP            reduce using rule 1 (E -> LET D IN E .)
    COMP            reduce using rule 1 (E -> LET D IN E .)
    COMMA           reduce using rule 1 (E -> LET D IN E .)
    ELSE            reduce using rule 1 (E -> LET D IN E .)
    THEN            reduce using rule 1 (E -> LET D IN E .)
    LOP             reduce using rule 1 (E -> LET D IN E .)
    DO              reduce using rule 1 (E -> LET D IN E .)
    RBRACE          reduce using rule 1 (E -> LET D IN E .)
    AOP             shift and go to state 8

  ! AOP             [ reduce using rule 1 (E -> LET D IN E .) ]
  ! SEMICOLON       [ shift and go to state 9 ]


state 39

    (15) V -> ID .

    RPAREN          reduce using rule 15 (V -> ID .)
    COMMA           reduce using rule 15 (V -> ID .)


state 40

    (13) D -> ID LPAREN V . RPAREN LBRACE E RBRACE
    (16) V -> V . COMMA V

    RPAREN          shift and go to state 50
    COMMA           shift and go to state 51


state 41

    (3) E -> ID LPAREN A RPAREN .

    AOP             reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    SEMICOLON       reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    $end            reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    RPAREN          reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    EQOP            reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    COMP            reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    COMMA           reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    ELSE            reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    THEN            reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    LOP             reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    DO              reduce using rule 3 (E -> ID LPAREN A RPAREN .)
    RBRACE          reduce using rule 3 (E -> ID LPAREN A RPAREN .)


state 42

    (12) A -> A COMMA . E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 52

state 43

    (9) E -> IF B THEN E . ELSE E
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    ELSE            shift and go to state 53
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 44

    (19) B -> B EQOP B .
    (19) B -> B . EQOP B
    (20) B -> B . LOP B

    THEN            reduce using rule 19 (B -> B EQOP B .)
    EQOP            reduce using rule 19 (B -> B EQOP B .)
    LOP             reduce using rule 19 (B -> B EQOP B .)
    DO              reduce using rule 19 (B -> B EQOP B .)
    RPAREN          reduce using rule 19 (B -> B EQOP B .)

  ! EQOP            [ shift and go to state 31 ]
  ! LOP             [ shift and go to state 32 ]


state 45

    (20) B -> B LOP B .
    (19) B -> B . EQOP B
    (20) B -> B . LOP B

  ! shift/reduce conflict for EQOP resolved as shift
  ! shift/reduce conflict for LOP resolved as shift
    THEN            reduce using rule 20 (B -> B LOP B .)
    DO              reduce using rule 20 (B -> B LOP B .)
    RPAREN          reduce using rule 20 (B -> B LOP B .)
    EQOP            shift and go to state 31
    LOP             shift and go to state 32

  ! EQOP            [ reduce using rule 20 (B -> B LOP B .) ]
  ! LOP             [ reduce using rule 20 (B -> B LOP B .) ]


state 46

    (17) B -> E EQOP E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    THEN            reduce using rule 17 (B -> E EQOP E .)
    EQOP            reduce using rule 17 (B -> E EQOP E .)
    LOP             reduce using rule 17 (B -> E EQOP E .)
    DO              reduce using rule 17 (B -> E EQOP E .)
    RPAREN          reduce using rule 17 (B -> E EQOP E .)
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 47

    (18) B -> E COMP E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    THEN            reduce using rule 18 (B -> E COMP E .)
    EQOP            reduce using rule 18 (B -> E COMP E .)
    LOP             reduce using rule 18 (B -> E COMP E .)
    DO              reduce using rule 18 (B -> E COMP E .)
    RPAREN          reduce using rule 18 (B -> E COMP E .)
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 48

    (23) B -> LPAREN B RPAREN .

    THEN            reduce using rule 23 (B -> LPAREN B RPAREN .)
    EQOP            reduce using rule 23 (B -> LPAREN B RPAREN .)
    LOP             reduce using rule 23 (B -> LPAREN B RPAREN .)
    DO              reduce using rule 23 (B -> LPAREN B RPAREN .)
    RPAREN          reduce using rule 23 (B -> LPAREN B RPAREN .)


state 49

    (10) E -> WHILE B DO LBRACE . E RBRACE
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 54

state 50

    (13) D -> ID LPAREN V RPAREN . LBRACE E RBRACE

    LBRACE          shift and go to state 55


state 51

    (16) V -> V COMMA . V
    (15) V -> . ID
    (16) V -> . V COMMA V

    ID              shift and go to state 39

    V                              shift and go to state 56

state 52

    (12) A -> A COMMA E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    RPAREN          reduce using rule 12 (A -> A COMMA E .)
    COMMA           reduce using rule 12 (A -> A COMMA E .)
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 53

    (9) E -> IF B THEN E ELSE . E
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 57

state 54

    (10) E -> WHILE B DO LBRACE E . RBRACE
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    RBRACE          shift and go to state 58
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 55

    (13) D -> ID LPAREN V RPAREN LBRACE . E RBRACE
    (1) E -> . LET D IN E
    (2) E -> . ID
    (3) E -> . ID LPAREN A RPAREN
    (4) E -> . E AOP E
    (5) E -> . LPAREN E RPAREN
    (6) E -> . CONST
    (7) E -> . ID ASSIGN E
    (8) E -> . E SEMICOLON E
    (9) E -> . IF B THEN E ELSE E
    (10) E -> . WHILE B DO LBRACE E RBRACE

    LET             shift and go to state 2
    ID              shift and go to state 3
    LPAREN          shift and go to state 4
    CONST           shift and go to state 5
    IF              shift and go to state 6
    WHILE           shift and go to state 7

    E                              shift and go to state 59

state 56

    (16) V -> V COMMA V .
    (16) V -> V . COMMA V

    RPAREN          reduce using rule 16 (V -> V COMMA V .)
    COMMA           reduce using rule 16 (V -> V COMMA V .)

  ! COMMA           [ shift and go to state 51 ]


state 57

    (9) E -> IF B THEN E ELSE E .
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    SEMICOLON       reduce using rule 9 (E -> IF B THEN E ELSE E .)
    $end            reduce using rule 9 (E -> IF B THEN E ELSE E .)
    RPAREN          reduce using rule 9 (E -> IF B THEN E ELSE E .)
    EQOP            reduce using rule 9 (E -> IF B THEN E ELSE E .)
    COMP            reduce using rule 9 (E -> IF B THEN E ELSE E .)
    COMMA           reduce using rule 9 (E -> IF B THEN E ELSE E .)
    ELSE            reduce using rule 9 (E -> IF B THEN E ELSE E .)
    THEN            reduce using rule 9 (E -> IF B THEN E ELSE E .)
    LOP             reduce using rule 9 (E -> IF B THEN E ELSE E .)
    DO              reduce using rule 9 (E -> IF B THEN E ELSE E .)
    RBRACE          reduce using rule 9 (E -> IF B THEN E ELSE E .)
    AOP             shift and go to state 8

  ! AOP             [ reduce using rule 9 (E -> IF B THEN E ELSE E .) ]
  ! SEMICOLON       [ shift and go to state 9 ]


state 58

    (10) E -> WHILE B DO LBRACE E RBRACE .

    AOP             reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    SEMICOLON       reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    $end            reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    RPAREN          reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    EQOP            reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    COMP            reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    COMMA           reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    ELSE            reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    THEN            reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    LOP             reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    DO              reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)
    RBRACE          reduce using rule 10 (E -> WHILE B DO LBRACE E RBRACE .)


state 59

    (13) D -> ID LPAREN V RPAREN LBRACE E . RBRACE
    (4) E -> E . AOP E
    (8) E -> E . SEMICOLON E

    RBRACE          shift and go to state 60
    AOP             shift and go to state 8
    SEMICOLON       shift and go to state 9


state 60

    (13) D -> ID LPAREN V RPAREN LBRACE E RBRACE .

    IN              reduce using rule 13 (D -> ID LPAREN V RPAREN LBRACE E RBRACE .)
    ID              reduce using rule 13 (D -> ID LPAREN V RPAREN LBRACE E RBRACE .)

WARNING: 
WARNING: Conflicts:
WARNING: 
WARNING: shift/reduce conflict for ID in state 23 resolved as shift
WARNING: shift/reduce conflict for EQOP in state 45 resolved as shift
WARNING: shift/reduce conflict for LOP in state 45 resolved as shift
