view Bison-Flex/Compiler-StackBase/UTF8/script-parser.output @ 5:caede627f691

chage encoding
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Tue, 17 May 2011 12:45:07 +0900
parents 805d39d28230
children 86c0a38332fe
line wrap: on
line source

State 176 conflicts: 1 shift/reduce


Grammar

    0 $accept: unit "end of file"

    1 unit: define_or_state
    2     | unit define_or_state

    3 define_or_state: error ';'
    4                | function
    5                | declaration

    6 declaration: type value_list ';'
    7            | type "identifier" '(' ')' ';'
    8            | type "identifier" '(' arglist ')' ';'
    9            | "void" "identifier" '(' ')' ';'
   10            | "void" "identifier" '(' arglist ')' ';'
   11            | "__code" "identifier" '(' ')' ';'
   12            | "__code" "identifier" '(' arglist ')' ';'

   13 value_list: value
   14           | value_list ',' value

   15 arglist: arg
   16        | arglist ',' arg

   17 arg: type
   18    | type '&'
   19    | type "identifier"
   20    | type '&' "identifier"
   21    | type "identifier" '[' ']'
   22    | type '&' "identifier" '[' ']'

   23 function: type "identifier" '(' ')' block
   24         | type "identifier" '(' arglist ')' block
   25         | "void" "identifier" '(' ')' block
   26         | "void" "identifier" '(' arglist ')' block
   27         | "__code" "identifier" '(' ')' block
   28         | "__code" "identifier" '(' arglist ')' block

   29 type: "int"
   30     | "string"

   31 block: '{' decl_list state_list '}'

   32 decl_list: /* empty */
   33          | decls

   34 state_list: /* empty */
   35           | states

   36 decls: type value_list ';'
   37      | decls type value_list ';'

   38 states: statement
   39       | states statement

   40 statement: ';'
   41          | assign ';'
   42          | "identifier" '(' args ')' ';'
   43          | "identifier" '(' ')' ';'
   44          | "case" expr ':'
   45          | "default" ':'
   46          | "break" ';'
   47          | "return" ';'
   48          | "return" expr ';'
   49          | "if" '(' expr ')' statement
   50          | "if" '(' expr ')' statement "else" statement
   51          | "for" '(' assign ';' expr ';' assign ')' statement
   52          | "while" '(' expr ')' statement
   53          | "switch" '(' expr ')' '{' state_list '}'
   54          | block

   55 assign: value '=' expr
   56       | value "+=" expr
   57       | value "-=" expr
   58       | value "*=" expr
   59       | value "/=" expr
   60       | value "%=" expr

   61 expr: expr "&&" expr
   62     | expr "||" expr
   63     | expr "==" expr
   64     | expr "!=" expr
   65     | expr '>' expr
   66     | expr ">=" expr
   67     | expr '<' expr
   68     | expr "<=" expr
   69     | expr '&' expr
   70     | expr '|' expr
   71     | expr "<<" expr
   72     | expr ">>" expr
   73     | expr '-' expr
   74     | expr '+' expr
   75     | expr '*' expr
   76     | expr '/' expr
   77     | expr '%' expr
   78     | '-' expr
   79     | '(' expr ')'
   80     | value
   81     | "ival"
   82     | "sval"
   83     | "identifier" '(' args ')'
   84     | "identifier" '(' ')'

   85 value: "identifier"
   86      | "identifier" '[' expr ']'

   87 args: expr
   88     | args ',' expr


Terminals, with rules where they appear

"end of file" (0) 0
'%' (37) 77
'&' (38) 18 20 22 69
'(' (40) 7 8 9 10 11 12 23 24 25 26 27 28 42 43 49 50 51 52 53 79 83
    84
')' (41) 7 8 9 10 11 12 23 24 25 26 27 28 42 43 49 50 51 52 53 79 83
    84
'*' (42) 75
'+' (43) 74
',' (44) 14 16 88
'-' (45) 73 78
'/' (47) 76
':' (58) 44 45
';' (59) 3 6 7 8 9 10 11 12 36 37 40 41 42 43 46 47 48 51
'<' (60) 67
'=' (61) 55
'>' (62) 65
'[' (91) 21 22 86
']' (93) 21 22 86
'{' (123) 31 53
'|' (124) 70
'}' (125) 31 53
error (256) 3
"ival" (258) 81
"identifier" (259) 7 8 9 10 11 12 19 20 21 22 23 24 25 26 27 28 42
    43 83 84 85 86
"sval" (260) 82
"||" (261) 62
"&&" (262) 61
"==" (263) 63
"!=" (264) 64
">=" (265) 66
"<=" (266) 68
"<<" (267) 71
">>" (268) 72
"+=" (269) 56
"-=" (270) 57
"*=" (271) 58
"/=" (272) 59
"%=" (273) 60
"if" (274) 49 50
"else" (275) 50
"while" (276) 52
"for" (277) 51
"switch" (278) 53
"case" (279) 44
"default" (280) 45
"break" (281) 46
"return" (282) 47 48
"int" (283) 29
"string" (284) 30
"void" (285) 9 10 25 26
"__code" (286) 11 12 27 28
NEG (287)


Nonterminals, with rules where they appear

$accept (52)
    on left: 0
unit (53)
    on left: 1 2, on right: 0 2
define_or_state (54)
    on left: 3 4 5, on right: 1 2
declaration (55)
    on left: 6 7 8 9 10 11 12, on right: 5
value_list (56)
    on left: 13 14, on right: 6 14 36 37
arglist (57)
    on left: 15 16, on right: 8 10 12 16 24 26 28
arg (58)
    on left: 17 18 19 20 21 22, on right: 15 16
function (59)
    on left: 23 24 25 26 27 28, on right: 4
type (60)
    on left: 29 30, on right: 6 7 8 17 18 19 20 21 22 23 24 36 37
block (61)
    on left: 31, on right: 23 24 25 26 27 28 54
decl_list (62)
    on left: 32 33, on right: 31
state_list (63)
    on left: 34 35, on right: 31 53
decls (64)
    on left: 36 37, on right: 33 37
states (65)
    on left: 38 39, on right: 35 39
statement (66)
    on left: 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54,
    on right: 38 39 49 50 51 52
assign (67)
    on left: 55 56 57 58 59 60, on right: 41 51
expr (68)
    on left: 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
    79 80 81 82 83 84, on right: 44 48 49 50 51 52 53 55 56 57 58 59
    60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 86
    87 88
value (69)
    on left: 85 86, on right: 13 14 55 56 57 58 59 60 80
args (70)
    on left: 87 88, on right: 42 83 88


state 0

    0 $accept: . unit "end of file"
    1 unit: . define_or_state
    2     | . unit define_or_state
    3 define_or_state: . error ';'
    4                | . function
    5                | . declaration
    6 declaration: . type value_list ';'
    7            | . type "identifier" '(' ')' ';'
    8            | . type "identifier" '(' arglist ')' ';'
    9            | . "void" "identifier" '(' ')' ';'
   10            | . "void" "identifier" '(' arglist ')' ';'
   11            | . "__code" "identifier" '(' ')' ';'
   12            | . "__code" "identifier" '(' arglist ')' ';'
   23 function: . type "identifier" '(' ')' block
   24         | . type "identifier" '(' arglist ')' block
   25         | . "void" "identifier" '(' ')' block
   26         | . "void" "identifier" '(' arglist ')' block
   27         | . "__code" "identifier" '(' ')' block
   28         | . "__code" "identifier" '(' arglist ')' block
   29 type: . "int"
   30     | . "string"

    error     shift, and go to state 1
    "int"     shift, and go to state 2
    "string"  shift, and go to state 3
    "void"    shift, and go to state 4
    "__code"  shift, and go to state 5

    unit             go to state 6
    define_or_state  go to state 7
    declaration      go to state 8
    function         go to state 9
    type             go to state 10


state 1

    3 define_or_state: error . ';'

    ';'  shift, and go to state 11


state 2

   29 type: "int" .

    $default  reduce using rule 29 (type)


state 3

   30 type: "string" .

    $default  reduce using rule 30 (type)


state 4

    9 declaration: "void" . "identifier" '(' ')' ';'
   10            | "void" . "identifier" '(' arglist ')' ';'
   25 function: "void" . "identifier" '(' ')' block
   26         | "void" . "identifier" '(' arglist ')' block

    "identifier"  shift, and go to state 12


state 5

   11 declaration: "__code" . "identifier" '(' ')' ';'
   12            | "__code" . "identifier" '(' arglist ')' ';'
   27 function: "__code" . "identifier" '(' ')' block
   28         | "__code" . "identifier" '(' arglist ')' block

    "identifier"  shift, and go to state 13


state 6

    0 $accept: unit . "end of file"
    2 unit: unit . define_or_state
    3 define_or_state: . error ';'
    4                | . function
    5                | . declaration
    6 declaration: . type value_list ';'
    7            | . type "identifier" '(' ')' ';'
    8            | . type "identifier" '(' arglist ')' ';'
    9            | . "void" "identifier" '(' ')' ';'
   10            | . "void" "identifier" '(' arglist ')' ';'
   11            | . "__code" "identifier" '(' ')' ';'
   12            | . "__code" "identifier" '(' arglist ')' ';'
   23 function: . type "identifier" '(' ')' block
   24         | . type "identifier" '(' arglist ')' block
   25         | . "void" "identifier" '(' ')' block
   26         | . "void" "identifier" '(' arglist ')' block
   27         | . "__code" "identifier" '(' ')' block
   28         | . "__code" "identifier" '(' arglist ')' block
   29 type: . "int"
   30     | . "string"

    "end of file"  shift, and go to state 14
    error          shift, and go to state 1
    "int"          shift, and go to state 2
    "string"       shift, and go to state 3
    "void"         shift, and go to state 4
    "__code"       shift, and go to state 5

    define_or_state  go to state 15
    declaration      go to state 8
    function         go to state 9
    type             go to state 10


