0 $accept : program $end 1 program : statement_list 2 statement_list : statement_list statement 3 | 4 statement : END_STMT 5 | STOP END_STMT 6 | PAUSE END_STMT 7 | PRINT OPEN_PAR expression CLOSE_PAR END_STMT 8 | assign_expression END_STMT 9 | IF OPEN_PAR conditional CLOSE_PAR statement 10 | IF OPEN_PAR conditional CLOSE_PAR statement ELSE statement 11 | WHILE OPEN_PAR conditional CLOSE_PAR statement 12 | DO statement WHILE OPEN_PAR conditional CLOSE_PAR END_STMT 13 | BEGIN_CS statement_list END_CS 14 | function END_STMT 15 assign_expression : variable ASSIGN expression 16 conditional : expression EQUAL expression 17 | expression NOTEQUAL expression 18 | expression LESSTHAN expression 19 | expression GREATERTHAN expression 20 variable : VARIABLE 21 expression : VALUE 22 | OPEN_PAR expression CLOSE_PAR 23 | VARIABLE 24 | expression PLUS expression 25 | expression SUBTRACT expression 26 | expression MULTIPLY expression 27 | expression DIVIDE expression 28 | function 29 $$1 : 30 function : FUNCTION OPEN_PAR $$1 CLOSE_PAR state 0 $accept : . program $end statement_list : . (3) . reduce 3 program goto 1 statement_list goto 2 state 1 $accept : program . $end (0) $end accept state 2 program : statement_list . (1) statement_list : statement_list . statement STOP shift 3 IF shift 4 WHILE shift 5 DO shift 6 PAUSE shift 7 PRINT shift 8 END_STMT shift 9 BEGIN_CS shift 10 VARIABLE shift 11 FUNCTION shift 12 . reduce 1 statement goto 13 assign_expression goto 14 variable goto 15 function goto 16 state 3 statement : STOP . END_STMT END_STMT shift 17 state 4 statement : IF . OPEN_PAR conditional CLOSE_PAR statement statement : IF . OPEN_PAR conditional CLOSE_PAR statement ELSE statement OPEN_PAR shift 18 state 5 statement : WHILE . OPEN_PAR conditional CLOSE_PAR statement OPEN_PAR shift 19 state 6 statement : DO . statement WHILE OPEN_PAR conditional CLOSE_PAR END_STMT STOP shift 3 IF shift 4 WHILE shift 5 DO shift 6 PAUSE shift 7 PRINT shift 8 END_STMT shift 9 BEGIN_CS shift 10 VARIABLE shift 11 FUNCTION shift 12 statement goto 20 assign_expression goto 14 variable goto 15 function goto 16 state 7 statement : PAUSE . END_STMT END_STMT shift 21 state 8 statement : PRINT . OPEN_PAR expression CLOSE_PAR END_STMT OPEN_PAR shift 22 state 9 statement : END_STMT . (4) . reduce 4 state 10 statement : BEGIN_CS . statement_list END_CS statement_list : . (3) . reduce 3 statement_list goto 23 state 11 variable : VARIABLE . (20) . reduce 20 state 12 function : FUNCTION . OPEN_PAR $$1 CLOSE_PAR OPEN_PAR shift 24 state 13 statement_list : statement_list statement . (2) . reduce 2 state 14 statement : assign_expression . END_STMT END_STMT shift 25 state 15 assign_expression : variable . ASSIGN expression ASSIGN shift 26 state 16 statement : function . END_STMT END_STMT shift 27 state 17 statement : STOP END_STMT . (5) . reduce 5 state 18 statement : IF OPEN_PAR . conditional CLOSE_PAR statement statement : IF OPEN_PAR . conditional CLOSE_PAR statement ELSE statement OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 conditional goto 31 expression goto 32 function goto 33 state 19 statement : WHILE OPEN_PAR . conditional CLOSE_PAR statement OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 conditional goto 34 expression goto 32 function goto 33 state 20 statement : DO statement . WHILE OPEN_PAR conditional CLOSE_PAR END_STMT WHILE shift 35 state 21 statement : PAUSE END_STMT . (6) . reduce 6 state 22 statement : PRINT OPEN_PAR . expression CLOSE_PAR END_STMT OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 36 function goto 33 state 23 statement_list : statement_list . statement statement : BEGIN_CS statement_list . END_CS STOP shift 3 IF shift 4 WHILE shift 5 DO shift 6 PAUSE shift 7 PRINT shift 8 END_STMT shift 9 BEGIN_CS shift 10 END_CS shift 37 VARIABLE shift 11 FUNCTION shift 12 statement goto 13 assign_expression goto 14 variable goto 15 function goto 16 state 24 function : FUNCTION OPEN_PAR . $$1 CLOSE_PAR $$1 : . (29) . reduce 29 $$1 goto 38 state 25 statement : assign_expression END_STMT . (8) . reduce 8 state 26 assign_expression : variable ASSIGN . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 39 function goto 33 state 27 statement : function END_STMT . (14) . reduce 14 state 28 expression : OPEN_PAR . expression CLOSE_PAR OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 40 function goto 33 state 29 expression : VARIABLE . (23) . reduce 23 state 30 expression : VALUE . (21) . reduce 21 state 31 statement : IF OPEN_PAR conditional . CLOSE_PAR statement statement : IF OPEN_PAR conditional . CLOSE_PAR statement ELSE statement CLOSE_PAR shift 41 state 32 conditional : expression . EQUAL expression conditional : expression . NOTEQUAL expression conditional : expression . LESSTHAN expression conditional : expression . GREATERTHAN expression expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression EQUAL shift 42 NOTEQUAL shift 43 LESSTHAN shift 44 GREATERTHAN shift 45 PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 state 33 expression : function . (28) . reduce 28 state 34 statement : WHILE OPEN_PAR conditional . CLOSE_PAR statement CLOSE_PAR shift 50 state 35 statement : DO statement WHILE . OPEN_PAR conditional CLOSE_PAR END_STMT OPEN_PAR shift 51 state 36 statement : PRINT OPEN_PAR expression . CLOSE_PAR END_STMT expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 CLOSE_PAR shift 52 state 37 statement : BEGIN_CS statement_list END_CS . (13) . reduce 13 state 38 function : FUNCTION OPEN_PAR $$1 . CLOSE_PAR CLOSE_PAR shift 53 state 39 assign_expression : variable ASSIGN expression . (15) expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 . reduce 15 state 40 expression : OPEN_PAR expression . CLOSE_PAR expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 CLOSE_PAR shift 54 state 41 statement : IF OPEN_PAR conditional CLOSE_PAR . statement statement : IF OPEN_PAR conditional CLOSE_PAR . statement ELSE statement STOP shift 3 IF shift 4 WHILE shift 5 DO shift 6 PAUSE shift 7 PRINT shift 8 END_STMT shift 9 BEGIN_CS shift 10 VARIABLE shift 11 FUNCTION shift 12 statement goto 55 assign_expression goto 14 variable goto 15 function goto 16 state 42 conditional : expression EQUAL . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 56 function goto 33 state 43 conditional : expression NOTEQUAL . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 57 function goto 33 state 44 conditional : expression LESSTHAN . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 58 function goto 33 state 45 conditional : expression GREATERTHAN . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 59 function goto 33 state 46 expression : expression PLUS . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 60 function goto 33 state 47 expression : expression SUBTRACT . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 61 function goto 33 state 48 expression : expression MULTIPLY . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 62 function goto 33 state 49 expression : expression DIVIDE . expression OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 expression goto 63 function goto 33 state 50 statement : WHILE OPEN_PAR conditional CLOSE_PAR . statement STOP shift 3 IF shift 4 WHILE shift 5 DO shift 6 PAUSE shift 7 PRINT shift 8 END_STMT shift 9 BEGIN_CS shift 10 VARIABLE shift 11 FUNCTION shift 12 statement goto 64 assign_expression goto 14 variable goto 15 function goto 16 state 51 statement : DO statement WHILE OPEN_PAR . conditional CLOSE_PAR END_STMT OPEN_PAR shift 28 VARIABLE shift 29 VALUE shift 30 FUNCTION shift 12 conditional goto 65 expression goto 32 function goto 33 state 52 statement : PRINT OPEN_PAR expression CLOSE_PAR . END_STMT END_STMT shift 66 state 53 function : FUNCTION OPEN_PAR $$1 CLOSE_PAR . (30) . reduce 30 state 54 expression : OPEN_PAR expression CLOSE_PAR . (22) . reduce 22 55: shift-reduce conflict (shift 67, reduce 9) on ELSE state 55 statement : IF OPEN_PAR conditional CLOSE_PAR statement . (9) statement : IF OPEN_PAR conditional CLOSE_PAR statement . ELSE statement ELSE shift 67 . reduce 9 state 56 conditional : expression EQUAL expression . (16) expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 . reduce 16 state 57 conditional : expression NOTEQUAL expression . (17) expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 . reduce 17 state 58 conditional : expression LESSTHAN expression . (18) expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 . reduce 18 state 59 conditional : expression GREATERTHAN expression . (19) expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 . reduce 19 60: shift-reduce conflict (shift 46, reduce 24) on PLUS 60: shift-reduce conflict (shift 47, reduce 24) on SUBTRACT 60: shift-reduce conflict (shift 48, reduce 24) on MULTIPLY 60: shift-reduce conflict (shift 49, reduce 24) on DIVIDE state 60 expression : expression PLUS expression . (24) expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 . reduce 24 61: shift-reduce conflict (shift 46, reduce 25) on PLUS 61: shift-reduce conflict (shift 47, reduce 25) on SUBTRACT 61: shift-reduce conflict (shift 48, reduce 25) on MULTIPLY 61: shift-reduce conflict (shift 49, reduce 25) on DIVIDE state 61 expression : expression . PLUS expression expression : expression SUBTRACT expression . (25) expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 . reduce 25 62: shift-reduce conflict (shift 46, reduce 26) on PLUS 62: shift-reduce conflict (shift 47, reduce 26) on SUBTRACT 62: shift-reduce conflict (shift 48, reduce 26) on MULTIPLY 62: shift-reduce conflict (shift 49, reduce 26) on DIVIDE state 62 expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression MULTIPLY expression . (26) expression : expression . MULTIPLY expression expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 . reduce 26 63: shift-reduce conflict (shift 46, reduce 27) on PLUS 63: shift-reduce conflict (shift 47, reduce 27) on SUBTRACT 63: shift-reduce conflict (shift 48, reduce 27) on MULTIPLY 63: shift-reduce conflict (shift 49, reduce 27) on DIVIDE state 63 expression : expression . PLUS expression expression : expression . SUBTRACT expression expression : expression . MULTIPLY expression expression : expression DIVIDE expression . (27) expression : expression . DIVIDE expression PLUS shift 46 SUBTRACT shift 47 MULTIPLY shift 48 DIVIDE shift 49 . reduce 27 state 64 statement : WHILE OPEN_PAR conditional CLOSE_PAR statement . (11) . reduce 11 state 65 statement : DO statement WHILE OPEN_PAR conditional . CLOSE_PAR END_STMT CLOSE_PAR shift 68 state 66 statement : PRINT OPEN_PAR expression CLOSE_PAR END_STMT . (7) . reduce 7 state 67 statement : IF OPEN_PAR conditional CLOSE_PAR statement ELSE . statement STOP shift 3 IF shift 4 WHILE shift 5 DO shift 6 PAUSE shift 7 PRINT shift 8 END_STMT shift 9 BEGIN_CS shift 10 VARIABLE shift 11 FUNCTION shift 12 statement goto 69 assign_expression goto 14 variable goto 15 function goto 16 state 68 statement : DO statement WHILE OPEN_PAR conditional CLOSE_PAR . END_STMT END_STMT shift 70 state 69 statement : IF OPEN_PAR conditional CLOSE_PAR statement ELSE statement . (10) . reduce 10 state 70 statement : DO statement WHILE OPEN_PAR conditional CLOSE_PAR END_STMT . (12) . reduce 12 State 55 contains 1 shift-reduce conflict State 60 contains 4 shift-reduce conflicts State 61 contains 4 shift-reduce conflicts State 62 contains 4 shift-reduce conflicts State 63 contains 4 shift-reduce conflicts 26 tokens, 10 nonterminals 31 grammar rules, 71 states