Unused terminals: Grammar Rule 1 Program -> MainClass ClassDeclList Rule 2 Program -> MainClass Rule 3 MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE Rule 4 ClassDecl -> CLASS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE Rule 5 ClassDecl -> CLASS IDENTIFIER EXTENDS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE Rule 6 ClassDeclList -> ClassDecl Rule 7 ClassDeclList -> ClassDeclList ClassDecl Rule 8 VarDecl -> Type IDENTIFIER SEMICOL Rule 9 VarDeclList -> VarDeclList VarDecl Rule 10 VarDeclList -> Rule 11 MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE Rule 12 MethodDeclList -> MethodDeclList MethodDecl Rule 13 MethodDeclList -> Rule 14 FormalList -> Type IDENTIFIER FormalRestList Rule 15 FormalList -> Rule 16 FormalRest -> COMMA Type IDENTIFIER Rule 17 FormalRestList -> FormalRestList FormalRest Rule 18 FormalRestList -> Rule 19 Type -> INT LBRACK RBRACK Rule 20 Type -> BOOL Rule 21 Type -> INT Rule 22 Type -> IDENTIFIER Rule 23 Statement -> LBRACK StatementList RBRACK Rule 24 Statement -> IF LPAR Exp RPAR Statement ELSE Statement Rule 25 Statement -> WHILE LPAR Exp RPAR Statement Rule 26 Statement -> PRINT LPAR Exp RPAR SEMICOL Rule 27 Statement -> IDENTIFIER EQUALS Exp SEMICOL Rule 28 Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL Rule 29 StatementList -> Statement StatementList Rule 30 StatementList -> Rule 31 Exp -> Exp OPCLT Exp Rule 32 Exp -> Exp OPCAND Exp Rule 33 Exp -> Exp OPCPLUS Exp Rule 34 Exp -> Exp OPCMINUS Exp Rule 35 Exp -> Exp OPCTIMES Exp Rule 36 Exp -> Exp LBRACK Exp RBRACK Rule 37 Exp -> Exp DOT LEN Rule 38 Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR Rule 39 Exp -> NUMBER Rule 40 Exp -> KTRUE Rule 41 Exp -> KFALSE Rule 42 Exp -> IDENTIFIER Rule 43 Exp -> THIS Rule 44 Exp -> NEW INT RBRACK Exp LBRACK Rule 45 Exp -> NEW IDENTIFIER LPAR RPAR Rule 46 Exp -> EXCL Exp Rule 47 Exp -> LPAR Exp RPAR Rule 48 ExpList -> Exp ExprRestList Rule 49 ExpList -> Rule 50 ExprRest -> COMMA Exp Rule 51 ExprRestList -> ExprRestList ExprRest Rule 52 ExprRestList -> Terminals, with rules where they appear BOOL : 20 CLASS : 3 4 5 COMMA : 16 50 DOT : 37 38 ELSE : 24 EQUALS : 27 28 EXCL : 46 EXTENDS : 5 IDENTIFIER : 3 3 4 5 5 8 11 14 16 22 27 28 38 42 45 IF : 24 INT : 19 21 44 KFALSE : 41 KSTRING : 3 KTRUE : 40 LBRACE : 3 3 4 5 11 LBRACK : 3 19 23 28 36 44 LEN : 37 LPAR : 3 11 24 25 26 38 45 47 MAIN : 3 NEW : 44 45 NUMBER : 39 OPCAND : 32 OPCLT : 31 OPCMINUS : 34 OPCPLUS : 33 OPCTIMES : 35 PRINT : 26 PUBLIC : 3 11 RBRACE : 3 3 4 5 11 RBRACK : 3 19 23 28 36 44 RETURN : 11 RPAR : 3 11 24 25 26 38 45 47 SEMICOL : 8 11 26 27 28 STATIC : 3 THIS : 43 VOID : 3 WHILE : 25 error : Nonterminals, with rules where they appear ClassDecl : 6 7 ClassDeclList : 1 7 Exp : 11 24 25 26 27 28 28 31 31 32 32 33 33 34 34 35 35 36 36 37 38 44 46 47 48 50 ExpList : 38 ExprRest : 51 ExprRestList : 48 51 FormalList : 11 FormalRest : 17 FormalRestList : 14 17 MainClass : 1 2 MethodDecl : 12 MethodDeclList : 4 5 12 Program : 0 Statement : 3 24 24 25 29 StatementList : 11 23 29 Type : 8 11 14 16 VarDecl : 9 VarDeclList : 4 5 9 11 Parsing method: LALR state 0 (0) S' -> . Program (1) Program -> . MainClass ClassDeclList (2) Program -> . MainClass (3) MainClass -> . CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE CLASS shift and go to state 3 Program shift and go to state 1 MainClass shift and go to state 2 state 1 (0) S' -> Program . state 2 (1) Program -> MainClass . ClassDeclList (2) Program -> MainClass . (6) ClassDeclList -> . ClassDecl (7) ClassDeclList -> . ClassDeclList ClassDecl (4) ClassDecl -> . CLASS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE (5) ClassDecl -> . CLASS IDENTIFIER EXTENDS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE $end reduce using rule 2 (Program -> MainClass .) CLASS shift and go to state 6 ClassDeclList shift and go to state 5 ClassDecl shift and go to state 4 state 3 (3) MainClass -> CLASS . IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE IDENTIFIER shift and go to state 7 state 4 (6) ClassDeclList -> ClassDecl . CLASS reduce using rule 6 (ClassDeclList -> ClassDecl .) $end reduce using rule 6 (ClassDeclList -> ClassDecl .) state 5 (1) Program -> MainClass ClassDeclList . (7) ClassDeclList -> ClassDeclList . ClassDecl (4) ClassDecl -> . CLASS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE (5) ClassDecl -> . CLASS IDENTIFIER EXTENDS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE $end reduce using rule 1 (Program -> MainClass ClassDeclList .) CLASS shift and go to state 6 ClassDecl shift and go to state 8 state 6 (4) ClassDecl -> CLASS . IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE (5) ClassDecl -> CLASS . IDENTIFIER EXTENDS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE IDENTIFIER shift and go to state 9 state 7 (3) MainClass -> CLASS IDENTIFIER . LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE LBRACE shift and go to state 10 state 8 (7) ClassDeclList -> ClassDeclList ClassDecl . CLASS reduce using rule 7 (ClassDeclList -> ClassDeclList ClassDecl .) $end reduce using rule 7 (ClassDeclList -> ClassDeclList ClassDecl .) state 9 (4) ClassDecl -> CLASS IDENTIFIER . LBRACE VarDeclList MethodDeclList RBRACE (5) ClassDecl -> CLASS IDENTIFIER . EXTENDS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE LBRACE shift and go to state 11 EXTENDS shift and go to state 12 state 10 (3) MainClass -> CLASS IDENTIFIER LBRACE . PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE PUBLIC shift and go to state 13 state 11 (4) ClassDecl -> CLASS IDENTIFIER LBRACE . VarDeclList MethodDeclList RBRACE (9) VarDeclList -> . VarDeclList VarDecl (10) VarDeclList -> . INT reduce using rule 10 (VarDeclList -> .) BOOL reduce using rule 10 (VarDeclList -> .) IDENTIFIER reduce using rule 10 (VarDeclList -> .) RBRACE reduce using rule 10 (VarDeclList -> .) PUBLIC reduce using rule 10 (VarDeclList -> .) VarDeclList shift and go to state 14 state 12 (5) ClassDecl -> CLASS IDENTIFIER EXTENDS . IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE IDENTIFIER shift and go to state 15 state 13 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC . STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE STATIC shift and go to state 16 state 14 (4) ClassDecl -> CLASS IDENTIFIER LBRACE VarDeclList . MethodDeclList RBRACE (9) VarDeclList -> VarDeclList . VarDecl (12) MethodDeclList -> . MethodDeclList MethodDecl (13) MethodDeclList -> . (8) VarDecl -> . Type IDENTIFIER SEMICOL (19) Type -> . INT LBRACK RBRACK (20) Type -> . BOOL (21) Type -> . INT (22) Type -> . IDENTIFIER RBRACE reduce using rule 13 (MethodDeclList -> .) PUBLIC reduce using rule 13 (MethodDeclList -> .) INT shift and go to state 17 BOOL shift and go to state 20 IDENTIFIER shift and go to state 21 VarDecl shift and go to state 18 MethodDeclList shift and go to state 19 Type shift and go to state 22 state 15 (5) ClassDecl -> CLASS IDENTIFIER EXTENDS IDENTIFIER . LBRACE VarDeclList MethodDeclList RBRACE LBRACE shift and go to state 23 state 16 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC . VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE VOID shift and go to state 24 state 17 (19) Type -> INT . LBRACK RBRACK (21) Type -> INT . LBRACK shift and go to state 25 IDENTIFIER reduce using rule 21 (Type -> INT .) state 18 (9) VarDeclList -> VarDeclList VarDecl . INT reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) BOOL reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) IDENTIFIER reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) RBRACE reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) PUBLIC reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) LBRACK reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) IF reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) WHILE reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) PRINT reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) RETURN reduce using rule 9 (VarDeclList -> VarDeclList VarDecl .) state 19 (4) ClassDecl -> CLASS IDENTIFIER LBRACE VarDeclList MethodDeclList . RBRACE (12) MethodDeclList -> MethodDeclList . MethodDecl (11) MethodDecl -> . PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE RBRACE shift and go to state 27 PUBLIC shift and go to state 28 MethodDecl shift and go to state 26 state 20 (20) Type -> BOOL . IDENTIFIER reduce using rule 20 (Type -> BOOL .) state 21 (22) Type -> IDENTIFIER . IDENTIFIER reduce using rule 22 (Type -> IDENTIFIER .) state 22 (8) VarDecl -> Type . IDENTIFIER SEMICOL IDENTIFIER shift and go to state 29 state 23 (5) ClassDecl -> CLASS IDENTIFIER EXTENDS IDENTIFIER LBRACE . VarDeclList MethodDeclList RBRACE (9) VarDeclList -> . VarDeclList VarDecl (10) VarDeclList -> . INT reduce using rule 10 (VarDeclList -> .) BOOL reduce using rule 10 (VarDeclList -> .) IDENTIFIER reduce using rule 10 (VarDeclList -> .) RBRACE reduce using rule 10 (VarDeclList -> .) PUBLIC reduce using rule 10 (VarDeclList -> .) VarDeclList shift and go to state 30 state 24 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID . MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE MAIN shift and go to state 31 state 25 (19) Type -> INT LBRACK . RBRACK RBRACK shift and go to state 32 state 26 (12) MethodDeclList -> MethodDeclList MethodDecl . RBRACE reduce using rule 12 (MethodDeclList -> MethodDeclList MethodDecl .) PUBLIC reduce using rule 12 (MethodDeclList -> MethodDeclList MethodDecl .) state 27 (4) ClassDecl -> CLASS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE . CLASS reduce using rule 4 (ClassDecl -> CLASS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE .) $end reduce using rule 4 (ClassDecl -> CLASS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE .) state 28 (11) MethodDecl -> PUBLIC . Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE (19) Type -> . INT LBRACK RBRACK (20) Type -> . BOOL (21) Type -> . INT (22) Type -> . IDENTIFIER INT shift and go to state 17 BOOL shift and go to state 20 IDENTIFIER shift and go to state 21 Type shift and go to state 33 state 29 (8) VarDecl -> Type IDENTIFIER . SEMICOL SEMICOL shift and go to state 34 state 30 (5) ClassDecl -> CLASS IDENTIFIER EXTENDS IDENTIFIER LBRACE VarDeclList . MethodDeclList RBRACE (9) VarDeclList -> VarDeclList . VarDecl (12) MethodDeclList -> . MethodDeclList MethodDecl (13) MethodDeclList -> . (8) VarDecl -> . Type IDENTIFIER SEMICOL (19) Type -> . INT LBRACK RBRACK (20) Type -> . BOOL (21) Type -> . INT (22) Type -> . IDENTIFIER RBRACE reduce using rule 13 (MethodDeclList -> .) PUBLIC reduce using rule 13 (MethodDeclList -> .) INT shift and go to state 17 BOOL shift and go to state 20 IDENTIFIER shift and go to state 21 VarDecl shift and go to state 18 MethodDeclList shift and go to state 35 Type shift and go to state 22 state 31 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN . LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE LPAR shift and go to state 36 state 32 (19) Type -> INT LBRACK RBRACK . IDENTIFIER reduce using rule 19 (Type -> INT LBRACK RBRACK .) state 33 (11) MethodDecl -> PUBLIC Type . IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE IDENTIFIER shift and go to state 37 state 34 (8) VarDecl -> Type IDENTIFIER SEMICOL . INT reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) BOOL reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) IDENTIFIER reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) RBRACE reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) PUBLIC reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) LBRACK reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) IF reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) WHILE reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) PRINT reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) RETURN reduce using rule 8 (VarDecl -> Type IDENTIFIER SEMICOL .) state 35 (5) ClassDecl -> CLASS IDENTIFIER EXTENDS IDENTIFIER LBRACE VarDeclList MethodDeclList . RBRACE (12) MethodDeclList -> MethodDeclList . MethodDecl (11) MethodDecl -> . PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE RBRACE shift and go to state 38 PUBLIC shift and go to state 28 MethodDecl shift and go to state 26 state 36 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR . KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE KSTRING shift and go to state 39 state 37 (11) MethodDecl -> PUBLIC Type IDENTIFIER . LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE LPAR shift and go to state 40 state 38 (5) ClassDecl -> CLASS IDENTIFIER EXTENDS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE . CLASS reduce using rule 5 (ClassDecl -> CLASS IDENTIFIER EXTENDS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE .) $end reduce using rule 5 (ClassDecl -> CLASS IDENTIFIER EXTENDS IDENTIFIER LBRACE VarDeclList MethodDeclList RBRACE .) state 39 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING . LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE LBRACK shift and go to state 41 state 40 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR . FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE (14) FormalList -> . Type IDENTIFIER FormalRestList (15) FormalList -> . (19) Type -> . INT LBRACK RBRACK (20) Type -> . BOOL (21) Type -> . INT (22) Type -> . IDENTIFIER RPAR reduce using rule 15 (FormalList -> .) INT shift and go to state 17 BOOL shift and go to state 20 IDENTIFIER shift and go to state 21 FormalList shift and go to state 42 Type shift and go to state 43 state 41 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK . RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE RBRACK shift and go to state 44 state 42 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList . RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE RPAR shift and go to state 45 state 43 (14) FormalList -> Type . IDENTIFIER FormalRestList IDENTIFIER shift and go to state 46 state 44 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK . IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE IDENTIFIER shift and go to state 47 state 45 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR . LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE LBRACE shift and go to state 48 state 46 (14) FormalList -> Type IDENTIFIER . FormalRestList (17) FormalRestList -> . FormalRestList FormalRest (18) FormalRestList -> . COMMA reduce using rule 18 (FormalRestList -> .) RPAR reduce using rule 18 (FormalRestList -> .) FormalRestList shift and go to state 49 state 47 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER . RPAR LBRACE Statement RBRACE RBRACE RPAR shift and go to state 50 state 48 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE . VarDeclList StatementList RETURN Exp SEMICOL RBRACE (9) VarDeclList -> . VarDeclList VarDecl (10) VarDeclList -> . LBRACK reduce using rule 10 (VarDeclList -> .) IF reduce using rule 10 (VarDeclList -> .) WHILE reduce using rule 10 (VarDeclList -> .) PRINT reduce using rule 10 (VarDeclList -> .) IDENTIFIER reduce using rule 10 (VarDeclList -> .) INT reduce using rule 10 (VarDeclList -> .) BOOL reduce using rule 10 (VarDeclList -> .) RETURN reduce using rule 10 (VarDeclList -> .) VarDeclList shift and go to state 51 state 49 (14) FormalList -> Type IDENTIFIER FormalRestList . (17) FormalRestList -> FormalRestList . FormalRest (16) FormalRest -> . COMMA Type IDENTIFIER RPAR reduce using rule 14 (FormalList -> Type IDENTIFIER FormalRestList .) COMMA shift and go to state 52 FormalRest shift and go to state 53 state 50 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR . LBRACE Statement RBRACE RBRACE LBRACE shift and go to state 54 state 51 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList . StatementList RETURN Exp SEMICOL RBRACE (9) VarDeclList -> VarDeclList . VarDecl (29) StatementList -> . Statement StatementList (30) StatementList -> . (8) VarDecl -> . Type IDENTIFIER SEMICOL (23) Statement -> . LBRACK StatementList RBRACK (24) Statement -> . IF LPAR Exp RPAR Statement ELSE Statement (25) Statement -> . WHILE LPAR Exp RPAR Statement (26) Statement -> . PRINT LPAR Exp RPAR SEMICOL (27) Statement -> . IDENTIFIER EQUALS Exp SEMICOL (28) Statement -> . IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL (19) Type -> . INT LBRACK RBRACK (20) Type -> . BOOL (21) Type -> . INT (22) Type -> . IDENTIFIER RETURN reduce using rule 30 (StatementList -> .) LBRACK shift and go to state 61 IF shift and go to state 60 WHILE shift and go to state 55 PRINT shift and go to state 57 IDENTIFIER shift and go to state 58 INT shift and go to state 17 BOOL shift and go to state 20 Statement shift and go to state 56 VarDecl shift and go to state 18 StatementList shift and go to state 59 Type shift and go to state 22 state 52 (16) FormalRest -> COMMA . Type IDENTIFIER (19) Type -> . INT LBRACK RBRACK (20) Type -> . BOOL (21) Type -> . INT (22) Type -> . IDENTIFIER INT shift and go to state 17 BOOL shift and go to state 20 IDENTIFIER shift and go to state 21 Type shift and go to state 62 state 53 (17) FormalRestList -> FormalRestList FormalRest . COMMA reduce using rule 17 (FormalRestList -> FormalRestList FormalRest .) RPAR reduce using rule 17 (FormalRestList -> FormalRestList FormalRest .) state 54 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE . Statement RBRACE RBRACE (23) Statement -> . LBRACK StatementList RBRACK (24) Statement -> . IF LPAR Exp RPAR Statement ELSE Statement (25) Statement -> . WHILE LPAR Exp RPAR Statement (26) Statement -> . PRINT LPAR Exp RPAR SEMICOL (27) Statement -> . IDENTIFIER EQUALS Exp SEMICOL (28) Statement -> . IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL LBRACK shift and go to state 61 IF shift and go to state 60 WHILE shift and go to state 55 PRINT shift and go to state 57 IDENTIFIER shift and go to state 64 Statement shift and go to state 63 state 55 (25) Statement -> WHILE . LPAR Exp RPAR Statement LPAR shift and go to state 65 state 56 (29) StatementList -> Statement . StatementList (29) StatementList -> . Statement StatementList (30) StatementList -> . (23) Statement -> . LBRACK StatementList RBRACK (24) Statement -> . IF LPAR Exp RPAR Statement ELSE Statement (25) Statement -> . WHILE LPAR Exp RPAR Statement (26) Statement -> . PRINT LPAR Exp RPAR SEMICOL (27) Statement -> . IDENTIFIER EQUALS Exp SEMICOL (28) Statement -> . IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL RETURN reduce using rule 30 (StatementList -> .) RBRACK reduce using rule 30 (StatementList -> .) LBRACK shift and go to state 61 IF shift and go to state 60 WHILE shift and go to state 55 PRINT shift and go to state 57 IDENTIFIER shift and go to state 64 StatementList shift and go to state 66 Statement shift and go to state 56 state 57 (26) Statement -> PRINT . LPAR Exp RPAR SEMICOL LPAR shift and go to state 67 state 58 (27) Statement -> IDENTIFIER . EQUALS Exp SEMICOL (28) Statement -> IDENTIFIER . LBRACK Exp RBRACK EQUALS Exp SEMICOL (22) Type -> IDENTIFIER . EQUALS shift and go to state 69 LBRACK shift and go to state 68 IDENTIFIER reduce using rule 22 (Type -> IDENTIFIER .) state 59 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList . RETURN Exp SEMICOL RBRACE RETURN shift and go to state 70 state 60 (24) Statement -> IF . LPAR Exp RPAR Statement ELSE Statement LPAR shift and go to state 71 state 61 (23) Statement -> LBRACK . StatementList RBRACK (29) StatementList -> . Statement StatementList (30) StatementList -> . (23) Statement -> . LBRACK StatementList RBRACK (24) Statement -> . IF LPAR Exp RPAR Statement ELSE Statement (25) Statement -> . WHILE LPAR Exp RPAR Statement (26) Statement -> . PRINT LPAR Exp RPAR SEMICOL (27) Statement -> . IDENTIFIER EQUALS Exp SEMICOL (28) Statement -> . IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL RBRACK reduce using rule 30 (StatementList -> .) LBRACK shift and go to state 61 IF shift and go to state 60 WHILE shift and go to state 55 PRINT shift and go to state 57 IDENTIFIER shift and go to state 64 Statement shift and go to state 56 StatementList shift and go to state 72 state 62 (16) FormalRest -> COMMA Type . IDENTIFIER IDENTIFIER shift and go to state 73 state 63 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement . RBRACE RBRACE RBRACE shift and go to state 74 state 64 (27) Statement -> IDENTIFIER . EQUALS Exp SEMICOL (28) Statement -> IDENTIFIER . LBRACK Exp RBRACK EQUALS Exp SEMICOL EQUALS shift and go to state 69 LBRACK shift and go to state 68 state 65 (25) Statement -> WHILE LPAR . Exp RPAR Statement (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 81 state 66 (29) StatementList -> Statement StatementList . RETURN reduce using rule 29 (StatementList -> Statement StatementList .) RBRACK reduce using rule 29 (StatementList -> Statement StatementList .) state 67 (26) Statement -> PRINT LPAR . Exp RPAR SEMICOL (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 84 state 68 (28) Statement -> IDENTIFIER LBRACK . Exp RBRACK EQUALS Exp SEMICOL (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 85 state 69 (27) Statement -> IDENTIFIER EQUALS . Exp SEMICOL (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 86 state 70 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN . Exp SEMICOL RBRACE (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 87 state 71 (24) Statement -> IF LPAR . Exp RPAR Statement ELSE Statement (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 88 state 72 (23) Statement -> LBRACK StatementList . RBRACK RBRACK shift and go to state 89 state 73 (16) FormalRest -> COMMA Type IDENTIFIER . COMMA reduce using rule 16 (FormalRest -> COMMA Type IDENTIFIER .) RPAR reduce using rule 16 (FormalRest -> COMMA Type IDENTIFIER .) state 74 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE . RBRACE RBRACE shift and go to state 90 state 75 (47) Exp -> LPAR . Exp RPAR (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 91 state 76 (39) Exp -> NUMBER . OPCLT reduce using rule 39 (Exp -> NUMBER .) OPCAND reduce using rule 39 (Exp -> NUMBER .) OPCPLUS reduce using rule 39 (Exp -> NUMBER .) OPCMINUS reduce using rule 39 (Exp -> NUMBER .) OPCTIMES reduce using rule 39 (Exp -> NUMBER .) LBRACK reduce using rule 39 (Exp -> NUMBER .) DOT reduce using rule 39 (Exp -> NUMBER .) RPAR reduce using rule 39 (Exp -> NUMBER .) RBRACK reduce using rule 39 (Exp -> NUMBER .) SEMICOL reduce using rule 39 (Exp -> NUMBER .) COMMA reduce using rule 39 (Exp -> NUMBER .) state 77 (40) Exp -> KTRUE . OPCLT reduce using rule 40 (Exp -> KTRUE .) OPCAND reduce using rule 40 (Exp -> KTRUE .) OPCPLUS reduce using rule 40 (Exp -> KTRUE .) OPCMINUS reduce using rule 40 (Exp -> KTRUE .) OPCTIMES reduce using rule 40 (Exp -> KTRUE .) LBRACK reduce using rule 40 (Exp -> KTRUE .) DOT reduce using rule 40 (Exp -> KTRUE .) RPAR reduce using rule 40 (Exp -> KTRUE .) RBRACK reduce using rule 40 (Exp -> KTRUE .) SEMICOL reduce using rule 40 (Exp -> KTRUE .) COMMA reduce using rule 40 (Exp -> KTRUE .) state 78 (44) Exp -> NEW . INT RBRACK Exp LBRACK (45) Exp -> NEW . IDENTIFIER LPAR RPAR INT shift and go to state 92 IDENTIFIER shift and go to state 93 state 79 (46) Exp -> EXCL . Exp (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 94 state 80 (42) Exp -> IDENTIFIER . OPCLT reduce using rule 42 (Exp -> IDENTIFIER .) OPCAND reduce using rule 42 (Exp -> IDENTIFIER .) OPCPLUS reduce using rule 42 (Exp -> IDENTIFIER .) OPCMINUS reduce using rule 42 (Exp -> IDENTIFIER .) OPCTIMES reduce using rule 42 (Exp -> IDENTIFIER .) LBRACK reduce using rule 42 (Exp -> IDENTIFIER .) DOT reduce using rule 42 (Exp -> IDENTIFIER .) RPAR reduce using rule 42 (Exp -> IDENTIFIER .) RBRACK reduce using rule 42 (Exp -> IDENTIFIER .) SEMICOL reduce using rule 42 (Exp -> IDENTIFIER .) COMMA reduce using rule 42 (Exp -> IDENTIFIER .) state 81 (25) Statement -> WHILE LPAR Exp . RPAR Statement (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR RPAR shift and go to state 100 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 state 82 (43) Exp -> THIS . OPCLT reduce using rule 43 (Exp -> THIS .) OPCAND reduce using rule 43 (Exp -> THIS .) OPCPLUS reduce using rule 43 (Exp -> THIS .) OPCMINUS reduce using rule 43 (Exp -> THIS .) OPCTIMES reduce using rule 43 (Exp -> THIS .) LBRACK reduce using rule 43 (Exp -> THIS .) DOT reduce using rule 43 (Exp -> THIS .) RPAR reduce using rule 43 (Exp -> THIS .) RBRACK reduce using rule 43 (Exp -> THIS .) SEMICOL reduce using rule 43 (Exp -> THIS .) COMMA reduce using rule 43 (Exp -> THIS .) state 83 (41) Exp -> KFALSE . OPCLT reduce using rule 41 (Exp -> KFALSE .) OPCAND reduce using rule 41 (Exp -> KFALSE .) OPCPLUS reduce using rule 41 (Exp -> KFALSE .) OPCMINUS reduce using rule 41 (Exp -> KFALSE .) OPCTIMES reduce using rule 41 (Exp -> KFALSE .) LBRACK reduce using rule 41 (Exp -> KFALSE .) DOT reduce using rule 41 (Exp -> KFALSE .) RPAR reduce using rule 41 (Exp -> KFALSE .) RBRACK reduce using rule 41 (Exp -> KFALSE .) SEMICOL reduce using rule 41 (Exp -> KFALSE .) COMMA reduce using rule 41 (Exp -> KFALSE .) state 84 (26) Statement -> PRINT LPAR Exp . RPAR SEMICOL (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR RPAR shift and go to state 103 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 state 85 (28) Statement -> IDENTIFIER LBRACK Exp . RBRACK EQUALS Exp SEMICOL (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR RBRACK shift and go to state 104 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 state 86 (27) Statement -> IDENTIFIER EQUALS Exp . SEMICOL (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR SEMICOL shift and go to state 105 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 state 87 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp . SEMICOL RBRACE (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR SEMICOL shift and go to state 106 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 state 88 (24) Statement -> IF LPAR Exp . RPAR Statement ELSE Statement (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR RPAR shift and go to state 107 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 state 89 (23) Statement -> LBRACK StatementList RBRACK . RBRACE reduce using rule 23 (Statement -> LBRACK StatementList RBRACK .) LBRACK reduce using rule 23 (Statement -> LBRACK StatementList RBRACK .) IF reduce using rule 23 (Statement -> LBRACK StatementList RBRACK .) WHILE reduce using rule 23 (Statement -> LBRACK StatementList RBRACK .) PRINT reduce using rule 23 (Statement -> LBRACK StatementList RBRACK .) IDENTIFIER reduce using rule 23 (Statement -> LBRACK StatementList RBRACK .) RETURN reduce using rule 23 (Statement -> LBRACK StatementList RBRACK .) RBRACK reduce using rule 23 (Statement -> LBRACK StatementList RBRACK .) ELSE reduce using rule 23 (Statement -> LBRACK StatementList RBRACK .) state 90 (3) MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE . CLASS reduce using rule 3 (MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE .) $end reduce using rule 3 (MainClass -> CLASS IDENTIFIER LBRACE PUBLIC STATIC VOID MAIN LPAR KSTRING LBRACK RBRACK IDENTIFIER RPAR LBRACE Statement RBRACE RBRACE .) state 91 (47) Exp -> LPAR Exp . RPAR (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR RPAR shift and go to state 108 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 state 92 (44) Exp -> NEW INT . RBRACK Exp LBRACK RBRACK shift and go to state 109 state 93 (45) Exp -> NEW IDENTIFIER . LPAR RPAR LPAR shift and go to state 110 state 94 (46) Exp -> EXCL Exp . (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR OPCLT reduce using rule 46 (Exp -> EXCL Exp .) OPCAND reduce using rule 46 (Exp -> EXCL Exp .) OPCPLUS reduce using rule 46 (Exp -> EXCL Exp .) OPCMINUS reduce using rule 46 (Exp -> EXCL Exp .) OPCTIMES reduce using rule 46 (Exp -> EXCL Exp .) LBRACK reduce using rule 46 (Exp -> EXCL Exp .) RPAR reduce using rule 46 (Exp -> EXCL Exp .) RBRACK reduce using rule 46 (Exp -> EXCL Exp .) SEMICOL reduce using rule 46 (Exp -> EXCL Exp .) COMMA reduce using rule 46 (Exp -> EXCL Exp .) DOT shift and go to state 102 ! DOT [ reduce using rule 46 (Exp -> EXCL Exp .) ] ! OPCLT [ shift and go to state 97 ] ! OPCAND [ shift and go to state 98 ] ! OPCPLUS [ shift and go to state 101 ] ! OPCMINUS [ shift and go to state 95 ] ! OPCTIMES [ shift and go to state 96 ] ! LBRACK [ shift and go to state 99 ] state 95 (34) Exp -> Exp OPCMINUS . Exp (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 111 state 96 (35) Exp -> Exp OPCTIMES . Exp (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 112 state 97 (31) Exp -> Exp OPCLT . Exp (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 113 state 98 (32) Exp -> Exp OPCAND . Exp (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 114 state 99 (36) Exp -> Exp LBRACK . Exp RBRACK (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 115 state 100 (25) Statement -> WHILE LPAR Exp RPAR . Statement (23) Statement -> . LBRACK StatementList RBRACK (24) Statement -> . IF LPAR Exp RPAR Statement ELSE Statement (25) Statement -> . WHILE LPAR Exp RPAR Statement (26) Statement -> . PRINT LPAR Exp RPAR SEMICOL (27) Statement -> . IDENTIFIER EQUALS Exp SEMICOL (28) Statement -> . IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL LBRACK shift and go to state 61 IF shift and go to state 60 WHILE shift and go to state 55 PRINT shift and go to state 57 IDENTIFIER shift and go to state 64 Statement shift and go to state 116 state 101 (33) Exp -> Exp OPCPLUS . Exp (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 117 state 102 (37) Exp -> Exp DOT . LEN (38) Exp -> Exp DOT . IDENTIFIER LPAR ExpList RPAR LEN shift and go to state 118 IDENTIFIER shift and go to state 119 state 103 (26) Statement -> PRINT LPAR Exp RPAR . SEMICOL SEMICOL shift and go to state 120 state 104 (28) Statement -> IDENTIFIER LBRACK Exp RBRACK . EQUALS Exp SEMICOL EQUALS shift and go to state 121 state 105 (27) Statement -> IDENTIFIER EQUALS Exp SEMICOL . RBRACE reduce using rule 27 (Statement -> IDENTIFIER EQUALS Exp SEMICOL .) LBRACK reduce using rule 27 (Statement -> IDENTIFIER EQUALS Exp SEMICOL .) IF reduce using rule 27 (Statement -> IDENTIFIER EQUALS Exp SEMICOL .) WHILE reduce using rule 27 (Statement -> IDENTIFIER EQUALS Exp SEMICOL .) PRINT reduce using rule 27 (Statement -> IDENTIFIER EQUALS Exp SEMICOL .) IDENTIFIER reduce using rule 27 (Statement -> IDENTIFIER EQUALS Exp SEMICOL .) RETURN reduce using rule 27 (Statement -> IDENTIFIER EQUALS Exp SEMICOL .) RBRACK reduce using rule 27 (Statement -> IDENTIFIER EQUALS Exp SEMICOL .) ELSE reduce using rule 27 (Statement -> IDENTIFIER EQUALS Exp SEMICOL .) state 106 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL . RBRACE RBRACE shift and go to state 122 state 107 (24) Statement -> IF LPAR Exp RPAR . Statement ELSE Statement (23) Statement -> . LBRACK StatementList RBRACK (24) Statement -> . IF LPAR Exp RPAR Statement ELSE Statement (25) Statement -> . WHILE LPAR Exp RPAR Statement (26) Statement -> . PRINT LPAR Exp RPAR SEMICOL (27) Statement -> . IDENTIFIER EQUALS Exp SEMICOL (28) Statement -> . IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL LBRACK shift and go to state 61 IF shift and go to state 60 WHILE shift and go to state 55 PRINT shift and go to state 57 IDENTIFIER shift and go to state 64 Statement shift and go to state 123 state 108 (47) Exp -> LPAR Exp RPAR . OPCLT reduce using rule 47 (Exp -> LPAR Exp RPAR .) OPCAND reduce using rule 47 (Exp -> LPAR Exp RPAR .) OPCPLUS reduce using rule 47 (Exp -> LPAR Exp RPAR .) OPCMINUS reduce using rule 47 (Exp -> LPAR Exp RPAR .) OPCTIMES reduce using rule 47 (Exp -> LPAR Exp RPAR .) LBRACK reduce using rule 47 (Exp -> LPAR Exp RPAR .) DOT reduce using rule 47 (Exp -> LPAR Exp RPAR .) RPAR reduce using rule 47 (Exp -> LPAR Exp RPAR .) RBRACK reduce using rule 47 (Exp -> LPAR Exp RPAR .) SEMICOL reduce using rule 47 (Exp -> LPAR Exp RPAR .) COMMA reduce using rule 47 (Exp -> LPAR Exp RPAR .) state 109 (44) Exp -> NEW INT RBRACK . Exp LBRACK (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 124 state 110 (45) Exp -> NEW IDENTIFIER LPAR . RPAR RPAR shift and go to state 125 state 111 (34) Exp -> Exp OPCMINUS Exp . (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR OPCLT reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) OPCAND reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) OPCPLUS reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) OPCMINUS reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) LBRACK reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) RPAR reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) RBRACK reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) SEMICOL reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) COMMA reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) OPCTIMES shift and go to state 96 DOT shift and go to state 102 ! OPCTIMES [ reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) ] ! DOT [ reduce using rule 34 (Exp -> Exp OPCMINUS Exp .) ] ! OPCLT [ shift and go to state 97 ] ! OPCAND [ shift and go to state 98 ] ! OPCPLUS [ shift and go to state 101 ] ! OPCMINUS [ shift and go to state 95 ] ! LBRACK [ shift and go to state 99 ] state 112 (35) Exp -> Exp OPCTIMES Exp . (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR OPCLT reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) OPCAND reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) OPCPLUS reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) OPCMINUS reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) OPCTIMES reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) LBRACK reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) RPAR reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) RBRACK reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) SEMICOL reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) COMMA reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) DOT shift and go to state 102 ! DOT [ reduce using rule 35 (Exp -> Exp OPCTIMES Exp .) ] ! OPCLT [ shift and go to state 97 ] ! OPCAND [ shift and go to state 98 ] ! OPCPLUS [ shift and go to state 101 ] ! OPCMINUS [ shift and go to state 95 ] ! OPCTIMES [ shift and go to state 96 ] ! LBRACK [ shift and go to state 99 ] state 113 (31) Exp -> Exp OPCLT Exp . (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR OPCLT reduce using rule 31 (Exp -> Exp OPCLT Exp .) OPCAND reduce using rule 31 (Exp -> Exp OPCLT Exp .) LBRACK reduce using rule 31 (Exp -> Exp OPCLT Exp .) RPAR reduce using rule 31 (Exp -> Exp OPCLT Exp .) RBRACK reduce using rule 31 (Exp -> Exp OPCLT Exp .) SEMICOL reduce using rule 31 (Exp -> Exp OPCLT Exp .) COMMA reduce using rule 31 (Exp -> Exp OPCLT Exp .) OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 DOT shift and go to state 102 ! OPCPLUS [ reduce using rule 31 (Exp -> Exp OPCLT Exp .) ] ! OPCMINUS [ reduce using rule 31 (Exp -> Exp OPCLT Exp .) ] ! OPCTIMES [ reduce using rule 31 (Exp -> Exp OPCLT Exp .) ] ! DOT [ reduce using rule 31 (Exp -> Exp OPCLT Exp .) ] ! OPCLT [ shift and go to state 97 ] ! OPCAND [ shift and go to state 98 ] ! LBRACK [ shift and go to state 99 ] state 114 (32) Exp -> Exp OPCAND Exp . (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR OPCAND reduce using rule 32 (Exp -> Exp OPCAND Exp .) LBRACK reduce using rule 32 (Exp -> Exp OPCAND Exp .) RPAR reduce using rule 32 (Exp -> Exp OPCAND Exp .) RBRACK reduce using rule 32 (Exp -> Exp OPCAND Exp .) SEMICOL reduce using rule 32 (Exp -> Exp OPCAND Exp .) COMMA reduce using rule 32 (Exp -> Exp OPCAND Exp .) OPCLT shift and go to state 97 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 DOT shift and go to state 102 ! OPCLT [ reduce using rule 32 (Exp -> Exp OPCAND Exp .) ] ! OPCPLUS [ reduce using rule 32 (Exp -> Exp OPCAND Exp .) ] ! OPCMINUS [ reduce using rule 32 (Exp -> Exp OPCAND Exp .) ] ! OPCTIMES [ reduce using rule 32 (Exp -> Exp OPCAND Exp .) ] ! DOT [ reduce using rule 32 (Exp -> Exp OPCAND Exp .) ] ! OPCAND [ shift and go to state 98 ] ! LBRACK [ shift and go to state 99 ] state 115 (36) Exp -> Exp LBRACK Exp . RBRACK (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR RBRACK shift and go to state 126 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 state 116 (25) Statement -> WHILE LPAR Exp RPAR Statement . RBRACE reduce using rule 25 (Statement -> WHILE LPAR Exp RPAR Statement .) LBRACK reduce using rule 25 (Statement -> WHILE LPAR Exp RPAR Statement .) IF reduce using rule 25 (Statement -> WHILE LPAR Exp RPAR Statement .) WHILE reduce using rule 25 (Statement -> WHILE LPAR Exp RPAR Statement .) PRINT reduce using rule 25 (Statement -> WHILE LPAR Exp RPAR Statement .) IDENTIFIER reduce using rule 25 (Statement -> WHILE LPAR Exp RPAR Statement .) RETURN reduce using rule 25 (Statement -> WHILE LPAR Exp RPAR Statement .) RBRACK reduce using rule 25 (Statement -> WHILE LPAR Exp RPAR Statement .) ELSE reduce using rule 25 (Statement -> WHILE LPAR Exp RPAR Statement .) state 117 (33) Exp -> Exp OPCPLUS Exp . (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR OPCLT reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) OPCAND reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) OPCPLUS reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) OPCMINUS reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) LBRACK reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) RPAR reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) RBRACK reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) SEMICOL reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) COMMA reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) OPCTIMES shift and go to state 96 DOT shift and go to state 102 ! OPCTIMES [ reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) ] ! DOT [ reduce using rule 33 (Exp -> Exp OPCPLUS Exp .) ] ! OPCLT [ shift and go to state 97 ] ! OPCAND [ shift and go to state 98 ] ! OPCPLUS [ shift and go to state 101 ] ! OPCMINUS [ shift and go to state 95 ] ! LBRACK [ shift and go to state 99 ] state 118 (37) Exp -> Exp DOT LEN . OPCLT reduce using rule 37 (Exp -> Exp DOT LEN .) OPCAND reduce using rule 37 (Exp -> Exp DOT LEN .) OPCPLUS reduce using rule 37 (Exp -> Exp DOT LEN .) OPCMINUS reduce using rule 37 (Exp -> Exp DOT LEN .) OPCTIMES reduce using rule 37 (Exp -> Exp DOT LEN .) LBRACK reduce using rule 37 (Exp -> Exp DOT LEN .) DOT reduce using rule 37 (Exp -> Exp DOT LEN .) RPAR reduce using rule 37 (Exp -> Exp DOT LEN .) RBRACK reduce using rule 37 (Exp -> Exp DOT LEN .) SEMICOL reduce using rule 37 (Exp -> Exp DOT LEN .) COMMA reduce using rule 37 (Exp -> Exp DOT LEN .) state 119 (38) Exp -> Exp DOT IDENTIFIER . LPAR ExpList RPAR LPAR shift and go to state 127 state 120 (26) Statement -> PRINT LPAR Exp RPAR SEMICOL . RBRACE reduce using rule 26 (Statement -> PRINT LPAR Exp RPAR SEMICOL .) LBRACK reduce using rule 26 (Statement -> PRINT LPAR Exp RPAR SEMICOL .) IF reduce using rule 26 (Statement -> PRINT LPAR Exp RPAR SEMICOL .) WHILE reduce using rule 26 (Statement -> PRINT LPAR Exp RPAR SEMICOL .) PRINT reduce using rule 26 (Statement -> PRINT LPAR Exp RPAR SEMICOL .) IDENTIFIER reduce using rule 26 (Statement -> PRINT LPAR Exp RPAR SEMICOL .) RETURN reduce using rule 26 (Statement -> PRINT LPAR Exp RPAR SEMICOL .) RBRACK reduce using rule 26 (Statement -> PRINT LPAR Exp RPAR SEMICOL .) ELSE reduce using rule 26 (Statement -> PRINT LPAR Exp RPAR SEMICOL .) state 121 (28) Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS . Exp SEMICOL (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 128 state 122 (11) MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE . RBRACE reduce using rule 11 (MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE .) PUBLIC reduce using rule 11 (MethodDecl -> PUBLIC Type IDENTIFIER LPAR FormalList RPAR LBRACE VarDeclList StatementList RETURN Exp SEMICOL RBRACE .) state 123 (24) Statement -> IF LPAR Exp RPAR Statement . ELSE Statement ELSE shift and go to state 129 state 124 (44) Exp -> NEW INT RBRACK Exp . LBRACK (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR LBRACK shift and go to state 130 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 DOT shift and go to state 102 state 125 (45) Exp -> NEW IDENTIFIER LPAR RPAR . OPCLT reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) OPCAND reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) OPCPLUS reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) OPCMINUS reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) OPCTIMES reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) LBRACK reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) DOT reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) RPAR reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) RBRACK reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) SEMICOL reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) COMMA reduce using rule 45 (Exp -> NEW IDENTIFIER LPAR RPAR .) state 126 (36) Exp -> Exp LBRACK Exp RBRACK . OPCLT reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) OPCAND reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) OPCPLUS reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) OPCMINUS reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) OPCTIMES reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) LBRACK reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) DOT reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) RPAR reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) RBRACK reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) SEMICOL reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) COMMA reduce using rule 36 (Exp -> Exp LBRACK Exp RBRACK .) state 127 (38) Exp -> Exp DOT IDENTIFIER LPAR . ExpList RPAR (48) ExpList -> . Exp ExprRestList (49) ExpList -> . (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR RPAR reduce using rule 49 (ExpList -> .) NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 ExpList shift and go to state 131 Exp shift and go to state 132 state 128 (28) Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp . SEMICOL (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR SEMICOL shift and go to state 133 OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 state 129 (24) Statement -> IF LPAR Exp RPAR Statement ELSE . Statement (23) Statement -> . LBRACK StatementList RBRACK (24) Statement -> . IF LPAR Exp RPAR Statement ELSE Statement (25) Statement -> . WHILE LPAR Exp RPAR Statement (26) Statement -> . PRINT LPAR Exp RPAR SEMICOL (27) Statement -> . IDENTIFIER EQUALS Exp SEMICOL (28) Statement -> . IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL LBRACK shift and go to state 61 IF shift and go to state 60 WHILE shift and go to state 55 PRINT shift and go to state 57 IDENTIFIER shift and go to state 64 Statement shift and go to state 134 state 130 (44) Exp -> NEW INT RBRACK Exp LBRACK . (36) Exp -> Exp LBRACK . Exp RBRACK (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR OPCLT reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) OPCAND reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) OPCPLUS reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) OPCMINUS reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) OPCTIMES reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) LBRACK reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) DOT reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) RPAR reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) RBRACK reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) SEMICOL reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) COMMA reduce using rule 44 (Exp -> NEW INT RBRACK Exp LBRACK .) NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 115 state 131 (38) Exp -> Exp DOT IDENTIFIER LPAR ExpList . RPAR RPAR shift and go to state 135 state 132 (48) ExpList -> Exp . ExprRestList (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR (51) ExprRestList -> . ExprRestList ExprRest (52) ExprRestList -> . OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102 COMMA reduce using rule 52 (ExprRestList -> .) RPAR reduce using rule 52 (ExprRestList -> .) ExprRestList shift and go to state 136 state 133 (28) Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL . RBRACE reduce using rule 28 (Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL .) LBRACK reduce using rule 28 (Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL .) IF reduce using rule 28 (Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL .) WHILE reduce using rule 28 (Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL .) PRINT reduce using rule 28 (Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL .) IDENTIFIER reduce using rule 28 (Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL .) RETURN reduce using rule 28 (Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL .) RBRACK reduce using rule 28 (Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL .) ELSE reduce using rule 28 (Statement -> IDENTIFIER LBRACK Exp RBRACK EQUALS Exp SEMICOL .) state 134 (24) Statement -> IF LPAR Exp RPAR Statement ELSE Statement . RBRACE reduce using rule 24 (Statement -> IF LPAR Exp RPAR Statement ELSE Statement .) LBRACK reduce using rule 24 (Statement -> IF LPAR Exp RPAR Statement ELSE Statement .) IF reduce using rule 24 (Statement -> IF LPAR Exp RPAR Statement ELSE Statement .) WHILE reduce using rule 24 (Statement -> IF LPAR Exp RPAR Statement ELSE Statement .) PRINT reduce using rule 24 (Statement -> IF LPAR Exp RPAR Statement ELSE Statement .) IDENTIFIER reduce using rule 24 (Statement -> IF LPAR Exp RPAR Statement ELSE Statement .) RETURN reduce using rule 24 (Statement -> IF LPAR Exp RPAR Statement ELSE Statement .) RBRACK reduce using rule 24 (Statement -> IF LPAR Exp RPAR Statement ELSE Statement .) ELSE reduce using rule 24 (Statement -> IF LPAR Exp RPAR Statement ELSE Statement .) state 135 (38) Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR . OPCLT reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) OPCAND reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) OPCPLUS reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) OPCMINUS reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) OPCTIMES reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) LBRACK reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) DOT reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) RPAR reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) RBRACK reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) SEMICOL reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) COMMA reduce using rule 38 (Exp -> Exp DOT IDENTIFIER LPAR ExpList RPAR .) state 136 (48) ExpList -> Exp ExprRestList . (51) ExprRestList -> ExprRestList . ExprRest (50) ExprRest -> . COMMA Exp RPAR reduce using rule 48 (ExpList -> Exp ExprRestList .) COMMA shift and go to state 138 ExprRest shift and go to state 137 state 137 (51) ExprRestList -> ExprRestList ExprRest . COMMA reduce using rule 51 (ExprRestList -> ExprRestList ExprRest .) RPAR reduce using rule 51 (ExprRestList -> ExprRestList ExprRest .) state 138 (50) ExprRest -> COMMA . Exp (31) Exp -> . Exp OPCLT Exp (32) Exp -> . Exp OPCAND Exp (33) Exp -> . Exp OPCPLUS Exp (34) Exp -> . Exp OPCMINUS Exp (35) Exp -> . Exp OPCTIMES Exp (36) Exp -> . Exp LBRACK Exp RBRACK (37) Exp -> . Exp DOT LEN (38) Exp -> . Exp DOT IDENTIFIER LPAR ExpList RPAR (39) Exp -> . NUMBER (40) Exp -> . KTRUE (41) Exp -> . KFALSE (42) Exp -> . IDENTIFIER (43) Exp -> . THIS (44) Exp -> . NEW INT RBRACK Exp LBRACK (45) Exp -> . NEW IDENTIFIER LPAR RPAR (46) Exp -> . EXCL Exp (47) Exp -> . LPAR Exp RPAR NUMBER shift and go to state 76 KTRUE shift and go to state 77 KFALSE shift and go to state 83 IDENTIFIER shift and go to state 80 THIS shift and go to state 82 NEW shift and go to state 78 EXCL shift and go to state 79 LPAR shift and go to state 75 Exp shift and go to state 139 state 139 (50) ExprRest -> COMMA Exp . (31) Exp -> Exp . OPCLT Exp (32) Exp -> Exp . OPCAND Exp (33) Exp -> Exp . OPCPLUS Exp (34) Exp -> Exp . OPCMINUS Exp (35) Exp -> Exp . OPCTIMES Exp (36) Exp -> Exp . LBRACK Exp RBRACK (37) Exp -> Exp . DOT LEN (38) Exp -> Exp . DOT IDENTIFIER LPAR ExpList RPAR COMMA reduce using rule 50 (ExprRest -> COMMA Exp .) RPAR reduce using rule 50 (ExprRest -> COMMA Exp .) OPCLT shift and go to state 97 OPCAND shift and go to state 98 OPCPLUS shift and go to state 101 OPCMINUS shift and go to state 95 OPCTIMES shift and go to state 96 LBRACK shift and go to state 99 DOT shift and go to state 102