state 7

    1 unit: define_or_state .

    $default  reduce using rule 1 (unit)


state 8

    5 define_or_state: declaration .

    $default  reduce using rule 5 (define_or_state)


state 9

    4 define_or_state: function .

    $default  reduce using rule 4 (define_or_state)


state 10

    6 declaration: type . value_list ';'
    7            | type . "identifier" '(' ')' ';'
    8            | type . "identifier" '(' arglist ')' ';'
   13 value_list: . value
   14           | . value_list ',' value
   23 function: type . "identifier" '(' ')' block
   24         | type . "identifier" '(' arglist ')' block
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 16

    value_list  go to state 17
    value       go to state 18


state 11

    3 define_or_state: error ';' .

    $default  reduce using rule 3 (define_or_state)


state 12

    9 declaration: "void" "identifier" . '(' ')' ';'
   10            | "void" "identifier" . '(' arglist ')' ';'
   25 function: "void" "identifier" . '(' ')' block
   26         | "void" "identifier" . '(' arglist ')' block

    '('  shift, and go to state 19


state 13

   11 declaration: "__code" "identifier" . '(' ')' ';'
   12            | "__code" "identifier" . '(' arglist ')' ';'
   27 function: "__code" "identifier" . '(' ')' block
   28         | "__code" "identifier" . '(' arglist ')' block

    '('  shift, and go to state 20


state 14

    0 $accept: unit "end of file" .

    $default  accept


state 15

    2 unit: unit define_or_state .

    $default  reduce using rule 2 (unit)


state 16

    7 declaration: type "identifier" . '(' ')' ';'
    8            | type "identifier" . '(' arglist ')' ';'
   23 function: type "identifier" . '(' ')' block
   24         | type "identifier" . '(' arglist ')' block
   85 value: "identifier" .  [';', ',']
   86      | "identifier" . '[' expr ']'

    '('  shift, and go to state 21
    '['  shift, and go to state 22

    $default  reduce using rule 85 (value)


state 17

    6 declaration: type value_list . ';'
   14 value_list: value_list . ',' value

    ';'  shift, and go to state 23
    ','  shift, and go to state 24


state 18

   13 value_list: value .

    $default  reduce using rule 13 (value_list)


state 19

    9 declaration: "void" "identifier" '(' . ')' ';'
   10            | "void" "identifier" '(' . arglist ')' ';'
   15 arglist: . arg
   16        | . arglist ',' arg
   17 arg: . type
   18    | . type '&'
   19    | . type "identifier"
   20    | . type '&' "identifier"
   21    | . type "identifier" '[' ']'
   22    | . type '&' "identifier" '[' ']'
   25 function: "void" "identifier" '(' . ')' block
   26         | "void" "identifier" '(' . arglist ')' block
   29 type: . "int"
   30     | . "string"

    "int"     shift, and go to state 2
    "string"  shift, and go to state 3
    ')'       shift, and go to state 25

    arglist  go to state 26
    arg      go to state 27
    type     go to state 28


state 20

   11 declaration: "__code" "identifier" '(' . ')' ';'
   12            | "__code" "identifier" '(' . arglist ')' ';'
   15 arglist: . arg
   16        | . arglist ',' arg
   17 arg: . type
   18    | . type '&'
   19    | . type "identifier"
   20    | . type '&' "identifier"
   21    | . type "identifier" '[' ']'
   22    | . type '&' "identifier" '[' ']'
   27 function: "__code" "identifier" '(' . ')' block
   28         | "__code" "identifier" '(' . arglist ')' block
   29 type: . "int"
   30     | . "string"

    "int"     shift, and go to state 2
    "string"  shift, and go to state 3
    ')'       shift, and go to state 29

    arglist  go to state 30
    arg      go to state 27
    type     go to state 28


state 21

    7 declaration: type "identifier" '(' . ')' ';'
    8            | type "identifier" '(' . arglist ')' ';'
   15 arglist: . arg
   16        | . arglist ',' arg
   17 arg: . type
   18    | . type '&'
   19    | . type "identifier"
   20    | . type '&' "identifier"
   21    | . type "identifier" '[' ']'
   22    | . type '&' "identifier" '[' ']'
   23 function: type "identifier" '(' . ')' block
   24         | type "identifier" '(' . arglist ')' block
   29 type: . "int"
   30     | . "string"

    "int"     shift, and go to state 2
    "string"  shift, and go to state 3
    ')'       shift, and go to state 31

    arglist  go to state 32
    arg      go to state 27
    type     go to state 28


state 22

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'
   86      | "identifier" '[' . expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 38
    value  go to state 39


state 23

    6 declaration: type value_list ';' .

    $default  reduce using rule 6 (declaration)


state 24

   14 value_list: value_list ',' . value
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 40

    value  go to state 41


state 25

    9 declaration: "void" "identifier" '(' ')' . ';'
   25 function: "void" "identifier" '(' ')' . block
   31 block: . '{' decl_list state_list '}'

    ';'  shift, and go to state 42
    '{'  shift, and go to state 43

    block  go to state 44


state 26

   10 declaration: "void" "identifier" '(' arglist . ')' ';'
   16 arglist: arglist . ',' arg
   26 function: "void" "identifier" '(' arglist . ')' block

    ')'  shift, and go to state 45
    ','  shift, and go to state 46


state 27

   15 arglist: arg .

    $default  reduce using rule 15 (arglist)


state 28

   17 arg: type .  [')', ',']
   18    | type . '&'
   19    | type . "identifier"
   20    | type . '&' "identifier"
   21    | type . "identifier" '[' ']'
   22    | type . '&' "identifier" '[' ']'

    "identifier"  shift, and go to state 47
    '&'           shift, and go to state 48

    $default  reduce using rule 17 (arg)


state 29

   11 declaration: "__code" "identifier" '(' ')' . ';'
   27 function: "__code" "identifier" '(' ')' . block
   31 block: . '{' decl_list state_list '}'

    ';'  shift, and go to state 49
    '{'  shift, and go to state 43

    block  go to state 50


state 30

   12 declaration: "__code" "identifier" '(' arglist . ')' ';'
   16 arglist: arglist . ',' arg
   28 function: "__code" "identifier" '(' arglist . ')' block

    ')'  shift, and go to state 51
    ','  shift, and go to state 46


state 31

    7 declaration: type "identifier" '(' ')' . ';'
   23 function: type "identifier" '(' ')' . block
   31 block: . '{' decl_list state_list '}'

    ';'  shift, and go to state 52
    '{'  shift, and go to state 43

    block  go to state 53


state 32

    8 declaration: type "identifier" '(' arglist . ')' ';'
   16 arglist: arglist . ',' arg
   24 function: type "identifier" '(' arglist . ')' block

    ')'  shift, and go to state 54
    ','  shift, and go to state 46


state 33

   81 expr: "ival" .

    $default  reduce using rule 81 (expr)


state 34

   83 expr: "identifier" . '(' args ')'
   84     | "identifier" . '(' ')'
   85 value: "identifier" .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
   86      | "identifier" . '[' expr ']'

    '('  shift, and go to state 55
    '['  shift, and go to state 22

    $default  reduce using rule 85 (value)


state 35

   82 expr: "sval" .

    $default  reduce using rule 82 (expr)


state 36

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   78     | '-' . expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 56
    value  go to state 39


state 37

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   79     | '(' . expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 57
    value  go to state 39


state 38

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr
   86 value: "identifier" '[' expr . ']'

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74
    ']'   shift, and go to state 75


state 39

   80 expr: value .

    $default  reduce using rule 80 (expr)


state 40

   85 value: "identifier" .  ["+=", "-=", "*=", "/=", "%=", ';', ',', '=']
   86      | "identifier" . '[' expr ']'

    '['  shift, and go to state 22

    $default  reduce using rule 85 (value)


state 41

   14 value_list: value_list ',' value .

    $default  reduce using rule 14 (value_list)


state 42

    9 declaration: "void" "identifier" '(' ')' ';' .

    $default  reduce using rule 9 (declaration)


state 43

   29 type: . "int"
   30     | . "string"
   31 block: '{' . decl_list state_list '}'
   32 decl_list: .  ["identifier", "if", "while", "for", "switch", "case", "default", "break", "return", ';', '{', '}']
   33          | . decls
   36 decls: . type value_list ';'
   37      | . decls type value_list ';'

    "int"     shift, and go to state 2
    "string"  shift, and go to state 3

    $default  reduce using rule 32 (decl_list)

    type       go to state 76
    decl_list  go to state 77
    decls      go to state 78


state 44

   25 function: "void" "identifier" '(' ')' block .

    $default  reduce using rule 25 (function)


state 45

   10 declaration: "void" "identifier" '(' arglist ')' . ';'
   26 function: "void" "identifier" '(' arglist ')' . block
   31 block: . '{' decl_list state_list '}'

    ';'  shift, and go to state 79
    '{'  shift, and go to state 43

    block  go to state 80


state 46

   16 arglist: arglist ',' . arg
   17 arg: . type
   18    | . type '&'
   19    | . type "identifier"
   20    | . type '&' "identifier"
   21    | . type "identifier" '[' ']'
   22    | . type '&' "identifier" '[' ']'
   29 type: . "int"
   30     | . "string"

    "int"     shift, and go to state 2
    "string"  shift, and go to state 3

    arg   go to state 81
    type  go to state 28


