view 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 source

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)