diff WindowsOnly/WinScript2/script-parser.output @ 0:db40c85cad7a default tip

upload sample source
author nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp>
date Mon, 09 May 2011 03:11:59 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/WindowsOnly/WinScript2/script-parser.output	Mon May 09 03:11:59 2011 +0900
@@ -0,0 +1,4539 @@
+State 166 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 value_list: value
+   12           | value_list ',' value
+
+   13 arglist: arg
+   14        | arglist ',' arg
+
+   15 arg: type
+   16    | type '&'
+   17    | type "identifier"
+   18    | type '&' "identifier"
+   19    | type "identifier" '[' ']'
+   20    | type '&' "identifier" '[' ']'
+
+   21 function: type "identifier" '(' ')' block
+   22         | type "identifier" '(' arglist ')' block
+   23         | "void" "identifier" '(' ')' block
+   24         | "void" "identifier" '(' arglist ')' block
+
+   25 type: "int"
+   26     | "string"
+
+   27 block: '{' decl_list state_list '}'
+
+   28 decl_list: /* empty */
+   29          | decls
+
+   30 state_list: /* empty */
+   31           | states
+
+   32 decls: type value_list ';'
+   33      | decls type value_list ';'
+
+   34 states: statement
+   35       | states statement
+
+   36 statement: ';'
+   37          | assign ';'
+   38          | "identifier" '(' args ')' ';'
+   39          | "identifier" '(' ')' ';'
+   40          | "case" expr ':'
+   41          | "default" ':'
+   42          | "break" ';'
+   43          | "return" ';'
+   44          | "return" expr ';'
+   45          | "if" '(' expr ')' statement
+   46          | "if" '(' expr ')' statement "else" statement
+   47          | "for" '(' assign ';' expr ';' assign ')' statement
+   48          | "while" '(' expr ')' statement
+   49          | "switch" '(' expr ')' '{' state_list '}'
+   50          | block
+
+   51 assign: value '=' expr
+   52       | value "+=" expr
+   53       | value "-=" expr
+   54       | value "*=" expr
+   55       | value "/=" expr
+   56       | value "%=" expr
+
+   57 expr: expr "&&" expr
+   58     | expr "||" expr
+   59     | expr "==" expr
+   60     | 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
+   75     | '(' expr ')'
+   76     | value
+   77     | "ival"
+   78     | "sval"
+   79     | "identifier" '(' args ')'
+   80     | "identifier" '(' ')'
+
+   81 value: "identifier"
+   82      | "identifier" '[' expr ']'
+
+   83 args: expr
+   84     | args ',' expr
+
+
+Terminals, with rules where they appear
+
+"end of file" (0) 0
+'%' (37) 73
+'&' (38) 16 18 20 65
+'(' (40) 7 8 9 10 21 22 23 24 38 39 45 46 47 48 49 75 79 80
+')' (41) 7 8 9 10 21 22 23 24 38 39 45 46 47 48 49 75 79 80
+'*' (42) 71
+'+' (43) 70
+',' (44) 12 14 84
+'-' (45) 69 74
+'/' (47) 72
+':' (58) 40 41
+';' (59) 3 6 7 8 9 10 32 33 36 37 38 39 42 43 44 47
+'<' (60) 63
+'=' (61) 51
+'>' (62) 61
+'[' (91) 19 20 82
+']' (93) 19 20 82
+'{' (123) 27 49
+'|' (124) 66
+'}' (125) 27 49
+error (256) 3
+"ival" (258) 77
+"identifier" (259) 7 8 9 10 17 18 19 20 21 22 23 24 38 39 79 80 81
+    82
+"sval" (260) 78
+"||" (261) 58
+"&&" (262) 57
+"==" (263) 59
+"!=" (264) 60
+">=" (265) 62
+"<=" (266) 64
+"<<" (267) 67
+">>" (268) 68
+"+=" (269) 52
+"-=" (270) 53
+"*=" (271) 54
+"/=" (272) 55
+"%=" (273) 56
+"if" (274) 45 46
+"else" (275) 46
+"while" (276) 48
+"for" (277) 47
+"switch" (278) 49
+"case" (279) 40
+"default" (280) 41
+"break" (281) 42
+"return" (282) 43 44
+"int" (283) 25
+"string" (284) 26
+"void" (285) 9 10 23 24
+NEG (286)
+
+
+Nonterminals, with rules where they appear
+
+$accept (51)
+    on left: 0
+unit (52)
+    on left: 1 2, on right: 0 2
+define_or_state (53)
+    on left: 3 4 5, on right: 1 2
+declaration (54)
+    on left: 6 7 8 9 10, on right: 5
+value_list (55)
+    on left: 11 12, on right: 6 12 32 33
+arglist (56)
+    on left: 13 14, on right: 8 10 14 22 24
+arg (57)
+    on left: 15 16 17 18 19 20, on right: 13 14
+function (58)
+    on left: 21 22 23 24, on right: 4
+type (59)
+    on left: 25 26, on right: 6 7 8 15 16 17 18 19 20 21 22 32 33
+block (60)
+    on left: 27, on right: 21 22 23 24 50
+decl_list (61)
+    on left: 28 29, on right: 27
+state_list (62)
+    on left: 30 31, on right: 27 49
+decls (63)
+    on left: 32 33, on right: 29 33
+states (64)
+    on left: 34 35, on right: 31 35
+statement (65)
+    on left: 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50,
+    on right: 34 35 45 46 47 48
+assign (66)
+    on left: 51 52 53 54 55 56, on right: 37 47
+expr (67)
+    on left: 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
+    75 76 77 78 79 80, on right: 40 44 45 46 47 48 49 51 52 53 54 55
+    56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 82
+    83 84
+value (68)
+    on left: 81 82, on right: 11 12 51 52 53 54 55 56 76
+args (69)
+    on left: 83 84, on right: 38 79 84
+
+
+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 ')' ';'
+   21 function: . type "identifier" '(' ')' block
+   22         | . type "identifier" '(' arglist ')' block
+   23         | . "void" "identifier" '(' ')' block
+   24         | . "void" "identifier" '(' arglist ')' block
+   25 type: . "int"
+   26     | . "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
+
+    unit             go to state 5
+    define_or_state  go to state 6
+    declaration      go to state 7
+    function         go to state 8
+    type             go to state 9
+
+
+state 1
+
+    3 define_or_state: error . ';'
+
+    ';'  shift, and go to state 10
+
+
+state 2
+
+   25 type: "int" .
+
+    $default  reduce using rule 25 (type)
+
+
+state 3
+
+   26 type: "string" .
+
+    $default  reduce using rule 26 (type)
+
+
+state 4
+
+    9 declaration: "void" . "identifier" '(' ')' ';'
+   10            | "void" . "identifier" '(' arglist ')' ';'
+   23 function: "void" . "identifier" '(' ')' block
+   24         | "void" . "identifier" '(' arglist ')' block
+
+    "identifier"  shift, and go to state 11
+
+
+state 5
+
+    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 ')' ';'
+   21 function: . type "identifier" '(' ')' block
+   22         | . type "identifier" '(' arglist ')' block
+   23         | . "void" "identifier" '(' ')' block
+   24         | . "void" "identifier" '(' arglist ')' block
+   25 type: . "int"
+   26     | . "string"
+
+    "end of file"  shift, and go to state 12
+    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
+
+    define_or_state  go to state 13
+    declaration      go to state 7
+    function         go to state 8
+    type             go to state 9
+
+
+state 6
+
+    1 unit: define_or_state .
+
+    $default  reduce using rule 1 (unit)
+
+
+state 7
+
+    5 define_or_state: declaration .
+
+    $default  reduce using rule 5 (define_or_state)
+
+
+state 8
+
+    4 define_or_state: function .
+
+    $default  reduce using rule 4 (define_or_state)
+
+
+state 9
+
+    6 declaration: type . value_list ';'
+    7            | type . "identifier" '(' ')' ';'
+    8            | type . "identifier" '(' arglist ')' ';'
+   11 value_list: . value
+   12           | . value_list ',' value
+   21 function: type . "identifier" '(' ')' block
+   22         | type . "identifier" '(' arglist ')' block
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 14
+
+    value_list  go to state 15
+    value       go to state 16
+
+
+state 10
+
+    3 define_or_state: error ';' .
+
+    $default  reduce using rule 3 (define_or_state)
+
+
+state 11
+
+    9 declaration: "void" "identifier" . '(' ')' ';'
+   10            | "void" "identifier" . '(' arglist ')' ';'
+   23 function: "void" "identifier" . '(' ')' block
+   24         | "void" "identifier" . '(' arglist ')' block
+
+    '('  shift, and go to state 17
+
+
+state 12
+
+    0 $accept: unit "end of file" .
+
+    $default  accept
+
+
+state 13
+
+    2 unit: unit define_or_state .
+
+    $default  reduce using rule 2 (unit)
+
+
+state 14
+
+    7 declaration: type "identifier" . '(' ')' ';'
+    8            | type "identifier" . '(' arglist ')' ';'
+   21 function: type "identifier" . '(' ')' block
+   22         | type "identifier" . '(' arglist ')' block
+   81 value: "identifier" .  [';', ',']
+   82      | "identifier" . '[' expr ']'
+
+    '('  shift, and go to state 18
+    '['  shift, and go to state 19
+
+    $default  reduce using rule 81 (value)
+
+
+state 15
+
+    6 declaration: type value_list . ';'
+   12 value_list: value_list . ',' value
+
+    ';'  shift, and go to state 20
+    ','  shift, and go to state 21
+
+
+state 16
+
+   11 value_list: value .
+
+    $default  reduce using rule 11 (value_list)
+
+
+state 17
+
+    9 declaration: "void" "identifier" '(' . ')' ';'
+   10            | "void" "identifier" '(' . arglist ')' ';'
+   13 arglist: . arg
+   14        | . arglist ',' arg
+   15 arg: . type
+   16    | . type '&'
+   17    | . type "identifier"
+   18    | . type '&' "identifier"
+   19    | . type "identifier" '[' ']'
+   20    | . type '&' "identifier" '[' ']'
+   23 function: "void" "identifier" '(' . ')' block
+   24         | "void" "identifier" '(' . arglist ')' block
+   25 type: . "int"
+   26     | . "string"
+
+    "int"     shift, and go to state 2
+    "string"  shift, and go to state 3
+    ')'       shift, and go to state 22
+
+    arglist  go to state 23
+    arg      go to state 24
+    type     go to state 25
+
+
+state 18
+
+    7 declaration: type "identifier" '(' . ')' ';'
+    8            | type "identifier" '(' . arglist ')' ';'
+   13 arglist: . arg
+   14        | . arglist ',' arg
+   15 arg: . type
+   16    | . type '&'
+   17    | . type "identifier"
+   18    | . type '&' "identifier"
+   19    | . type "identifier" '[' ']'
+   20    | . type '&' "identifier" '[' ']'
+   21 function: type "identifier" '(' . ')' block
+   22         | type "identifier" '(' . arglist ')' block
+   25 type: . "int"
+   26     | . "string"
+
+    "int"     shift, and go to state 2
+    "string"  shift, and go to state 3
+    ')'       shift, and go to state 26
+
+    arglist  go to state 27
+    arg      go to state 24
+    type     go to state 25
+
+
+state 19
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+   82      | "identifier" '[' . expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 33
+    value  go to state 34
+
+
+state 20
+
+    6 declaration: type value_list ';' .
+
+    $default  reduce using rule 6 (declaration)
+
+
+state 21
+
+   12 value_list: value_list ',' . value
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 35
+
+    value  go to state 36
+
+
+state 22
+
+    9 declaration: "void" "identifier" '(' ')' . ';'
+   23 function: "void" "identifier" '(' ')' . block
+   27 block: . '{' decl_list state_list '}'
+
+    ';'  shift, and go to state 37
+    '{'  shift, and go to state 38
+
+    block  go to state 39
+
+
+state 23
+
+   10 declaration: "void" "identifier" '(' arglist . ')' ';'
+   14 arglist: arglist . ',' arg
+   24 function: "void" "identifier" '(' arglist . ')' block
+
+    ')'  shift, and go to state 40
+    ','  shift, and go to state 41
+
+
+state 24
+
+   13 arglist: arg .
+
+    $default  reduce using rule 13 (arglist)
+
+
+state 25
+
+   15 arg: type .  [')', ',']
+   16    | type . '&'
+   17    | type . "identifier"
+   18    | type . '&' "identifier"
+   19    | type . "identifier" '[' ']'
+   20    | type . '&' "identifier" '[' ']'
+
+    "identifier"  shift, and go to state 42
+    '&'           shift, and go to state 43
+
+    $default  reduce using rule 15 (arg)
+
+
+state 26
+
+    7 declaration: type "identifier" '(' ')' . ';'
+   21 function: type "identifier" '(' ')' . block
+   27 block: . '{' decl_list state_list '}'
+
+    ';'  shift, and go to state 44
+    '{'  shift, and go to state 38
+
+    block  go to state 45
+
+
+state 27
+
+    8 declaration: type "identifier" '(' arglist . ')' ';'
+   14 arglist: arglist . ',' arg
+   22 function: type "identifier" '(' arglist . ')' block
+
+    ')'  shift, and go to state 46
+    ','  shift, and go to state 41
+
+
+state 28
+
+   77 expr: "ival" .
+
+    $default  reduce using rule 77 (expr)
+
+
+state 29
+
+   79 expr: "identifier" . '(' args ')'
+   80     | "identifier" . '(' ')'
+   81 value: "identifier" .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
+   82      | "identifier" . '[' expr ']'
+
+    '('  shift, and go to state 47
+    '['  shift, and go to state 19
+
+    $default  reduce using rule 81 (value)
+
+
+state 30
+
+   78 expr: "sval" .
+
+    $default  reduce using rule 78 (expr)
+
+
+state 31
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   74     | '-' . expr
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 48
+    value  go to state 34
+
+
+state 32
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   75     | '(' . expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 49
+    value  go to state 34
+
+
+state 33
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+   82 value: "identifier" '[' expr . ']'
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+
+state 34
+
+   76 expr: value .
+
+    $default  reduce using rule 76 (expr)
+
+
+state 35
+
+   81 value: "identifier" .  ["+=", "-=", "*=", "/=", "%=", ';', ',', '=']
+   82      | "identifier" . '[' expr ']'
+
+    '['  shift, and go to state 19
+
+    $default  reduce using rule 81 (value)
+
+
+state 36
+
+   12 value_list: value_list ',' value .
+
+    $default  reduce using rule 12 (value_list)
+
+
+state 37
+
+    9 declaration: "void" "identifier" '(' ')' ';' .
+
+    $default  reduce using rule 9 (declaration)
+
+
+state 38
+
+   25 type: . "int"
+   26     | . "string"
+   27 block: '{' . decl_list state_list '}'
+   28 decl_list: .  ["identifier", "if", "while", "for", "switch", "case", "default", "break", "return", ';', '{', '}']
+   29          | . decls
+   32 decls: . type value_list ';'
+   33      | . decls type value_list ';'
+
+    "int"     shift, and go to state 2
+    "string"  shift, and go to state 3
+
+    $default  reduce using rule 28 (decl_list)
+
+    type       go to state 68
+    decl_list  go to state 69
+    decls      go to state 70
+
+
+state 39
+
+   23 function: "void" "identifier" '(' ')' block .
+
+    $default  reduce using rule 23 (function)
+
+
+state 40
+
+   10 declaration: "void" "identifier" '(' arglist ')' . ';'
+   24 function: "void" "identifier" '(' arglist ')' . block
+   27 block: . '{' decl_list state_list '}'
+
+    ';'  shift, and go to state 71
+    '{'  shift, and go to state 38
+
+    block  go to state 72
+
+
+state 41
+
+   14 arglist: arglist ',' . arg
+   15 arg: . type
+   16    | . type '&'
+   17    | . type "identifier"
+   18    | . type '&' "identifier"
+   19    | . type "identifier" '[' ']'
+   20    | . type '&' "identifier" '[' ']'
+   25 type: . "int"
+   26     | . "string"
+
+    "int"     shift, and go to state 2
+    "string"  shift, and go to state 3
+
+    arg   go to state 73
+    type  go to state 25
+
+
+state 42
+
+   17 arg: type "identifier" .  [')', ',']
+   19    | type "identifier" . '[' ']'
+
+    '['  shift, and go to state 74
+
+    $default  reduce using rule 17 (arg)
+
+
+state 43
+
+   16 arg: type '&' .  [')', ',']
+   18    | type '&' . "identifier"
+   20    | type '&' . "identifier" '[' ']'
+
+    "identifier"  shift, and go to state 75
+
+    $default  reduce using rule 16 (arg)
+
+
+state 44
+
+    7 declaration: type "identifier" '(' ')' ';' .
+
+    $default  reduce using rule 7 (declaration)
+
+
+state 45
+
+   21 function: type "identifier" '(' ')' block .
+
+    $default  reduce using rule 21 (function)
+
+
+state 46
+
+    8 declaration: type "identifier" '(' arglist ')' . ';'
+   22 function: type "identifier" '(' arglist ')' . block
+   27 block: . '{' decl_list state_list '}'
+
+    ';'  shift, and go to state 76
+    '{'  shift, and go to state 38
+
+    block  go to state 77
+
+
+state 47
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   79     | "identifier" '(' . args ')'
+   80     | . "identifier" '(' ')'
+   80     | "identifier" '(' . ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+   83 args: . expr
+   84     | . args ',' expr
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+    ')'           shift, and go to state 78
+
+    expr   go to state 79
+    value  go to state 34
+    args   go to state 80
+
+
+state 48
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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 .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
+
+    $default  reduce using rule 74 (expr)
+
+    Conflict between rule 74 and token "||" resolved as reduce ("||" < NEG).
+    Conflict between rule 74 and token "&&" resolved as reduce ("&&" < NEG).
+    Conflict between rule 74 and token "==" resolved as reduce ("==" < NEG).
+    Conflict between rule 74 and token "!=" resolved as reduce ("!=" < NEG).
+    Conflict between rule 74 and token ">=" resolved as reduce (">=" < NEG).
+    Conflict between rule 74 and token "<=" resolved as reduce ("<=" < NEG).
+    Conflict between rule 74 and token "<<" resolved as reduce ("<<" < NEG).
+    Conflict between rule 74 and token ">>" resolved as reduce (">>" < NEG).
+    Conflict between rule 74 and token '>' resolved as reduce ('>' < NEG).
+    Conflict between rule 74 and token '<' resolved as reduce ('<' < NEG).
+    Conflict between rule 74 and token '&' resolved as reduce ('&' < NEG).
+    Conflict between rule 74 and token '|' resolved as reduce ('|' < NEG).
+    Conflict between rule 74 and token '+' resolved as reduce ('+' < NEG).
+    Conflict between rule 74 and token '-' resolved as reduce ('-' < NEG).
+    Conflict between rule 74 and token '*' resolved as reduce ('*' < NEG).
+    Conflict between rule 74 and token '/' resolved as reduce ('/' < NEG).
+    Conflict between rule 74 and token '%' resolved as reduce ('%' < NEG).
+
+
+state 49
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+   75     | '(' expr . ')'
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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 81
+
+
+state 50
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   58     | expr "||" . expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 82
+    value  go to state 34
+
+
+state 51
+
+   57 expr: . expr "&&" expr
+   57     | expr "&&" . expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 83
+    value  go to state 34
+
+
+state 52
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   59     | expr "==" . expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 84
+    value  go to state 34
+
+
+state 53
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . expr "!=" expr
+   60     | 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 85
+    value  go to state 34
+
+
+state 54
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . expr "!=" expr
+   61     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 86
+    value  go to state 34
+
+
+state 55
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . expr "!=" expr
+   61     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 87
+    value  go to state 34
+
+
+state 56
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . expr "!=" expr
+   61     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 88
+    value  go to state 34
+
+
+state 57
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   68     | expr ">>" . expr
+   69     | . expr '-' expr
+   70     | . expr '+' expr
+   71     | . expr '*' expr
+   72     | . expr '/' expr
+   73     | . expr '%' expr
+   74     | . '-' expr
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 89
+    value  go to state 34
+
+
+state 58
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . expr "!=" expr
+   61     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 90
+    value  go to state 34
+
+
+state 59
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . expr "!=" expr
+   61     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 91
+    value  go to state 34
+
+
+state 60
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . expr "!=" expr
+   61     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 92
+    value  go to state 34
+
+
+state 61
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . expr "!=" expr
+   61     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 93
+    value  go to state 34
+
+
+state 62
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   70     | expr '+' . expr
+   71     | . expr '*' expr
+   72     | . expr '/' expr
+   73     | . expr '%' expr
+   74     | . '-' expr
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 94
+    value  go to state 34
+
+
+state 63
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   69     | expr '-' . expr
+   70     | . expr '+' expr
+   71     | . expr '*' expr
+   72     | . expr '/' expr
+   73     | . expr '%' expr
+   74     | . '-' expr
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 95
+    value  go to state 34
+
+
+state 64
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   71     | expr '*' . expr
+   72     | . expr '/' expr
+   73     | . expr '%' expr
+   74     | . '-' expr
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 96
+    value  go to state 34
+
+
+state 65
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   72     | expr '/' . expr
+   73     | . expr '%' expr
+   74     | . '-' expr
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 97
+    value  go to state 34
+
+
+state 66
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   73     | expr '%' . expr
+   74     | . '-' expr
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 98
+    value  go to state 34
+
+
+state 67
+
+   82 value: "identifier" '[' expr ']' .
+
+    $default  reduce using rule 82 (value)
+
+
+state 68
+
+   11 value_list: . value
+   12           | . value_list ',' value
+   32 decls: type . value_list ';'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 35
+
+    value_list  go to state 99
+    value       go to state 16
+
+
+state 69
+
+   27 block: . '{' decl_list state_list '}'
+   27      | '{' decl_list . state_list '}'
+   30 state_list: .  ['}']
+   31           | . states
+   34 states: . statement
+   35       | . states statement
+   36 statement: . ';'
+   37          | . assign ';'
+   38          | . "identifier" '(' args ')' ';'
+   39          | . "identifier" '(' ')' ';'
+   40          | . "case" expr ':'
+   41          | . "default" ':'
+   42          | . "break" ';'
+   43          | . "return" ';'
+   44          | . "return" expr ';'
+   45          | . "if" '(' expr ')' statement
+   46          | . "if" '(' expr ')' statement "else" statement
+   47          | . "for" '(' assign ';' expr ';' assign ')' statement
+   48          | . "while" '(' expr ')' statement
+   49          | . "switch" '(' expr ')' '{' state_list '}'
+   50          | . block
+   51 assign: . value '=' expr
+   52       | . value "+=" expr
+   53       | . value "-=" expr
+   54       | . value "*=" expr
+   55       | . value "/=" expr
+   56       | . value "%=" expr
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 100
+    "if"          shift, and go to state 101
+    "while"       shift, and go to state 102
+    "for"         shift, and go to state 103
+    "switch"      shift, and go to state 104
+    "case"        shift, and go to state 105
+    "default"     shift, and go to state 106
+    "break"       shift, and go to state 107
+    "return"      shift, and go to state 108
+    ';'           shift, and go to state 109
+    '{'           shift, and go to state 38
+
+    $default  reduce using rule 30 (state_list)
+
+    block       go to state 110
+    state_list  go to state 111
+    states      go to state 112
+    statement   go to state 113
+    assign      go to state 114
+    value       go to state 115
+
+
+state 70
+
+   25 type: . "int"
+   26     | . "string"
+   29 decl_list: decls .  ["identifier", "if", "while", "for", "switch", "case", "default", "break", "return", ';', '{', '}']
+   33 decls: decls . type value_list ';'
+
+    "int"     shift, and go to state 2
+    "string"  shift, and go to state 3
+
+    $default  reduce using rule 29 (decl_list)
+
+    type  go to state 116
+
+
+state 71
+
+   10 declaration: "void" "identifier" '(' arglist ')' ';' .
+
+    $default  reduce using rule 10 (declaration)
+
+
+state 72
+
+   24 function: "void" "identifier" '(' arglist ')' block .
+
+    $default  reduce using rule 24 (function)
+
+
+state 73
+
+   14 arglist: arglist ',' arg .
+
+    $default  reduce using rule 14 (arglist)
+
+
+state 74
+
+   19 arg: type "identifier" '[' . ']'
+
+    ']'  shift, and go to state 117
+
+
+state 75
+
+   18 arg: type '&' "identifier" .  [')', ',']
+   20    | type '&' "identifier" . '[' ']'
+
+    '['  shift, and go to state 118
+
+    $default  reduce using rule 18 (arg)
+
+
+state 76
+
+    8 declaration: type "identifier" '(' arglist ')' ';' .
+
+    $default  reduce using rule 8 (declaration)
+
+
+state 77
+
+   22 function: type "identifier" '(' arglist ')' block .
+
+    $default  reduce using rule 22 (function)
+
+
+state 78
+
+   80 expr: "identifier" '(' ')' .
+
+    $default  reduce using rule 80 (expr)
+
+
+state 79
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+   83 args: expr .  [')', ',']
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 83 (args)
+
+
+state 80
+
+   79 expr: "identifier" '(' args . ')'
+   84 args: args . ',' expr
+
+    ')'  shift, and go to state 119
+    ','  shift, and go to state 120
+
+
+state 81
+
+   75 expr: '(' expr ')' .
+
+    $default  reduce using rule 75 (expr)
+
+
+state 82
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr  ["||", ';', ')', ',', ']', ':']
+   58     | expr "||" expr .  ["||", ';', ')', ',', ']', ':']
+   59     | expr . "==" expr
+   60     | 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
+
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 58 (expr)
+
+    Conflict between rule 58 and token "||" resolved as reduce (%left "||").
+    Conflict between rule 58 and token "&&" resolved as shift ("||" < "&&").
+    Conflict between rule 58 and token "==" resolved as shift ("||" < "==").
+    Conflict between rule 58 and token "!=" resolved as shift ("||" < "!=").
+    Conflict between rule 58 and token ">=" resolved as shift ("||" < ">=").
+    Conflict between rule 58 and token "<=" resolved as shift ("||" < "<=").
+    Conflict between rule 58 and token "<<" resolved as shift ("||" < "<<").
+    Conflict between rule 58 and token ">>" resolved as shift ("||" < ">>").
+    Conflict between rule 58 and token '>' resolved as shift ("||" < '>').
+    Conflict between rule 58 and token '<' resolved as shift ("||" < '<').
+    Conflict between rule 58 and token '&' resolved as shift ("||" < '&').
+    Conflict between rule 58 and token '|' resolved as shift ("||" < '|').
+    Conflict between rule 58 and token '+' resolved as shift ("||" < '+').
+    Conflict between rule 58 and token '-' resolved as shift ("||" < '-').
+    Conflict between rule 58 and token '*' resolved as shift ("||" < '*').
+    Conflict between rule 58 and token '/' resolved as shift ("||" < '/').
+    Conflict between rule 58 and token '%' resolved as shift ("||" < '%').
+
+
+state 83
+
+   57 expr: expr . "&&" expr  ["||", "&&", ';', ')', ',', ']', ':']
+   57     | expr "&&" expr .  ["||", "&&", ';', ')', ',', ']', ':']
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 57 (expr)
+
+    Conflict between rule 57 and token "||" resolved as reduce ("||" < "&&").
+    Conflict between rule 57 and token "&&" resolved as reduce (%left "&&").
+    Conflict between rule 57 and token "==" resolved as shift ("&&" < "==").
+    Conflict between rule 57 and token "!=" resolved as shift ("&&" < "!=").
+    Conflict between rule 57 and token ">=" resolved as shift ("&&" < ">=").
+    Conflict between rule 57 and token "<=" resolved as shift ("&&" < "<=").
+    Conflict between rule 57 and token "<<" resolved as shift ("&&" < "<<").
+    Conflict between rule 57 and token ">>" resolved as shift ("&&" < ">>").
+    Conflict between rule 57 and token '>' resolved as shift ("&&" < '>').
+    Conflict between rule 57 and token '<' resolved as shift ("&&" < '<').
+    Conflict between rule 57 and token '&' resolved as shift ("&&" < '&').
+    Conflict between rule 57 and token '|' resolved as shift ("&&" < '|').
+    Conflict between rule 57 and token '+' resolved as shift ("&&" < '+').
+    Conflict between rule 57 and token '-' resolved as shift ("&&" < '-').
+    Conflict between rule 57 and token '*' resolved as shift ("&&" < '*').
+    Conflict between rule 57 and token '/' resolved as shift ("&&" < '/').
+    Conflict between rule 57 and token '%' resolved as shift ("&&" < '%').
+
+
+state 84
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr  ["||", "&&", ';', ')', ',', ']', ':']
+   59     | expr "==" expr .  ["||", "&&", ';', ')', ',', ']', ':']
+   60     | 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
+
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '&'   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
+
+    "=="  error (nonassociative)
+    "!="  error (nonassociative)
+    ">="  error (nonassociative)
+    "<="  error (nonassociative)
+    '>'   error (nonassociative)
+    '<'   error (nonassociative)
+
+    $default  reduce using rule 59 (expr)
+
+    Conflict between rule 59 and token "||" resolved as reduce ("||" < "==").
+    Conflict between rule 59 and token "&&" resolved as reduce ("&&" < "==").
+    Conflict between rule 59 and token "==" resolved as an error (%nonassoc "==").
+    Conflict between rule 59 and token "!=" resolved as an error (%nonassoc "!=").
+    Conflict between rule 59 and token ">=" resolved as an error (%nonassoc ">=").
+    Conflict between rule 59 and token "<=" resolved as an error (%nonassoc "<=").
+    Conflict between rule 59 and token "<<" resolved as shift ("==" < "<<").
+    Conflict between rule 59 and token ">>" resolved as shift ("==" < ">>").
+    Conflict between rule 59 and token '>' resolved as an error (%nonassoc '>').
+    Conflict between rule 59 and token '<' resolved as an error (%nonassoc '<').
+    Conflict between rule 59 and token '&' resolved as shift ("==" < '&').
+    Conflict between rule 59 and token '|' resolved as shift ("==" < '|').
+    Conflict between rule 59 and token '+' resolved as shift ("==" < '+').
+    Conflict between rule 59 and token '-' resolved as shift ("==" < '-').
+    Conflict between rule 59 and token '*' resolved as shift ("==" < '*').
+    Conflict between rule 59 and token '/' resolved as shift ("==" < '/').
+    Conflict between rule 59 and token '%' resolved as shift ("==" < '%').
+
+
+state 85
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | expr . "!=" expr  ["||", "&&", ';', ')', ',', ']', ':']
+   60     | 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
+
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '&'   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
+
+    "=="  error (nonassociative)
+    "!="  error (nonassociative)
+    ">="  error (nonassociative)
+    "<="  error (nonassociative)
+    '>'   error (nonassociative)
+    '<'   error (nonassociative)
+
+    $default  reduce using rule 60 (expr)
+
+    Conflict between rule 60 and token "||" resolved as reduce ("||" < "!=").
+    Conflict between rule 60 and token "&&" resolved as reduce ("&&" < "!=").
+    Conflict between rule 60 and token "==" resolved as an error (%nonassoc "==").
+    Conflict between rule 60 and token "!=" resolved as an error (%nonassoc "!=").
+    Conflict between rule 60 and token ">=" resolved as an error (%nonassoc ">=").
+    Conflict between rule 60 and token "<=" resolved as an error (%nonassoc "<=").
+    Conflict between rule 60 and token "<<" resolved as shift ("!=" < "<<").
+    Conflict between rule 60 and token ">>" resolved as shift ("!=" < ">>").
+    Conflict between rule 60 and token '>' resolved as an error (%nonassoc '>').
+    Conflict between rule 60 and token '<' resolved as an error (%nonassoc '<').
+    Conflict between rule 60 and token '&' resolved as shift ("!=" < '&').
+    Conflict between rule 60 and token '|' resolved as shift ("!=" < '|').
+    Conflict between rule 60 and token '+' resolved as shift ("!=" < '+').
+    Conflict between rule 60 and token '-' resolved as shift ("!=" < '-').
+    Conflict between rule 60 and token '*' resolved as shift ("!=" < '*').
+    Conflict between rule 60 and token '/' resolved as shift ("!=" < '/').
+    Conflict between rule 60 and token '%' resolved as shift ("!=" < '%').
+
+
+state 86
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | expr . "!=" expr
+   61     | 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
+
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '&'   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
+
+    "=="  error (nonassociative)
+    "!="  error (nonassociative)
+    ">="  error (nonassociative)
+    "<="  error (nonassociative)
+    '>'   error (nonassociative)
+    '<'   error (nonassociative)
+
+    $default  reduce using rule 62 (expr)
+
+    Conflict between rule 62 and token "||" resolved as reduce ("||" < ">=").
+    Conflict between rule 62 and token "&&" resolved as reduce ("&&" < ">=").
+    Conflict between rule 62 and token "==" resolved as an error (%nonassoc "==").
+    Conflict between rule 62 and token "!=" resolved as an error (%nonassoc "!=").
+    Conflict between rule 62 and token ">=" resolved as an error (%nonassoc ">=").
+    Conflict between rule 62 and token "<=" resolved as an error (%nonassoc "<=").
+    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 an error (%nonassoc '>').
+    Conflict between rule 62 and token '<' resolved as an error (%nonassoc '<').
+    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 87
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | expr . "!=" expr
+   61     | 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
+
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '&'   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
+
+    "=="  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 88
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | expr . "!=" expr
+   61     | 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
+
+    '+'  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
+
+    $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 reduce ("==" < "<<").
+    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 reduce ("<=" < "<<").
+    Conflict between rule 67 and token "<<" resolved as reduce (%left "<<").
+    Conflict between rule 67 and token ">>" resolved as reduce (%left ">>").
+    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 reduce ('&' < "<<").
+    Conflict between rule 67 and token '|' resolved as reduce ('|' < "<<").
+    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 89
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', ';', ')', ',', ']', ':']
+   68     | expr ">>" expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', ';', ')', ',', ']', ':']
+   69     | expr . '-' expr
+   70     | expr . '+' expr
+   71     | expr . '*' expr
+   72     | expr . '/' expr
+   73     | expr . '%' expr
+
+    '+'  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
+
+    $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 reduce ("==" < ">>").
+    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 reduce ("<=" < ">>").
+    Conflict between rule 68 and token "<<" resolved as reduce (%left "<<").
+    Conflict between rule 68 and token ">>" resolved as reduce (%left ">>").
+    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 reduce ('&' < ">>").
+    Conflict between rule 68 and token '|' resolved as reduce ('|' < ">>").
+    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 90
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | expr . "!=" expr
+   61     | 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
+
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '&'   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
+
+    "=="  error (nonassociative)
+    "!="  error (nonassociative)
+    ">="  error (nonassociative)
+    "<="  error (nonassociative)
+    '>'   error (nonassociative)
+    '<'   error (nonassociative)
+
+    $default  reduce using rule 61 (expr)
+
+    Conflict between rule 61 and token "||" resolved as reduce ("||" < '>').
+    Conflict between rule 61 and token "&&" resolved as reduce ("&&" < '>').
+    Conflict between rule 61 and token "==" resolved as an error (%nonassoc "==").
+    Conflict between rule 61 and token "!=" resolved as an error (%nonassoc "!=").
+    Conflict between rule 61 and token ">=" resolved as an error (%nonassoc ">=").
+    Conflict between rule 61 and token "<=" resolved as an error (%nonassoc "<=").
+    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 an error (%nonassoc '>').
+    Conflict between rule 61 and token '<' resolved as an error (%nonassoc '<').
+    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 91
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | expr . "!=" expr
+   61     | 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
+
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '&'   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
+
+    "=="  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 92
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | expr . "!=" expr
+   61     | 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
+
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '+'   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
+
+    $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 reduce ("==" < '&').
+    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 reduce ("<=" < '&').
+    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 reduce ('>' < '&').
+    Conflict between rule 65 and token '<' resolved as reduce ('<' < '&').
+    Conflict between rule 65 and token '&' resolved as reduce (%left '&').
+    Conflict between rule 65 and token '|' resolved as reduce (%left '|').
+    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 93
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | expr . "!=" expr
+   61     | 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
+
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '+'   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
+
+    $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 reduce ("==" < '|').
+    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 reduce ("<=" < '|').
+    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 reduce ('>' < '|').
+    Conflict between rule 66 and token '<' resolved as reduce ('<' < '|').
+    Conflict between rule 66 and token '&' resolved as reduce (%left '&').
+    Conflict between rule 66 and token '|' resolved as reduce (%left '|').
+    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 94
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', ';', ')', ',', ']', ':']
+   70     | expr '+' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', ';', ')', ',', ']', ':']
+   71     | expr . '*' expr
+   72     | expr . '/' expr
+   73     | expr . '%' expr
+
+    '*'  shift, and go to state 64
+    '/'  shift, and go to state 65
+    '%'  shift, and go to state 66
+
+    $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 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 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 ('+' < '%').
+
+
+state 95
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', ';', ')', ',', ']', ':']
+   69     | expr '-' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', ';', ')', ',', ']', ':']
+   70     | expr . '+' expr
+   71     | expr . '*' expr
+   72     | expr . '/' expr
+   73     | expr . '%' expr
+
+    '*'  shift, and go to state 64
+    '/'  shift, and go to state 65
+    '%'  shift, and go to state 66
+
+    $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 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 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 ('-' < '%').
+
+
+state 96
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
+   71     | expr '*' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
+   72     | expr . '/' expr
+   73     | expr . '%' expr
+
+    $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 ("<<" < '*').
+    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 ('-' < '*').
+    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 (%left '%').
+
+
+state 97
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
+   72     | expr '/' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
+   73     | expr . '%' expr
+
+    $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 ("<<" < '/').
+    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 ('-' < '/').
+    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 (%left '%').
+
+
+state 98
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
+   73     | expr '%' expr .  ["||", "&&", "==", "!=", ">=", "<=", "<<", ">>", '>', '<', '&', '|', '+', '-', '*', '/', '%', ';', ')', ',', ']', ':']
+
+    $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 ('+' < '%').
+    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 reduce (%left '%').
+
+
+state 99
+
+   12 value_list: value_list . ',' value
+   32 decls: type value_list . ';'
+
+    ';'  shift, and go to state 121
+    ','  shift, and go to state 21
+
+
+state 100
+
+   38 statement: "identifier" . '(' args ')' ';'
+   39          | "identifier" . '(' ')' ';'
+   81 value: "identifier" .  ["+=", "-=", "*=", "/=", "%=", '=']
+   82      | "identifier" . '[' expr ']'
+
+    '('  shift, and go to state 122
+    '['  shift, and go to state 19
+
+    $default  reduce using rule 81 (value)
+
+
+state 101
+
+   45 statement: "if" . '(' expr ')' statement
+   46          | "if" . '(' expr ')' statement "else" statement
+
+    '('  shift, and go to state 123
+
+
+state 102
+
+   48 statement: "while" . '(' expr ')' statement
+
+    '('  shift, and go to state 124
+
+
+state 103
+
+   47 statement: "for" . '(' assign ';' expr ';' assign ')' statement
+
+    '('  shift, and go to state 125
+
+
+state 104
+
+   49 statement: "switch" . '(' expr ')' '{' state_list '}'
+
+    '('  shift, and go to state 126
+
+
+state 105
+
+   40 statement: "case" . expr ':'
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 127
+    value  go to state 34
+
+
+state 106
+
+   41 statement: "default" . ':'
+
+    ':'  shift, and go to state 128
+
+
+state 107
+
+   42 statement: "break" . ';'
+
+    ';'  shift, and go to state 129
+
+
+state 108
+
+   43 statement: "return" . ';'
+   44          | "return" . expr ';'
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    ';'           shift, and go to state 130
+    '('           shift, and go to state 32
+
+    expr   go to state 131
+    value  go to state 34
+
+
+state 109
+
+   36 statement: ';' .
+
+    $default  reduce using rule 36 (statement)
+
+
+state 110
+
+   50 statement: block .
+
+    $default  reduce using rule 50 (statement)
+
+
+state 111
+
+   27 block: '{' decl_list state_list . '}'
+
+    '}'  shift, and go to state 132
+
+
+state 112
+
+   27 block: . '{' decl_list state_list '}'
+   31 state_list: states .  ['}']
+   35 states: states . statement
+   36 statement: . ';'
+   37          | . assign ';'
+   38          | . "identifier" '(' args ')' ';'
+   39          | . "identifier" '(' ')' ';'
+   40          | . "case" expr ':'
+   41          | . "default" ':'
+   42          | . "break" ';'
+   43          | . "return" ';'
+   44          | . "return" expr ';'
+   45          | . "if" '(' expr ')' statement
+   46          | . "if" '(' expr ')' statement "else" statement
+   47          | . "for" '(' assign ';' expr ';' assign ')' statement
+   48          | . "while" '(' expr ')' statement
+   49          | . "switch" '(' expr ')' '{' state_list '}'
+   50          | . block
+   51 assign: . value '=' expr
+   52       | . value "+=" expr
+   53       | . value "-=" expr
+   54       | . value "*=" expr
+   55       | . value "/=" expr
+   56       | . value "%=" expr
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 100
+    "if"          shift, and go to state 101
+    "while"       shift, and go to state 102
+    "for"         shift, and go to state 103
+    "switch"      shift, and go to state 104
+    "case"        shift, and go to state 105
+    "default"     shift, and go to state 106
+    "break"       shift, and go to state 107
+    "return"      shift, and go to state 108
+    ';'           shift, and go to state 109
+    '{'           shift, and go to state 38
+
+    $default  reduce using rule 31 (state_list)
+
+    block      go to state 110
+    statement  go to state 133
+    assign     go to state 114
+    value      go to state 115
+
+
+state 113
+
+   34 states: statement .
+
+    $default  reduce using rule 34 (states)
+
+
+state 114
+
+   37 statement: assign . ';'
+
+    ';'  shift, and go to state 134
+
+
+state 115
+
+   51 assign: value . '=' expr
+   52       | value . "+=" expr
+   53       | value . "-=" expr
+   54       | value . "*=" expr
+   55       | value . "/=" expr
+   56       | value . "%=" expr
+
+    "+="  shift, and go to state 135
+    "-="  shift, and go to state 136
+    "*="  shift, and go to state 137
+    "/="  shift, and go to state 138
+    "%="  shift, and go to state 139
+    '='   shift, and go to state 140
+
+
+state 116
+
+   11 value_list: . value
+   12           | . value_list ',' value
+   33 decls: decls type . value_list ';'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 35
+
+    value_list  go to state 141
+    value       go to state 16
+
+
+state 117
+
+   19 arg: type "identifier" '[' ']' .
+
+    $default  reduce using rule 19 (arg)
+
+
+state 118
+
+   20 arg: type '&' "identifier" '[' . ']'
+
+    ']'  shift, and go to state 142
+
+
+state 119
+
+   79 expr: "identifier" '(' args ')' .
+
+    $default  reduce using rule 79 (expr)
+
+
+state 120
+
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+   84 args: args ',' . expr
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 143
+    value  go to state 34
+
+
+state 121
+
+   32 decls: type value_list ';' .
+
+    $default  reduce using rule 32 (decls)
+
+
+state 122
+
+   38 statement: "identifier" '(' . args ')' ';'
+   39          | "identifier" '(' . ')' ';'
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+   83 args: . expr
+   84     | . args ',' expr
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+    ')'           shift, and go to state 144
+
+    expr   go to state 79
+    value  go to state 34
+    args   go to state 145
+
+
+state 123
+
+   45 statement: "if" '(' . expr ')' statement
+   46          | "if" '(' . expr ')' statement "else" statement
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 146
+    value  go to state 34
+
+
+state 124
+
+   48 statement: "while" '(' . expr ')' statement
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 147
+    value  go to state 34
+
+
+state 125
+
+   47 statement: "for" '(' . assign ';' expr ';' assign ')' statement
+   51 assign: . value '=' expr
+   52       | . value "+=" expr
+   53       | . value "-=" expr
+   54       | . value "*=" expr
+   55       | . value "/=" expr
+   56       | . value "%=" expr
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 35
+
+    assign  go to state 148
+    value   go to state 115
+
+
+state 126
+
+   49 statement: "switch" '(' . expr ')' '{' state_list '}'
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 149
+    value  go to state 34
+
+
+state 127
+
+   40 statement: "case" expr . ':'
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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 150
+
+
+state 128
+
+   41 statement: "default" ':' .
+
+    $default  reduce using rule 41 (statement)
+
+
+state 129
+
+   42 statement: "break" ';' .
+
+    $default  reduce using rule 42 (statement)
+
+
+state 130
+
+   43 statement: "return" ';' .
+
+    $default  reduce using rule 43 (statement)
+
+
+state 131
+
+   44 statement: "return" expr . ';'
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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 151
+
+
+state 132
+
+   27 block: '{' decl_list state_list '}' .
+
+    $default  reduce using rule 27 (block)
+
+
+state 133
+
+   35 states: states statement .
+
+    $default  reduce using rule 35 (states)
+
+
+state 134
+
+   37 statement: assign ';' .
+
+    $default  reduce using rule 37 (statement)
+
+
+state 135
+
+   52 assign: value "+=" . expr
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 152
+    value  go to state 34
+
+
+state 136
+
+   53 assign: value "-=" . expr
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 153
+    value  go to state 34
+
+
+state 137
+
+   54 assign: value "*=" . expr
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 154
+    value  go to state 34
+
+
+state 138
+
+   55 assign: value "/=" . expr
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 155
+    value  go to state 34
+
+
+state 139
+
+   56 assign: value "%=" . expr
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 156
+    value  go to state 34
+
+
+state 140
+
+   51 assign: value '=' . expr
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 157
+    value  go to state 34
+
+
+state 141
+
+   12 value_list: value_list . ',' value
+   33 decls: decls type value_list . ';'
+
+    ';'  shift, and go to state 158
+    ','  shift, and go to state 21
+
+
+state 142
+
+   20 arg: type '&' "identifier" '[' ']' .
+
+    $default  reduce using rule 20 (arg)
+
+
+state 143
+
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+   84 args: args ',' expr .  [')', ',']
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 84 (args)
+
+
+state 144
+
+   39 statement: "identifier" '(' ')' . ';'
+
+    ';'  shift, and go to state 159
+
+
+state 145
+
+   38 statement: "identifier" '(' args . ')' ';'
+   84 args: args . ',' expr
+
+    ')'  shift, and go to state 160
+    ','  shift, and go to state 120
+
+
+state 146
+
+   45 statement: "if" '(' expr . ')' statement
+   46          | "if" '(' expr . ')' statement "else" statement
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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 161
+
+
+state 147
+
+   48 statement: "while" '(' expr . ')' statement
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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 162
+
+
+state 148
+
+   47 statement: "for" '(' assign . ';' expr ';' assign ')' statement
+
+    ';'  shift, and go to state 163
+
+
+state 149
+
+   49 statement: "switch" '(' expr . ')' '{' state_list '}'
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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 164
+
+
+state 150
+
+   40 statement: "case" expr ':' .
+
+    $default  reduce using rule 40 (statement)
+
+
+state 151
+
+   44 statement: "return" expr ';' .
+
+    $default  reduce using rule 44 (statement)
+
+
+state 152
+
+   52 assign: value "+=" expr .  [';', ')']
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 52 (assign)
+
+
+state 153
+
+   53 assign: value "-=" expr .  [';', ')']
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 53 (assign)
+
+
+state 154
+
+   54 assign: value "*=" expr .  [';', ')']
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 54 (assign)
+
+
+state 155
+
+   55 assign: value "/=" expr .  [';', ')']
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 55 (assign)
+
+
+state 156
+
+   56 assign: value "%=" expr .  [';', ')']
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 56 (assign)
+
+
+state 157
+
+   51 assign: value '=' expr .  [';', ')']
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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
+
+    $default  reduce using rule 51 (assign)
+
+
+state 158
+
+   33 decls: decls type value_list ';' .
+
+    $default  reduce using rule 33 (decls)
+
+
+state 159
+
+   39 statement: "identifier" '(' ')' ';' .
+
+    $default  reduce using rule 39 (statement)
+
+
+state 160
+
+   38 statement: "identifier" '(' args ')' . ';'
+
+    ';'  shift, and go to state 165
+
+
+state 161
+
+   27 block: . '{' decl_list state_list '}'
+   36 statement: . ';'
+   37          | . assign ';'
+   38          | . "identifier" '(' args ')' ';'
+   39          | . "identifier" '(' ')' ';'
+   40          | . "case" expr ':'
+   41          | . "default" ':'
+   42          | . "break" ';'
+   43          | . "return" ';'
+   44          | . "return" expr ';'
+   45          | . "if" '(' expr ')' statement
+   45          | "if" '(' expr ')' . statement
+   46          | . "if" '(' expr ')' statement "else" statement
+   46          | "if" '(' expr ')' . statement "else" statement
+   47          | . "for" '(' assign ';' expr ';' assign ')' statement
+   48          | . "while" '(' expr ')' statement
+   49          | . "switch" '(' expr ')' '{' state_list '}'
+   50          | . block
+   51 assign: . value '=' expr
+   52       | . value "+=" expr
+   53       | . value "-=" expr
+   54       | . value "*=" expr
+   55       | . value "/=" expr
+   56       | . value "%=" expr
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 100
+    "if"          shift, and go to state 101
+    "while"       shift, and go to state 102
+    "for"         shift, and go to state 103
+    "switch"      shift, and go to state 104
+    "case"        shift, and go to state 105
+    "default"     shift, and go to state 106
+    "break"       shift, and go to state 107
+    "return"      shift, and go to state 108
+    ';'           shift, and go to state 109
+    '{'           shift, and go to state 38
+
+    block      go to state 110
+    statement  go to state 166
+    assign     go to state 114
+    value      go to state 115
+
+
+state 162
+
+   27 block: . '{' decl_list state_list '}'
+   36 statement: . ';'
+   37          | . assign ';'
+   38          | . "identifier" '(' args ')' ';'
+   39          | . "identifier" '(' ')' ';'
+   40          | . "case" expr ':'
+   41          | . "default" ':'
+   42          | . "break" ';'
+   43          | . "return" ';'
+   44          | . "return" expr ';'
+   45          | . "if" '(' expr ')' statement
+   46          | . "if" '(' expr ')' statement "else" statement
+   47          | . "for" '(' assign ';' expr ';' assign ')' statement
+   48          | . "while" '(' expr ')' statement
+   48          | "while" '(' expr ')' . statement
+   49          | . "switch" '(' expr ')' '{' state_list '}'
+   50          | . block
+   51 assign: . value '=' expr
+   52       | . value "+=" expr
+   53       | . value "-=" expr
+   54       | . value "*=" expr
+   55       | . value "/=" expr
+   56       | . value "%=" expr
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 100
+    "if"          shift, and go to state 101
+    "while"       shift, and go to state 102
+    "for"         shift, and go to state 103
+    "switch"      shift, and go to state 104
+    "case"        shift, and go to state 105
+    "default"     shift, and go to state 106
+    "break"       shift, and go to state 107
+    "return"      shift, and go to state 108
+    ';'           shift, and go to state 109
+    '{'           shift, and go to state 38
+
+    block      go to state 110
+    statement  go to state 167
+    assign     go to state 114
+    value      go to state 115
+
+
+state 163
+
+   47 statement: "for" '(' assign ';' . expr ';' assign ')' statement
+   57 expr: . expr "&&" expr
+   58     | . expr "||" expr
+   59     | . expr "==" expr
+   60     | . 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
+   75     | . '(' expr ')'
+   76     | . value
+   77     | . "ival"
+   78     | . "sval"
+   79     | . "identifier" '(' args ')'
+   80     | . "identifier" '(' ')'
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "ival"        shift, and go to state 28
+    "identifier"  shift, and go to state 29
+    "sval"        shift, and go to state 30
+    '-'           shift, and go to state 31
+    '('           shift, and go to state 32
+
+    expr   go to state 168
+    value  go to state 34
+
+
+state 164
+
+   49 statement: "switch" '(' expr ')' . '{' state_list '}'
+
+    '{'  shift, and go to state 169
+
+
+state 165
+
+   38 statement: "identifier" '(' args ')' ';' .
+
+    $default  reduce using rule 38 (statement)
+
+
+state 166
+
+   45 statement: "if" '(' expr ')' statement .  ["identifier", "if", "else", "while", "for", "switch", "case", "default", "break", "return", ';', '{', '}']
+   46          | "if" '(' expr ')' statement . "else" statement
+
+    "else"  shift, and go to state 170
+
+    "else"    [reduce using rule 45 (statement)]
+    $default  reduce using rule 45 (statement)
+
+
+state 167
+
+   48 statement: "while" '(' expr ')' statement .
+
+    $default  reduce using rule 48 (statement)
+
+
+state 168
+
+   47 statement: "for" '(' assign ';' expr . ';' assign ')' statement
+   57 expr: expr . "&&" expr
+   58     | expr . "||" expr
+   59     | expr . "==" expr
+   60     | 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
+
+    "||"  shift, and go to state 50
+    "&&"  shift, and go to state 51
+    "=="  shift, and go to state 52
+    "!="  shift, and go to state 53
+    ">="  shift, and go to state 54
+    "<="  shift, and go to state 55
+    "<<"  shift, and go to state 56
+    ">>"  shift, and go to state 57
+    '>'   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 171
+
+
+state 169
+
+   27 block: . '{' decl_list state_list '}'
+   30 state_list: .  ['}']
+   31           | . states
+   34 states: . statement
+   35       | . states statement
+   36 statement: . ';'
+   37          | . assign ';'
+   38          | . "identifier" '(' args ')' ';'
+   39          | . "identifier" '(' ')' ';'
+   40          | . "case" expr ':'
+   41          | . "default" ':'
+   42          | . "break" ';'
+   43          | . "return" ';'
+   44          | . "return" expr ';'
+   45          | . "if" '(' expr ')' statement
+   46          | . "if" '(' expr ')' statement "else" statement
+   47          | . "for" '(' assign ';' expr ';' assign ')' statement
+   48          | . "while" '(' expr ')' statement
+   49          | . "switch" '(' expr ')' '{' state_list '}'
+   49          | "switch" '(' expr ')' '{' . state_list '}'
+   50          | . block
+   51 assign: . value '=' expr
+   52       | . value "+=" expr
+   53       | . value "-=" expr
+   54       | . value "*=" expr
+   55       | . value "/=" expr
+   56       | . value "%=" expr
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 100
+    "if"          shift, and go to state 101
+    "while"       shift, and go to state 102
+    "for"         shift, and go to state 103
+    "switch"      shift, and go to state 104
+    "case"        shift, and go to state 105
+    "default"     shift, and go to state 106
+    "break"       shift, and go to state 107
+    "return"      shift, and go to state 108
+    ';'           shift, and go to state 109
+    '{'           shift, and go to state 38
+
+    $default  reduce using rule 30 (state_list)
+
+    block       go to state 110
+    state_list  go to state 172
+    states      go to state 112
+    statement   go to state 113
+    assign      go to state 114
+    value       go to state 115
+
+
+state 170
+
+   27 block: . '{' decl_list state_list '}'
+   36 statement: . ';'
+   37          | . assign ';'
+   38          | . "identifier" '(' args ')' ';'
+   39          | . "identifier" '(' ')' ';'
+   40          | . "case" expr ':'
+   41          | . "default" ':'
+   42          | . "break" ';'
+   43          | . "return" ';'
+   44          | . "return" expr ';'
+   45          | . "if" '(' expr ')' statement
+   46          | . "if" '(' expr ')' statement "else" statement
+   46          | "if" '(' expr ')' statement "else" . statement
+   47          | . "for" '(' assign ';' expr ';' assign ')' statement
+   48          | . "while" '(' expr ')' statement
+   49          | . "switch" '(' expr ')' '{' state_list '}'
+   50          | . block
+   51 assign: . value '=' expr
+   52       | . value "+=" expr
+   53       | . value "-=" expr
+   54       | . value "*=" expr
+   55       | . value "/=" expr
+   56       | . value "%=" expr
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 100
+    "if"          shift, and go to state 101
+    "while"       shift, and go to state 102
+    "for"         shift, and go to state 103
+    "switch"      shift, and go to state 104
+    "case"        shift, and go to state 105
+    "default"     shift, and go to state 106
+    "break"       shift, and go to state 107
+    "return"      shift, and go to state 108
+    ';'           shift, and go to state 109
+    '{'           shift, and go to state 38
+
+    block      go to state 110
+    statement  go to state 173
+    assign     go to state 114
+    value      go to state 115
+
+
+state 171
+
+   47 statement: "for" '(' assign ';' expr ';' . assign ')' statement
+   51 assign: . value '=' expr
+   52       | . value "+=" expr
+   53       | . value "-=" expr
+   54       | . value "*=" expr
+   55       | . value "/=" expr
+   56       | . value "%=" expr
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 35
+
+    assign  go to state 174
+    value   go to state 115
+
+
+state 172
+
+   49 statement: "switch" '(' expr ')' '{' state_list . '}'
+
+    '}'  shift, and go to state 175
+
+
+state 173
+
+   46 statement: "if" '(' expr ')' statement "else" statement .
+
+    $default  reduce using rule 46 (statement)
+
+
+state 174
+
+   47 statement: "for" '(' assign ';' expr ';' assign . ')' statement
+
+    ')'  shift, and go to state 176
+
+
+state 175
+
+   49 statement: "switch" '(' expr ')' '{' state_list '}' .
+
+    $default  reduce using rule 49 (statement)
+
+
+state 176
+
+   27 block: . '{' decl_list state_list '}'
+   36 statement: . ';'
+   37          | . assign ';'
+   38          | . "identifier" '(' args ')' ';'
+   39          | . "identifier" '(' ')' ';'
+   40          | . "case" expr ':'
+   41          | . "default" ':'
+   42          | . "break" ';'
+   43          | . "return" ';'
+   44          | . "return" expr ';'
+   45          | . "if" '(' expr ')' statement
+   46          | . "if" '(' expr ')' statement "else" statement
+   47          | . "for" '(' assign ';' expr ';' assign ')' statement
+   47          | "for" '(' assign ';' expr ';' assign ')' . statement
+   48          | . "while" '(' expr ')' statement
+   49          | . "switch" '(' expr ')' '{' state_list '}'
+   50          | . block
+   51 assign: . value '=' expr
+   52       | . value "+=" expr
+   53       | . value "-=" expr
+   54       | . value "*=" expr
+   55       | . value "/=" expr
+   56       | . value "%=" expr
+   81 value: . "identifier"
+   82      | . "identifier" '[' expr ']'
+
+    "identifier"  shift, and go to state 100
+    "if"          shift, and go to state 101
+    "while"       shift, and go to state 102
+    "for"         shift, and go to state 103
+    "switch"      shift, and go to state 104
+    "case"        shift, and go to state 105
+    "default"     shift, and go to state 106
+    "break"       shift, and go to state 107
+    "return"      shift, and go to state 108
+    ';'           shift, and go to state 109
+    '{'           shift, and go to state 38
+
+    block      go to state 110
+    statement  go to state 177
+    assign     go to state 114
+    value      go to state 115
+
+
+state 177
+
+   47 statement: "for" '(' assign ';' expr ';' assign ')' statement .
+
+    $default  reduce using rule 47 (statement)