state 47

   19 arg: type "identifier" .  [')', ',']
   21    | type "identifier" . '[' ']'

    '['  shift, and go to state 82

    $default  reduce using rule 19 (arg)


state 48

   18 arg: type '&' .  [')', ',']
   20    | type '&' . "identifier"
   22    | type '&' . "identifier" '[' ']'

    "identifier"  shift, and go to state 83

    $default  reduce using rule 18 (arg)


state 49

   11 declaration: "__code" "identifier" '(' ')' ';' .

    $default  reduce using rule 11 (declaration)


state 50

   27 function: "__code" "identifier" '(' ')' block .

    $default  reduce using rule 27 (function)


state 51

   12 declaration: "__code" "identifier" '(' arglist ')' . ';'
   28 function: "__code" "identifier" '(' arglist ')' . block
   31 block: . '{' decl_list state_list '}'

    ';'  shift, and go to state 84
    '{'  shift, and go to state 43

    block  go to state 85


state 52

    7 declaration: type "identifier" '(' ')' ';' .

    $default  reduce using rule 7 (declaration)


state 53

   23 function: type "identifier" '(' ')' block .

    $default  reduce using rule 23 (function)


state 54

    8 declaration: type "identifier" '(' arglist ')' . ';'
   24 function: type "identifier" '(' arglist ')' . block
   31 block: . '{' decl_list state_list '}'

    ';'  shift, and go to state 86
    '{'  shift, and go to state 43

    block  go to state 87


state 55

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   83     | "identifier" '(' . args ')'
   84     | . "identifier" '(' ')'
   84     | "identifier" '(' . ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'
   87 args: . expr
   88     | . args ',' expr

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37
    ')'           shift, and go to state 88

    expr   go to state 89
    value  go to state 39
    args   go to state 90


state 56

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr
   78     | '-' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']

    $default  reduce using rule 78 (expr)

    Conflict between rule 78 and token "||" resolved as reduce ("||" < NEG).
    Conflict between rule 78 and token "&&" resolved as reduce ("&&" < NEG).
    Conflict between rule 78 and token "==" resolved as reduce ("==" < NEG).
    Conflict between rule 78 and token "!=" resolved as reduce ("!=" < NEG).
    Conflict between rule 78 and token ">=" resolved as reduce (">=" < NEG).
    Conflict between rule 78 and token "<=" resolved as reduce ("<=" < NEG).
    Conflict between rule 78 and token "<<" resolved as reduce ("<<" < NEG).
    Conflict between rule 78 and token ">>" resolved as reduce (">>" < NEG).
    Conflict between rule 78 and token '>' resolved as reduce ('>' < NEG).
    Conflict between rule 78 and token '<' resolved as reduce ('<' < NEG).
    Conflict between rule 78 and token '&' resolved as reduce ('&' < NEG).
    Conflict between rule 78 and token '|' resolved as reduce ('|' < NEG).
    Conflict between rule 78 and token '+' resolved as reduce ('+' < NEG).
    Conflict between rule 78 and token '-' resolved as reduce ('-' < NEG).
    Conflict between rule 78 and token '*' resolved as reduce ('*' < NEG).
    Conflict between rule 78 and token '/' resolved as reduce ('/' < NEG).
    Conflict between rule 78 and token '%' resolved as reduce ('%' < NEG).


state 57

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr
   79     | '(' expr . ')'

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74
    ')'   shift, and go to state 91


state 58

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   62     | expr "||" . expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 92
    value  go to state 39


state 59

   61 expr: . expr "&&" expr
   61     | expr "&&" . expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 93
    value  go to state 39


state 60

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   63     | expr "==" . expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 94
    value  go to state 39


state 61

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   64     | expr "!=" . expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 95
    value  go to state 39


state 62

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   66     | expr ">=" . expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 96
    value  go to state 39


state 63

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   68     | expr "<=" . expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 97
    value  go to state 39


state 64

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   71     | expr "<<" . expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 98
    value  go to state 39


state 65

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   72     | expr ">>" . expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 99
    value  go to state 39


state 66

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   65     | expr '>' . expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 100
    value  go to state 39


state 67

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   67     | expr '<' . expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 101
    value  go to state 39


state 68

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   69     | expr '&' . expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 102
    value  go to state 39


state 69

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   70     | expr '|' . expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 103
    value  go to state 39


state 70

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   74     | expr '+' . expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 104
    value  go to state 39


state 71

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   73     | expr '-' . expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 105
    value  go to state 39


state 72

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   75     | expr '*' . expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 106
    value  go to state 39


state 73

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   76     | expr '/' . expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 107
    value  go to state 39


state 74

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   77     | expr '%' . expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 108
    value  go to state 39


state 75

   86 value: "identifier" '[' expr ']' .

    $default  reduce using rule 86 (value)


state 76

   13 value_list: . value
   14           | . value_list ',' value
   36 decls: type . value_list ';'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 40

    value_list  go to state 109
    value       go to state 18


state 77

   31 block: . '{' decl_list state_list '}'
   31      | '{' decl_list . state_list '}'
   34 state_list: .  ['}']
   35           | . states
   38 states: . statement
   39       | . states statement
   40 statement: . ';'
   41          | . assign ';'
   42          | . "identifier" '(' args ')' ';'
   43          | . "identifier" '(' ')' ';'
   44          | . "case" expr ':'
   45          | . "default" ':'
   46          | . "break" ';'
   47          | . "return" ';'
   48          | . "return" expr ';'
   49          | . "if" '(' expr ')' statement
   50          | . "if" '(' expr ')' statement "else" statement
   51          | . "for" '(' assign ';' expr ';' assign ')' statement
   52          | . "while" '(' expr ')' statement
   53          | . "switch" '(' expr ')' '{' state_list '}'
   54          | . block
   55 assign: . value '=' expr
   56       | . value "+=" expr
   57       | . value "-=" expr
   58       | . value "*=" expr
   59       | . value "/=" expr
   60       | . value "%=" expr
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 110
    "if"          shift, and go to state 111
    "while"       shift, and go to state 112
    "for"         shift, and go to state 113
    "switch"      shift, and go to state 114
    "case"        shift, and go to state 115
    "default"     shift, and go to state 116
    "break"       shift, and go to state 117
    "return"      shift, and go to state 118
    ';'           shift, and go to state 119
    '{'           shift, and go to state 43

    $default  reduce using rule 34 (state_list)

    block       go to state 120
    state_list  go to state 121
    states      go to state 122
    statement   go to state 123
    assign      go to state 124
    value       go to state 125


state 78

   29 type: . "int"
   30     | . "string"
   33 decl_list: decls .  ["identifier", "if", "while", "for", "switch", "case", "default", "break", "return", ';', '{', '}']
   37 decls: decls . type value_list ';'

    "int"     shift, and go to state 2
    "string"  shift, and go to state 3

    $default  reduce using rule 33 (decl_list)

    type  go to state 126


state 79

   10 declaration: "void" "identifier" '(' arglist ')' ';' .

    $default  reduce using rule 10 (declaration)


state 80

   26 function: "void" "identifier" '(' arglist ')' block .

    $default  reduce using rule 26 (function)


state 81

   16 arglist: arglist ',' arg .

    $default  reduce using rule 16 (arglist)


state 82

   21 arg: type "identifier" '[' . ']'

    ']'  shift, and go to state 127


state 83

   20 arg: type '&' "identifier" .  [')', ',']
   22    | type '&' "identifier" . '[' ']'

    '['  shift, and go to state 128

    $default  reduce using rule 20 (arg)


state 84

   12 declaration: "__code" "identifier" '(' arglist ')' ';' .

    $default  reduce using rule 12 (declaration)


state 85

   28 function: "__code" "identifier" '(' arglist ')' block .

    $default  reduce using rule 28 (function)


state 86

    8 declaration: type "identifier" '(' arglist ')' ';' .

    $default  reduce using rule 8 (declaration)


state 87

   24 function: type "identifier" '(' arglist ')' block .

    $default  reduce using rule 24 (function)


state 88

   84 expr: "identifier" '(' ')' .

    $default  reduce using rule 84 (expr)


state 89

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr
   87 args: expr .  [')', ',']

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 87 (args)


state 90

   83 expr: "identifier" '(' args . ')'
   88 args: args . ',' expr

    ')'  shift, and go to state 129
    ','  shift, and go to state 130


state 91

   79 expr: '(' expr ')' .

    $default  reduce using rule 79 (expr)


state 92

   61 expr: expr . "&&" expr
   62     | expr . "||" expr  ["||", ';', ')', ',', ']', ':']
   62     | expr "||" expr .  ["||", ';', ')', ',', ']', ':']
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 62 (expr)

    Conflict between rule 62 and token "||" resolved as reduce (%left "||").
    Conflict between rule 62 and token "&&" resolved as shift ("||" < "&&").
    Conflict between rule 62 and token "==" resolved as shift ("||" < "==").
    Conflict between rule 62 and token "!=" resolved as shift ("||" < "!=").
    Conflict between rule 62 and token ">=" resolved as shift ("||" < ">=").
    Conflict between rule 62 and token "<=" resolved as shift ("||" < "<=").
    Conflict between rule 62 and token "<<" resolved as shift ("||" < "<<").
    Conflict between rule 62 and token ">>" resolved as shift ("||" < ">>").
    Conflict between rule 62 and token '>' resolved as shift ("||" < '>').
    Conflict between rule 62 and token '<' resolved as shift ("||" < '<').
    Conflict between rule 62 and token '&' resolved as shift ("||" < '&').
    Conflict between rule 62 and token '|' resolved as shift ("||" < '|').
    Conflict between rule 62 and token '+' resolved as shift ("||" < '+').
    Conflict between rule 62 and token '-' resolved as shift ("||" < '-').
    Conflict between rule 62 and token '*' resolved as shift ("||" < '*').
    Conflict between rule 62 and token '/' resolved as shift ("||" < '/').
    Conflict between rule 62 and token '%' resolved as shift ("||" < '%').


state 93

   61 expr: expr . "&&" expr  ["||", "&&", ';', ')', ',', ']', ':']
   61     | expr "&&" expr .  ["||", "&&", ';', ')', ',', ']', ':']
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 61 (expr)

    Conflict between rule 61 and token "||" resolved as reduce ("||" < "&&").
    Conflict between rule 61 and token "&&" resolved as reduce (%left "&&").
    Conflict between rule 61 and token "==" resolved as shift ("&&" < "==").
    Conflict between rule 61 and token "!=" resolved as shift ("&&" < "!=").
    Conflict between rule 61 and token ">=" resolved as shift ("&&" < ">=").
    Conflict between rule 61 and token "<=" resolved as shift ("&&" < "<=").
    Conflict between rule 61 and token "<<" resolved as shift ("&&" < "<<").
    Conflict between rule 61 and token ">>" resolved as shift ("&&" < ">>").
    Conflict between rule 61 and token '>' resolved as shift ("&&" < '>').
    Conflict between rule 61 and token '<' resolved as shift ("&&" < '<').
    Conflict between rule 61 and token '&' resolved as shift ("&&" < '&').
    Conflict between rule 61 and token '|' resolved as shift ("&&" < '|').
    Conflict between rule 61 and token '+' resolved as shift ("&&" < '+').
    Conflict between rule 61 and token '-' resolved as shift ("&&" < '-').
    Conflict between rule 61 and token '*' resolved as shift ("&&" < '*').
    Conflict between rule 61 and token '/' resolved as shift ("&&" < '/').
    Conflict between rule 61 and token '%' resolved as shift ("&&" < '%').


state 94

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr  ["||", "&&", ';', ')', ',', ']', ':']
   63     | expr "==" expr .  ["||", "&&", ';', ')', ',', ']', ':']
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    "=="  error (nonassociative)
    "!="  error (nonassociative)
    ">="  error (nonassociative)
    "<="  error (nonassociative)
    '>'   error (nonassociative)
    '<'   error (nonassociative)

    $default  reduce using rule 63 (expr)

    Conflict between rule 63 and token "||" resolved as reduce ("||" < "==").
    Conflict between rule 63 and token "&&" resolved as reduce ("&&" < "==").
    Conflict between rule 63 and token "==" resolved as an error (%nonassoc "==").
    Conflict between rule 63 and token "!=" resolved as an error (%nonassoc "!=").
    Conflict between rule 63 and token ">=" resolved as an error (%nonassoc ">=").
    Conflict between rule 63 and token "<=" resolved as an error (%nonassoc "<=").
    Conflict between rule 63 and token "<<" resolved as shift ("==" < "<<").
    Conflict between rule 63 and token ">>" resolved as shift ("==" < ">>").
    Conflict between rule 63 and token '>' resolved as an error (%nonassoc '>').
    Conflict between rule 63 and token '<' resolved as an error (%nonassoc '<').
    Conflict between rule 63 and token '&' resolved as shift ("==" < '&').
    Conflict between rule 63 and token '|' resolved as shift ("==" < '|').
    Conflict between rule 63 and token '+' resolved as shift ("==" < '+').
    Conflict between rule 63 and token '-' resolved as shift ("==" < '-').
    Conflict between rule 63 and token '*' resolved as shift ("==" < '*').
    Conflict between rule 63 and token '/' resolved as shift ("==" < '/').
    Conflict between rule 63 and token '%' resolved as shift ("==" < '%').


state 95

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr  ["||", "&&", ';', ')', ',', ']', ':']
   64     | expr "!=" expr .  ["||", "&&", ';', ')', ',', ']', ':']
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    "=="  error (nonassociative)
    "!="  error (nonassociative)
    ">="  error (nonassociative)
    "<="  error (nonassociative)
    '>'   error (nonassociative)
    '<'   error (nonassociative)

    $default  reduce using rule 64 (expr)

    Conflict between rule 64 and token "||" resolved as reduce ("||" < "!=").
    Conflict between rule 64 and token "&&" resolved as reduce ("&&" < "!=").
    Conflict between rule 64 and token "==" resolved as an error (%nonassoc "==").
    Conflict between rule 64 and token "!=" resolved as an error (%nonassoc "!=").
    Conflict between rule 64 and token ">=" resolved as an error (%nonassoc ">=").
    Conflict between rule 64 and token "<=" resolved as an error (%nonassoc "<=").
    Conflict between rule 64 and token "<<" resolved as shift ("!=" < "<<").
    Conflict between rule 64 and token ">>" resolved as shift ("!=" < ">>").
    Conflict between rule 64 and token '>' resolved as an error (%nonassoc '>').
    Conflict between rule 64 and token '<' resolved as an error (%nonassoc '<').
    Conflict between rule 64 and token '&' resolved as shift ("!=" < '&').
    Conflict between rule 64 and token '|' resolved as shift ("!=" < '|').
    Conflict between rule 64 and token '+' resolved as shift ("!=" < '+').
    Conflict between rule 64 and token '-' resolved as shift ("!=" < '-').
    Conflict between rule 64 and token '*' resolved as shift ("!=" < '*').
    Conflict between rule 64 and token '/' resolved as shift ("!=" < '/').
    Conflict between rule 64 and token '%' resolved as shift ("!=" < '%').


state 96

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr  ["||", "&&", ';', ')', ',', ']', ':']
   66     | expr ">=" expr .  ["||", "&&", ';', ')', ',', ']', ':']
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    "=="  error (nonassociative)
    "!="  error (nonassociative)
    ">="  error (nonassociative)
    "<="  error (nonassociative)
    '>'   error (nonassociative)
    '<'   error (nonassociative)

    $default  reduce using rule 66 (expr)

    Conflict between rule 66 and token "||" resolved as reduce ("||" < ">=").
    Conflict between rule 66 and token "&&" resolved as reduce ("&&" < ">=").
    Conflict between rule 66 and token "==" resolved as an error (%nonassoc "==").
    Conflict between rule 66 and token "!=" resolved as an error (%nonassoc "!=").
    Conflict between rule 66 and token ">=" resolved as an error (%nonassoc ">=").
    Conflict between rule 66 and token "<=" resolved as an error (%nonassoc "<=").
    Conflict between rule 66 and token "<<" resolved as shift (">=" < "<<").
    Conflict between rule 66 and token ">>" resolved as shift (">=" < ">>").
    Conflict between rule 66 and token '>' resolved as an error (%nonassoc '>').
    Conflict between rule 66 and token '<' resolved as an error (%nonassoc '<').
    Conflict between rule 66 and token '&' resolved as shift (">=" < '&').
    Conflict between rule 66 and token '|' resolved as shift (">=" < '|').
    Conflict between rule 66 and token '+' resolved as shift (">=" < '+').
    Conflict between rule 66 and token '-' resolved as shift (">=" < '-').
    Conflict between rule 66 and token '*' resolved as shift (">=" < '*').
    Conflict between rule 66 and token '/' resolved as shift (">=" < '/').
    Conflict between rule 66 and token '%' resolved as shift (">=" < '%').


state 97

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr  ["||", "&&", ';', ')', ',', ']', ':']
   68     | expr "<=" expr .  ["||", "&&", ';', ')', ',', ']', ':']
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    "=="  error (nonassociative)
    "!="  error (nonassociative)
    ">="  error (nonassociative)
    "<="  error (nonassociative)
    '>'   error (nonassociative)
    '<'   error (nonassociative)

    $default  reduce using rule 68 (expr)

    Conflict between rule 68 and token "||" resolved as reduce ("||" < "<=").
    Conflict between rule 68 and token "&&" resolved as reduce ("&&" < "<=").
    Conflict between rule 68 and token "==" resolved as an error (%nonassoc "==").
    Conflict between rule 68 and token "!=" resolved as an error (%nonassoc "!=").
    Conflict between rule 68 and token ">=" resolved as an error (%nonassoc ">=").
    Conflict between rule 68 and token "<=" resolved as an error (%nonassoc "<=").
    Conflict between rule 68 and token "<<" resolved as shift ("<=" < "<<").
    Conflict between rule 68 and token ">>" resolved as shift ("<=" < ">>").
    Conflict between rule 68 and token '>' resolved as an error (%nonassoc '>').
    Conflict between rule 68 and token '<' resolved as an error (%nonassoc '<').
    Conflict between rule 68 and token '&' resolved as shift ("<=" < '&').
    Conflict between rule 68 and token '|' resolved as shift ("<=" < '|').
    Conflict between rule 68 and token '+' resolved as shift ("<=" < '+').
    Conflict between rule 68 and token '-' resolved as shift ("<=" < '-').
    Conflict between rule 68 and token '*' resolved as shift ("<=" < '*').
    Conflict between rule 68 and token '/' resolved as shift ("<=" < '/').
    Conflict between rule 68 and token '%' resolved as shift ("<=" < '%').


state 98

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', ';', ')', ',', ']', ':']
   71     | expr "<<" expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', ';', ')', ',', ']', ':']
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    '+'  shift, and go to state 70
    '-'  shift, and go to state 71
    '*'  shift, and go to state 72
    '/'  shift, and go to state 73
    '%'  shift, and go to state 74

    $default  reduce using rule 71 (expr)

    Conflict between rule 71 and token "||" resolved as reduce ("||" < "<<").
    Conflict between rule 71 and token "&&" resolved as reduce ("&&" < "<<").
    Conflict between rule 71 and token "==" resolved as reduce ("==" < "<<").
    Conflict between rule 71 and token "!=" resolved as reduce ("!=" < "<<").
    Conflict between rule 71 and token ">=" resolved as reduce (">=" < "<<").
    Conflict between rule 71 and token "<=" resolved as reduce ("<=" < "<<").
    Conflict between rule 71 and token "<<" resolved as reduce (%left "<<").
    Conflict between rule 71 and token ">>" resolved as reduce (%left ">>").
    Conflict between rule 71 and token '>' resolved as reduce ('>' < "<<").
    Conflict between rule 71 and token '<' resolved as reduce ('<' < "<<").
    Conflict between rule 71 and token '&' resolved as reduce ('&' < "<<").
    Conflict between rule 71 and token '|' resolved as reduce ('|' < "<<").
    Conflict between rule 71 and token '+' resolved as shift ("<<" < '+').
    Conflict between rule 71 and token '-' resolved as shift ("<<" < '-').
    Conflict between rule 71 and token '*' resolved as shift ("<<" < '*').
    Conflict between rule 71 and token '/' resolved as shift ("<<" < '/').
    Conflict between rule 71 and token '%' resolved as shift ("<<" < '%').


state 99

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', ';', ')', ',', ']', ':']
   72     | expr ">>" expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', ';', ')', ',', ']', ':']
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    '+'  shift, and go to state 70
    '-'  shift, and go to state 71
    '*'  shift, and go to state 72
    '/'  shift, and go to state 73
    '%'  shift, and go to state 74

    $default  reduce using rule 72 (expr)

    Conflict between rule 72 and token "||" resolved as reduce ("||" < ">>").
    Conflict between rule 72 and token "&&" resolved as reduce ("&&" < ">>").
    Conflict between rule 72 and token "==" resolved as reduce ("==" < ">>").
    Conflict between rule 72 and token "!=" resolved as reduce ("!=" < ">>").
    Conflict between rule 72 and token ">=" resolved as reduce (">=" < ">>").
    Conflict between rule 72 and token "<=" resolved as reduce ("<=" < ">>").
    Conflict between rule 72 and token "<<" resolved as reduce (%left "<<").
    Conflict between rule 72 and token ">>" resolved as reduce (%left ">>").
    Conflict between rule 72 and token '>' resolved as reduce ('>' < ">>").
    Conflict between rule 72 and token '<' resolved as reduce ('<' < ">>").
    Conflict between rule 72 and token '&' resolved as reduce ('&' < ">>").
    Conflict between rule 72 and token '|' resolved as reduce ('|' < ">>").
    Conflict between rule 72 and token '+' resolved as shift (">>" < '+').
    Conflict between rule 72 and token '-' resolved as shift (">>" < '-').
    Conflict between rule 72 and token '*' resolved as shift (">>" < '*').
    Conflict between rule 72 and token '/' resolved as shift (">>" < '/').
    Conflict between rule 72 and token '%' resolved as shift (">>" < '%').


state 100

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr  ["||", "&&", ';', ')', ',', ']', ':']
   65     | expr '>' expr .  ["||", "&&", ';', ')', ',', ']', ':']
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    "=="  error (nonassociative)
    "!="  error (nonassociative)
    ">="  error (nonassociative)
    "<="  error (nonassociative)
    '>'   error (nonassociative)
    '<'   error (nonassociative)

    $default  reduce using rule 65 (expr)

    Conflict between rule 65 and token "||" resolved as reduce ("||" < '>').
    Conflict between rule 65 and token "&&" resolved as reduce ("&&" < '>').
    Conflict between rule 65 and token "==" resolved as an error (%nonassoc "==").
    Conflict between rule 65 and token "!=" resolved as an error (%nonassoc "!=").
    Conflict between rule 65 and token ">=" resolved as an error (%nonassoc ">=").
    Conflict between rule 65 and token "<=" resolved as an error (%nonassoc "<=").
    Conflict between rule 65 and token "<<" resolved as shift ('>' < "<<").
    Conflict between rule 65 and token ">>" resolved as shift ('>' < ">>").
    Conflict between rule 65 and token '>' resolved as an error (%nonassoc '>').
    Conflict between rule 65 and token '<' resolved as an error (%nonassoc '<').
    Conflict between rule 65 and token '&' resolved as shift ('>' < '&').
    Conflict between rule 65 and token '|' resolved as shift ('>' < '|').
    Conflict between rule 65 and token '+' resolved as shift ('>' < '+').
    Conflict between rule 65 and token '-' resolved as shift ('>' < '-').
    Conflict between rule 65 and token '*' resolved as shift ('>' < '*').
    Conflict between rule 65 and token '/' resolved as shift ('>' < '/').
    Conflict between rule 65 and token '%' resolved as shift ('>' < '%').


state 101

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr  ["||", "&&", ';', ')', ',', ']', ':']
   67     | expr '<' expr .  ["||", "&&", ';', ')', ',', ']', ':']
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    "=="  error (nonassociative)
    "!="  error (nonassociative)
    ">="  error (nonassociative)
    "<="  error (nonassociative)
    '>'   error (nonassociative)
    '<'   error (nonassociative)

    $default  reduce using rule 67 (expr)

    Conflict between rule 67 and token "||" resolved as reduce ("||" < '<').
    Conflict between rule 67 and token "&&" resolved as reduce ("&&" < '<').
    Conflict between rule 67 and token "==" resolved as an error (%nonassoc "==").
    Conflict between rule 67 and token "!=" resolved as an error (%nonassoc "!=").
    Conflict between rule 67 and token ">=" resolved as an error (%nonassoc ">=").
    Conflict between rule 67 and token "<=" resolved as an error (%nonassoc "<=").
    Conflict between rule 67 and token "<<" resolved as shift ('<' < "<<").
    Conflict between rule 67 and token ">>" resolved as shift ('<' < ">>").
    Conflict between rule 67 and token '>' resolved as an error (%nonassoc '>').
    Conflict between rule 67 and token '<' resolved as an error (%nonassoc '<').
    Conflict between rule 67 and token '&' resolved as shift ('<' < '&').
    Conflict between rule 67 and token '|' resolved as shift ('<' < '|').
    Conflict between rule 67 and token '+' resolved as shift ('<' < '+').
    Conflict between rule 67 and token '-' resolved as shift ('<' < '-').
    Conflict between rule 67 and token '*' resolved as shift ('<' < '*').
    Conflict between rule 67 and token '/' resolved as shift ('<' < '/').
    Conflict between rule 67 and token '%' resolved as shift ('<' < '%').


state 102

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr  ["||", "&&", "==", "!=", ">=", "<=", '>', '<', '&', '|', ';', ')', ',', ']', ':']
   69     | expr '&' expr .  ["||", "&&", "==", "!=", ">=", "<=", '>', '<', '&', '|', ';', ')', ',', ']', ':']
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 69 (expr)

    Conflict between rule 69 and token "||" resolved as reduce ("||" < '&').
    Conflict between rule 69 and token "&&" resolved as reduce ("&&" < '&').
    Conflict between rule 69 and token "==" resolved as reduce ("==" < '&').
    Conflict between rule 69 and token "!=" resolved as reduce ("!=" < '&').
    Conflict between rule 69 and token ">=" resolved as reduce (">=" < '&').
    Conflict between rule 69 and token "<=" resolved as reduce ("<=" < '&').
    Conflict between rule 69 and token "<<" resolved as shift ('&' < "<<").
    Conflict between rule 69 and token ">>" resolved as shift ('&' < ">>").
    Conflict between rule 69 and token '>' resolved as reduce ('>' < '&').
    Conflict between rule 69 and token '<' resolved as reduce ('<' < '&').
    Conflict between rule 69 and token '&' resolved as reduce (%left '&').
    Conflict between rule 69 and token '|' resolved as reduce (%left '|').
    Conflict between rule 69 and token '+' resolved as shift ('&' < '+').
    Conflict between rule 69 and token '-' resolved as shift ('&' < '-').
    Conflict between rule 69 and token '*' resolved as shift ('&' < '*').
    Conflict between rule 69 and token '/' resolved as shift ('&' < '/').
    Conflict between rule 69 and token '%' resolved as shift ('&' < '%').


state 103

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr  ["||", "&&", "==", "!=", ">=", "<=", '>', '<', '&', '|', ';', ')', ',', ']', ':']
   70     | expr '|' expr .  ["||", "&&", "==", "!=", ">=", "<=", '>', '<', '&', '|', ';', ')', ',', ']', ':']
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 70 (expr)

    Conflict between rule 70 and token "||" resolved as reduce ("||" < '|').
    Conflict between rule 70 and token "&&" resolved as reduce ("&&" < '|').
    Conflict between rule 70 and token "==" resolved as reduce ("==" < '|').
    Conflict between rule 70 and token "!=" resolved as reduce ("!=" < '|').
    Conflict between rule 70 and token ">=" resolved as reduce (">=" < '|').
    Conflict between rule 70 and token "<=" resolved as reduce ("<=" < '|').
    Conflict between rule 70 and token "<<" resolved as shift ('|' < "<<").
    Conflict between rule 70 and token ">>" resolved as shift ('|' < ">>").
    Conflict between rule 70 and token '>' resolved as reduce ('>' < '|').
    Conflict between rule 70 and token '<' resolved as reduce ('<' < '|').
    Conflict between rule 70 and token '&' resolved as reduce (%left '&').
    Conflict between rule 70 and token '|' resolved as reduce (%left '|').
    Conflict between rule 70 and token '+' resolved as shift ('|' < '+').
    Conflict between rule 70 and token '-' resolved as shift ('|' < '-').
    Conflict between rule 70 and token '*' resolved as shift ('|' < '*').
    Conflict between rule 70 and token '/' resolved as shift ('|' < '/').
    Conflict between rule 70 and token '%' resolved as shift ('|' < '%').


state 104

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', ';', ')', ',', ']', ':']
   74     | expr '+' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', ';', ')', ',', ']', ':']
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    '*'  shift, and go to state 72
    '/'  shift, and go to state 73
    '%'  shift, and go to state 74

    $default  reduce using rule 74 (expr)

    Conflict between rule 74 and token "||" resolved as reduce ("||" < '+').
    Conflict between rule 74 and token "&&" resolved as reduce ("&&" < '+').
    Conflict between rule 74 and token "==" resolved as reduce ("==" < '+').
    Conflict between rule 74 and token "!=" resolved as reduce ("!=" < '+').
    Conflict between rule 74 and token ">=" resolved as reduce (">=" < '+').
    Conflict between rule 74 and token "<=" resolved as reduce ("<=" < '+').
    Conflict between rule 74 and token "<<" resolved as reduce ("<<" < '+').
    Conflict between rule 74 and token ">>" resolved as reduce (">>" < '+').
    Conflict between rule 74 and token '>' resolved as reduce ('>' < '+').
    Conflict between rule 74 and token '<' resolved as reduce ('<' < '+').
    Conflict between rule 74 and token '&' resolved as reduce ('&' < '+').
    Conflict between rule 74 and token '|' resolved as reduce ('|' < '+').
    Conflict between rule 74 and token '+' resolved as reduce (%left '+').
    Conflict between rule 74 and token '-' resolved as reduce (%left '-').
    Conflict between rule 74 and token '*' resolved as shift ('+' < '*').
    Conflict between rule 74 and token '/' resolved as shift ('+' < '/').
    Conflict between rule 74 and token '%' resolved as shift ('+' < '%').


state 105

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', ';', ')', ',', ']', ':']
   73     | expr '-' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', ';', ')', ',', ']', ':']
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    '*'  shift, and go to state 72
    '/'  shift, and go to state 73
    '%'  shift, and go to state 74

    $default  reduce using rule 73 (expr)

    Conflict between rule 73 and token "||" resolved as reduce ("||" < '-').
    Conflict between rule 73 and token "&&" resolved as reduce ("&&" < '-').
    Conflict between rule 73 and token "==" resolved as reduce ("==" < '-').
    Conflict between rule 73 and token "!=" resolved as reduce ("!=" < '-').
    Conflict between rule 73 and token ">=" resolved as reduce (">=" < '-').
    Conflict between rule 73 and token "<=" resolved as reduce ("<=" < '-').
    Conflict between rule 73 and token "<<" resolved as reduce ("<<" < '-').
    Conflict between rule 73 and token ">>" resolved as reduce (">>" < '-').
    Conflict between rule 73 and token '>' resolved as reduce ('>' < '-').
    Conflict between rule 73 and token '<' resolved as reduce ('<' < '-').
    Conflict between rule 73 and token '&' resolved as reduce ('&' < '-').
    Conflict between rule 73 and token '|' resolved as reduce ('|' < '-').
    Conflict between rule 73 and token '+' resolved as reduce (%left '+').
    Conflict between rule 73 and token '-' resolved as reduce (%left '-').
    Conflict between rule 73 and token '*' resolved as shift ('-' < '*').
    Conflict between rule 73 and token '/' resolved as shift ('-' < '/').
    Conflict between rule 73 and token '%' resolved as shift ('-' < '%').


state 106

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
   75     | expr '*' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
   76     | expr . '/' expr
   77     | expr . '%' expr

    $default  reduce using rule 75 (expr)

    Conflict between rule 75 and token "||" resolved as reduce ("||" < '*').
    Conflict between rule 75 and token "&&" resolved as reduce ("&&" < '*').
    Conflict between rule 75 and token "==" resolved as reduce ("==" < '*').
    Conflict between rule 75 and token "!=" resolved as reduce ("!=" < '*').
    Conflict between rule 75 and token ">=" resolved as reduce (">=" < '*').
    Conflict between rule 75 and token "<=" resolved as reduce ("<=" < '*').
    Conflict between rule 75 and token "<<" resolved as reduce ("<<" < '*').
    Conflict between rule 75 and token ">>" resolved as reduce (">>" < '*').
    Conflict between rule 75 and token '>' resolved as reduce ('>' < '*').
    Conflict between rule 75 and token '<' resolved as reduce ('<' < '*').
    Conflict between rule 75 and token '&' resolved as reduce ('&' < '*').
    Conflict between rule 75 and token '|' resolved as reduce ('|' < '*').
    Conflict between rule 75 and token '+' resolved as reduce ('+' < '*').
    Conflict between rule 75 and token '-' resolved as reduce ('-' < '*').
    Conflict between rule 75 and token '*' resolved as reduce (%left '*').
    Conflict between rule 75 and token '/' resolved as reduce (%left '/').
    Conflict between rule 75 and token '%' resolved as reduce (%left '%').


state 107

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
   76     | expr '/' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
   77     | expr . '%' expr

    $default  reduce using rule 76 (expr)

    Conflict between rule 76 and token "||" resolved as reduce ("||" < '/').
    Conflict between rule 76 and token "&&" resolved as reduce ("&&" < '/').
    Conflict between rule 76 and token "==" resolved as reduce ("==" < '/').
    Conflict between rule 76 and token "!=" resolved as reduce ("!=" < '/').
    Conflict between rule 76 and token ">=" resolved as reduce (">=" < '/').
    Conflict between rule 76 and token "<=" resolved as reduce ("<=" < '/').
    Conflict between rule 76 and token "<<" resolved as reduce ("<<" < '/').
    Conflict between rule 76 and token ">>" resolved as reduce (">>" < '/').
    Conflict between rule 76 and token '>' resolved as reduce ('>' < '/').
    Conflict between rule 76 and token '<' resolved as reduce ('<' < '/').
    Conflict between rule 76 and token '&' resolved as reduce ('&' < '/').
    Conflict between rule 76 and token '|' resolved as reduce ('|' < '/').
    Conflict between rule 76 and token '+' resolved as reduce ('+' < '/').
    Conflict between rule 76 and token '-' resolved as reduce ('-' < '/').
    Conflict between rule 76 and token '*' resolved as reduce (%left '*').
    Conflict between rule 76 and token '/' resolved as reduce (%left '/').
    Conflict between rule 76 and token '%' resolved as reduce (%left '%').


state 108

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
   77     | expr '%' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']

    $default  reduce using rule 77 (expr)

    Conflict between rule 77 and token "||" resolved as reduce ("||" < '%').
    Conflict between rule 77 and token "&&" resolved as reduce ("&&" < '%').
    Conflict between rule 77 and token "==" resolved as reduce ("==" < '%').
    Conflict between rule 77 and token "!=" resolved as reduce ("!=" < '%').
    Conflict between rule 77 and token ">=" resolved as reduce (">=" < '%').
    Conflict between rule 77 and token "<=" resolved as reduce ("<=" < '%').
    Conflict between rule 77 and token "<<" resolved as reduce ("<<" < '%').
    Conflict between rule 77 and token ">>" resolved as reduce (">>" < '%').
    Conflict between rule 77 and token '>' resolved as reduce ('>' < '%').
    Conflict between rule 77 and token '<' resolved as reduce ('<' < '%').
    Conflict between rule 77 and token '&' resolved as reduce ('&' < '%').
    Conflict between rule 77 and token '|' resolved as reduce ('|' < '%').
    Conflict between rule 77 and token '+' resolved as reduce ('+' < '%').
    Conflict between rule 77 and token '-' resolved as reduce ('-' < '%').
    Conflict between rule 77 and token '*' resolved as reduce (%left '*').
    Conflict between rule 77 and token '/' resolved as reduce (%left '/').
    Conflict between rule 77 and token '%' resolved as reduce (%left '%').


state 109

   14 value_list: value_list . ',' value
   36 decls: type value_list . ';'

    ';'  shift, and go to state 131
    ','  shift, and go to state 24


state 110

   42 statement: "identifier" . '(' args ')' ';'
   43          | "identifier" . '(' ')' ';'
   85 value: "identifier" .  ["+=", "-=", "*=", "/=", "%=", '=']
   86      | "identifier" . '[' expr ']'

    '('  shift, and go to state 132
    '['  shift, and go to state 22

    $default  reduce using rule 85 (value)


state 111

   49 statement: "if" . '(' expr ')' statement
   50          | "if" . '(' expr ')' statement "else" statement

    '('  shift, and go to state 133


state 112

   52 statement: "while" . '(' expr ')' statement

    '('  shift, and go to state 134


state 113

   51 statement: "for" . '(' assign ';' expr ';' assign ')' statement

    '('  shift, and go to state 135


state 114

   53 statement: "switch" . '(' expr ')' '{' state_list '}'

    '('  shift, and go to state 136


state 115

   44 statement: "case" . expr ':'
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 137
    value  go to state 39


state 116

   45 statement: "default" . ':'

    ':'  shift, and go to state 138


state 117

   46 statement: "break" . ';'

    ';'  shift, and go to state 139


state 118

   47 statement: "return" . ';'
   48          | "return" . expr ';'
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    ';'           shift, and go to state 140
    '('           shift, and go to state 37

    expr   go to state 141
    value  go to state 39


state 119

   40 statement: ';' .

    $default  reduce using rule 40 (statement)


state 120

   54 statement: block .

    $default  reduce using rule 54 (statement)


state 121

   31 block: '{' decl_list state_list . '}'

    '}'  shift, and go to state 142


state 122

   31 block: . '{' decl_list state_list '}'
   35 state_list: states .  ['}']
   39 states: states . statement
   40 statement: . ';'
   41          | . assign ';'
   42          | . "identifier" '(' args ')' ';'
   43          | . "identifier" '(' ')' ';'
   44          | . "case" expr ':'
   45          | . "default" ':'
   46          | . "break" ';'
   47          | . "return" ';'
   48          | . "return" expr ';'
   49          | . "if" '(' expr ')' statement
   50          | . "if" '(' expr ')' statement "else" statement
   51          | . "for" '(' assign ';' expr ';' assign ')' statement
   52          | . "while" '(' expr ')' statement
   53          | . "switch" '(' expr ')' '{' state_list '}'
   54          | . block
   55 assign: . value '=' expr
   56       | . value "+=" expr
   57       | . value "-=" expr
   58       | . value "*=" expr
   59       | . value "/=" expr
   60       | . value "%=" expr
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 110
    "if"          shift, and go to state 111
    "while"       shift, and go to state 112
    "for"         shift, and go to state 113
    "switch"      shift, and go to state 114
    "case"        shift, and go to state 115
    "default"     shift, and go to state 116
    "break"       shift, and go to state 117
    "return"      shift, and go to state 118
    ';'           shift, and go to state 119
    '{'           shift, and go to state 43

    $default  reduce using rule 35 (state_list)

    block      go to state 120
    statement  go to state 143
    assign     go to state 124
    value      go to state 125


state 123

   38 states: statement .

    $default  reduce using rule 38 (states)


state 124

   41 statement: assign . ';'

    ';'  shift, and go to state 144


state 125

   55 assign: value . '=' expr
   56       | value . "+=" expr
   57       | value . "-=" expr
   58       | value . "*=" expr
   59       | value . "/=" expr
   60       | value . "%=" expr

    "+="  shift, and go to state 145
    "-="  shift, and go to state 146
    "*="  shift, and go to state 147
    "/="  shift, and go to state 148
    "%="  shift, and go to state 149
    '='   shift, and go to state 150


state 126

   13 value_list: . value
   14           | . value_list ',' value
   37 decls: decls type . value_list ';'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 40

    value_list  go to state 151
    value       go to state 18


state 127

   21 arg: type "identifier" '[' ']' .

    $default  reduce using rule 21 (arg)


state 128

   22 arg: type '&' "identifier" '[' . ']'

    ']'  shift, and go to state 152


state 129

   83 expr: "identifier" '(' args ')' .

    $default  reduce using rule 83 (expr)


state 130

   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'
   88 args: args ',' . expr

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 153
    value  go to state 39


state 131

   36 decls: type value_list ';' .

    $default  reduce using rule 36 (decls)


state 132

   42 statement: "identifier" '(' . args ')' ';'
   43          | "identifier" '(' . ')' ';'
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'
   87 args: . expr
   88     | . args ',' expr

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37
    ')'           shift, and go to state 154

    expr   go to state 89
    value  go to state 39
    args   go to state 155


state 133

   49 statement: "if" '(' . expr ')' statement
   50          | "if" '(' . expr ')' statement "else" statement
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 156
    value  go to state 39


state 134

   52 statement: "while" '(' . expr ')' statement
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 157
    value  go to state 39


state 135

   51 statement: "for" '(' . assign ';' expr ';' assign ')' statement
   55 assign: . value '=' expr
   56       | . value "+=" expr
   57       | . value "-=" expr
   58       | . value "*=" expr
   59       | . value "/=" expr
   60       | . value "%=" expr
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 40

    assign  go to state 158
    value   go to state 125


state 136

   53 statement: "switch" '(' . expr ')' '{' state_list '}'
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 159
    value  go to state 39


state 137

   44 statement: "case" expr . ':'
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74
    ':'   shift, and go to state 160


state 138

   45 statement: "default" ':' .

    $default  reduce using rule 45 (statement)


state 139

   46 statement: "break" ';' .

    $default  reduce using rule 46 (statement)


state 140

   47 statement: "return" ';' .

    $default  reduce using rule 47 (statement)


state 141

   48 statement: "return" expr . ';'
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74
    ';'   shift, and go to state 161


state 142

   31 block: '{' decl_list state_list '}' .

    $default  reduce using rule 31 (block)


state 143

   39 states: states statement .

    $default  reduce using rule 39 (states)


state 144

   41 statement: assign ';' .

    $default  reduce using rule 41 (statement)


state 145

   56 assign: value "+=" . expr
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 162
    value  go to state 39


state 146

   57 assign: value "-=" . expr
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 163
    value  go to state 39


state 147

   58 assign: value "*=" . expr
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 164
    value  go to state 39


state 148

   59 assign: value "/=" . expr
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 165
    value  go to state 39


state 149

   60 assign: value "%=" . expr
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 166
    value  go to state 39


state 150

   55 assign: value '=' . expr
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 167
    value  go to state 39


state 151

   14 value_list: value_list . ',' value
   37 decls: decls type value_list . ';'

    ';'  shift, and go to state 168
    ','  shift, and go to state 24


state 152

   22 arg: type '&' "identifier" '[' ']' .

    $default  reduce using rule 22 (arg)


state 153

   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr
   88 args: args ',' expr .  [')', ',']

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 88 (args)


state 154

   43 statement: "identifier" '(' ')' . ';'

    ';'  shift, and go to state 169


state 155

   42 statement: "identifier" '(' args . ')' ';'
   88 args: args . ',' expr

    ')'  shift, and go to state 170
    ','  shift, and go to state 130


state 156

   49 statement: "if" '(' expr . ')' statement
   50          | "if" '(' expr . ')' statement "else" statement
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74
    ')'   shift, and go to state 171


state 157

   52 statement: "while" '(' expr . ')' statement
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74
    ')'   shift, and go to state 172


state 158

   51 statement: "for" '(' assign . ';' expr ';' assign ')' statement

    ';'  shift, and go to state 173


state 159

   53 statement: "switch" '(' expr . ')' '{' state_list '}'
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74
    ')'   shift, and go to state 174


state 160

   44 statement: "case" expr ':' .

    $default  reduce using rule 44 (statement)


state 161

   48 statement: "return" expr ';' .

    $default  reduce using rule 48 (statement)


state 162

   56 assign: value "+=" expr .  [';', ')']
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 56 (assign)


state 163

   57 assign: value "-=" expr .  [';', ')']
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 57 (assign)


state 164

   58 assign: value "*=" expr .  [';', ')']
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 58 (assign)


state 165

   59 assign: value "/=" expr .  [';', ')']
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 59 (assign)


state 166

   60 assign: value "%=" expr .  [';', ')']
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 60 (assign)


state 167

   55 assign: value '=' expr .  [';', ')']
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74

    $default  reduce using rule 55 (assign)


state 168

   37 decls: decls type value_list ';' .

    $default  reduce using rule 37 (decls)


state 169

   43 statement: "identifier" '(' ')' ';' .

    $default  reduce using rule 43 (statement)


state 170

   42 statement: "identifier" '(' args ')' . ';'

    ';'  shift, and go to state 175


state 171

   31 block: . '{' decl_list state_list '}'
   40 statement: . ';'
   41          | . assign ';'
   42          | . "identifier" '(' args ')' ';'
   43          | . "identifier" '(' ')' ';'
   44          | . "case" expr ':'
   45          | . "default" ':'
   46          | . "break" ';'
   47          | . "return" ';'
   48          | . "return" expr ';'
   49          | . "if" '(' expr ')' statement
   49          | "if" '(' expr ')' . statement
   50          | . "if" '(' expr ')' statement "else" statement
   50          | "if" '(' expr ')' . statement "else" statement
   51          | . "for" '(' assign ';' expr ';' assign ')' statement
   52          | . "while" '(' expr ')' statement
   53          | . "switch" '(' expr ')' '{' state_list '}'
   54          | . block
   55 assign: . value '=' expr
   56       | . value "+=" expr
   57       | . value "-=" expr
   58       | . value "*=" expr
   59       | . value "/=" expr
   60       | . value "%=" expr
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 110
    "if"          shift, and go to state 111
    "while"       shift, and go to state 112
    "for"         shift, and go to state 113
    "switch"      shift, and go to state 114
    "case"        shift, and go to state 115
    "default"     shift, and go to state 116
    "break"       shift, and go to state 117
    "return"      shift, and go to state 118
    ';'           shift, and go to state 119
    '{'           shift, and go to state 43

    block      go to state 120
    statement  go to state 176
    assign     go to state 124
    value      go to state 125


state 172

   31 block: . '{' decl_list state_list '}'
   40 statement: . ';'
   41          | . assign ';'
   42          | . "identifier" '(' args ')' ';'
   43          | . "identifier" '(' ')' ';'
   44          | . "case" expr ':'
   45          | . "default" ':'
   46          | . "break" ';'
   47          | . "return" ';'
   48          | . "return" expr ';'
   49          | . "if" '(' expr ')' statement
   50          | . "if" '(' expr ')' statement "else" statement
   51          | . "for" '(' assign ';' expr ';' assign ')' statement
   52          | . "while" '(' expr ')' statement
   52          | "while" '(' expr ')' . statement
   53          | . "switch" '(' expr ')' '{' state_list '}'
   54          | . block
   55 assign: . value '=' expr
   56       | . value "+=" expr
   57       | . value "-=" expr
   58       | . value "*=" expr
   59       | . value "/=" expr
   60       | . value "%=" expr
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 110
    "if"          shift, and go to state 111
    "while"       shift, and go to state 112
    "for"         shift, and go to state 113
    "switch"      shift, and go to state 114
    "case"        shift, and go to state 115
    "default"     shift, and go to state 116
    "break"       shift, and go to state 117
    "return"      shift, and go to state 118
    ';'           shift, and go to state 119
    '{'           shift, and go to state 43

    block      go to state 120
    statement  go to state 177
    assign     go to state 124
    value      go to state 125


state 173

   51 statement: "for" '(' assign ';' . expr ';' assign ')' statement
   61 expr: . expr "&&" expr
   62     | . expr "||" expr
   63     | . expr "==" expr
   64     | . expr "!=" expr
   65     | . expr '>' expr
   66     | . expr ">=" expr
   67     | . expr '<' expr
   68     | . expr "<=" expr
   69     | . expr '&' expr
   70     | . expr '|' expr
   71     | . expr "<<" expr
   72     | . expr ">>" expr
   73     | . expr '-' expr
   74     | . expr '+' expr
   75     | . expr '*' expr
   76     | . expr '/' expr
   77     | . expr '%' expr
   78     | . '-' expr
   79     | . '(' expr ')'
   80     | . value
   81     | . "ival"
   82     | . "sval"
   83     | . "identifier" '(' args ')'
   84     | . "identifier" '(' ')'
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "ival"        shift, and go to state 33
    "identifier"  shift, and go to state 34
    "sval"        shift, and go to state 35
    '-'           shift, and go to state 36
    '('           shift, and go to state 37

    expr   go to state 178
    value  go to state 39


state 174

   53 statement: "switch" '(' expr ')' . '{' state_list '}'

    '{'  shift, and go to state 179


state 175

   42 statement: "identifier" '(' args ')' ';' .

    $default  reduce using rule 42 (statement)


state 176

   49 statement: "if" '(' expr ')' statement .  ["identifier", "if", "else", "while", "for", "switch", "case", "default", "break", "return", ';', '{', '}']
   50          | "if" '(' expr ')' statement . "else" statement

    "else"  shift, and go to state 180

    "else"    [reduce using rule 49 (statement)]
    $default  reduce using rule 49 (statement)


state 177

   52 statement: "while" '(' expr ')' statement .

    $default  reduce using rule 52 (statement)


state 178

   51 statement: "for" '(' assign ';' expr . ';' assign ')' statement
   61 expr: expr . "&&" expr
   62     | expr . "||" expr
   63     | expr . "==" expr
   64     | expr . "!=" expr
   65     | expr . '>' expr
   66     | expr . ">=" expr
   67     | expr . '<' expr
   68     | expr . "<=" expr
   69     | expr . '&' expr
   70     | expr . '|' expr
   71     | expr . "<<" expr
   72     | expr . ">>" expr
   73     | expr . '-' expr
   74     | expr . '+' expr
   75     | expr . '*' expr
   76     | expr . '/' expr
   77     | expr . '%' expr

    "||"  shift, and go to state 58
    "&&"  shift, and go to state 59
    "=="  shift, and go to state 60
    "!="  shift, and go to state 61
    ">="  shift, and go to state 62
    "<="  shift, and go to state 63
    "<<"  shift, and go to state 64
    ">>"  shift, and go to state 65
    '>'   shift, and go to state 66
    '<'   shift, and go to state 67
    '&'   shift, and go to state 68
    '|'   shift, and go to state 69
    '+'   shift, and go to state 70
    '-'   shift, and go to state 71
    '*'   shift, and go to state 72
    '/'   shift, and go to state 73
    '%'   shift, and go to state 74
    ';'   shift, and go to state 181


state 179

   31 block: . '{' decl_list state_list '}'
   34 state_list: .  ['}']
   35           | . states
   38 states: . statement
   39       | . states statement
   40 statement: . ';'
   41          | . assign ';'
   42          | . "identifier" '(' args ')' ';'
   43          | . "identifier" '(' ')' ';'
   44          | . "case" expr ':'
   45          | . "default" ':'
   46          | . "break" ';'
   47          | . "return" ';'
   48          | . "return" expr ';'
   49          | . "if" '(' expr ')' statement
   50          | . "if" '(' expr ')' statement "else" statement
   51          | . "for" '(' assign ';' expr ';' assign ')' statement
   52          | . "while" '(' expr ')' statement
   53          | . "switch" '(' expr ')' '{' state_list '}'
   53          | "switch" '(' expr ')' '{' . state_list '}'
   54          | . block
   55 assign: . value '=' expr
   56       | . value "+=" expr
   57       | . value "-=" expr
   58       | . value "*=" expr
   59       | . value "/=" expr
   60       | . value "%=" expr
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 110
    "if"          shift, and go to state 111
    "while"       shift, and go to state 112
    "for"         shift, and go to state 113
    "switch"      shift, and go to state 114
    "case"        shift, and go to state 115
    "default"     shift, and go to state 116
    "break"       shift, and go to state 117
    "return"      shift, and go to state 118
    ';'           shift, and go to state 119
    '{'           shift, and go to state 43

    $default  reduce using rule 34 (state_list)

    block       go to state 120
    state_list  go to state 182
    states      go to state 122
    statement   go to state 123
    assign      go to state 124
    value       go to state 125


state 180

   31 block: . '{' decl_list state_list '}'
   40 statement: . ';'
   41          | . assign ';'
   42          | . "identifier" '(' args ')' ';'
   43          | . "identifier" '(' ')' ';'
   44          | . "case" expr ':'
   45          | . "default" ':'
   46          | . "break" ';'
   47          | . "return" ';'
   48          | . "return" expr ';'
   49          | . "if" '(' expr ')' statement
   50          | . "if" '(' expr ')' statement "else" statement
   50          | "if" '(' expr ')' statement "else" . statement
   51          | . "for" '(' assign ';' expr ';' assign ')' statement
   52          | . "while" '(' expr ')' statement
   53          | . "switch" '(' expr ')' '{' state_list '}'
   54          | . block
   55 assign: . value '=' expr
   56       | . value "+=" expr
   57       | . value "-=" expr
   58       | . value "*=" expr
   59       | . value "/=" expr
   60       | . value "%=" expr
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 110
    "if"          shift, and go to state 111
    "while"       shift, and go to state 112
    "for"         shift, and go to state 113
    "switch"      shift, and go to state 114
    "case"        shift, and go to state 115
    "default"     shift, and go to state 116
    "break"       shift, and go to state 117
    "return"      shift, and go to state 118
    ';'           shift, and go to state 119
    '{'           shift, and go to state 43

    block      go to state 120
    statement  go to state 183
    assign     go to state 124
    value      go to state 125


state 181

   51 statement: "for" '(' assign ';' expr ';' . assign ')' statement
   55 assign: . value '=' expr
   56       | . value "+=" expr
   57       | . value "-=" expr
   58       | . value "*=" expr
   59       | . value "/=" expr
   60       | . value "%=" expr
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 40

    assign  go to state 184
    value   go to state 125


state 182

   53 statement: "switch" '(' expr ')' '{' state_list . '}'

    '}'  shift, and go to state 185


state 183

   50 statement: "if" '(' expr ')' statement "else" statement .

    $default  reduce using rule 50 (statement)


state 184

   51 statement: "for" '(' assign ';' expr ';' assign . ')' statement

    ')'  shift, and go to state 186


state 185

   53 statement: "switch" '(' expr ')' '{' state_list '}' .

    $default  reduce using rule 53 (statement)


state 186

   31 block: . '{' decl_list state_list '}'
   40 statement: . ';'
   41          | . assign ';'
   42          | . "identifier" '(' args ')' ';'
   43          | . "identifier" '(' ')' ';'
   44          | . "case" expr ':'
   45          | . "default" ':'
   46          | . "break" ';'
   47          | . "return" ';'
   48          | . "return" expr ';'
   49          | . "if" '(' expr ')' statement
   50          | . "if" '(' expr ')' statement "else" statement
   51          | . "for" '(' assign ';' expr ';' assign ')' statement
   51          | "for" '(' assign ';' expr ';' assign ')' . statement
   52          | . "while" '(' expr ')' statement
   53          | . "switch" '(' expr ')' '{' state_list '}'
   54          | . block
   55 assign: . value '=' expr
   56       | . value "+=" expr
   57       | . value "-=" expr
   58       | . value "*=" expr
   59       | . value "/=" expr
   60       | . value "%=" expr
   85 value: . "identifier"
   86      | . "identifier" '[' expr ']'

    "identifier"  shift, and go to state 110
    "if"          shift, and go to state 111
    "while"       shift, and go to state 112
    "for"         shift, and go to state 113
    "switch"      shift, and go to state 114
    "case"        shift, and go to state 115
    "default"     shift, and go to state 116
    "break"       shift, and go to state 117
    "return"      shift, and go to state 118
    ';'           shift, and go to state 119
    '{'           shift, and go to state 43

    block      go to state 120
    statement  go to state 187
    assign     go to state 124
    value      go to state 125


state 187

   51 statement: "for" '(' assign ';' expr ';' assign ')' statement .

    $default  reduce using rule 51 (statement)