You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
11032 lines
416 KiB
11032 lines
416 KiB
State 9 conflicts: 17 shift/reduce
|
|
State 10 conflicts: 17 shift/reduce
|
|
State 11 conflicts: 17 shift/reduce
|
|
State 20 conflicts: 2 shift/reduce
|
|
State 22 conflicts: 17 shift/reduce
|
|
State 25 conflicts: 1 shift/reduce
|
|
State 31 conflicts: 1 shift/reduce
|
|
State 38 conflicts: 1 shift/reduce
|
|
State 50 conflicts: 1 shift/reduce
|
|
State 51 conflicts: 1 shift/reduce
|
|
State 52 conflicts: 1 shift/reduce
|
|
State 53 conflicts: 1 shift/reduce
|
|
State 54 conflicts: 1 shift/reduce
|
|
State 66 conflicts: 22 reduce/reduce
|
|
State 67 conflicts: 4 reduce/reduce
|
|
State 73 conflicts: 1 shift/reduce
|
|
State 75 conflicts: 22 reduce/reduce
|
|
State 99 conflicts: 17 shift/reduce
|
|
State 113 conflicts: 1 shift/reduce
|
|
State 117 conflicts: 2 shift/reduce
|
|
State 118 conflicts: 2 shift/reduce
|
|
State 119 conflicts: 2 shift/reduce
|
|
State 120 conflicts: 2 shift/reduce
|
|
State 121 conflicts: 2 shift/reduce
|
|
State 122 conflicts: 2 shift/reduce
|
|
State 123 conflicts: 2 shift/reduce
|
|
State 124 conflicts: 2 shift/reduce
|
|
State 125 conflicts: 2 shift/reduce
|
|
State 134 conflicts: 1 shift/reduce
|
|
State 137 conflicts: 4 reduce/reduce
|
|
State 138 conflicts: 4 reduce/reduce
|
|
State 139 conflicts: 12 reduce/reduce
|
|
State 140 conflicts: 12 reduce/reduce
|
|
State 141 conflicts: 4 reduce/reduce
|
|
State 142 conflicts: 4 reduce/reduce
|
|
State 143 conflicts: 4 reduce/reduce
|
|
State 144 conflicts: 4 reduce/reduce
|
|
State 145 conflicts: 4 reduce/reduce
|
|
State 146 conflicts: 4 reduce/reduce
|
|
State 147 conflicts: 15 reduce/reduce
|
|
State 148 conflicts: 15 reduce/reduce
|
|
State 149 conflicts: 15 reduce/reduce
|
|
State 150 conflicts: 15 reduce/reduce
|
|
State 151 conflicts: 6 shift/reduce, 16 reduce/reduce
|
|
State 152 conflicts: 6 shift/reduce, 16 reduce/reduce
|
|
State 153 conflicts: 6 shift/reduce, 16 reduce/reduce
|
|
State 154 conflicts: 6 shift/reduce, 16 reduce/reduce
|
|
State 155 conflicts: 6 shift/reduce, 16 reduce/reduce
|
|
State 156 conflicts: 1 shift/reduce, 15 reduce/reduce
|
|
State 159 conflicts: 2 shift/reduce
|
|
State 160 conflicts: 2 shift/reduce
|
|
State 161 conflicts: 2 shift/reduce
|
|
State 162 conflicts: 2 shift/reduce
|
|
State 163 conflicts: 2 shift/reduce
|
|
State 164 conflicts: 2 shift/reduce
|
|
State 165 conflicts: 2 shift/reduce
|
|
State 166 conflicts: 2 shift/reduce
|
|
State 167 conflicts: 2 shift/reduce
|
|
State 176 conflicts: 1 shift/reduce
|
|
State 180 conflicts: 17 shift/reduce
|
|
State 195 conflicts: 1 shift/reduce
|
|
|
|
|
|
Grammar
|
|
|
|
0 $accept: program $end
|
|
|
|
1 program: stmt_list
|
|
|
|
2 stmt_list: stmt_list stmt
|
|
3 | %empty
|
|
|
|
4 stmt: expr
|
|
5 | RETURN expr
|
|
6 | RETURN
|
|
7 | BREAK
|
|
8 | BREAK expr
|
|
9 | CONTINUE
|
|
10 | CONTINUE expr
|
|
11 | stmt SEMICOLON
|
|
|
|
12 expr: control_expr
|
|
|
|
13 control_expr: IF expr THEN stmt_list END
|
|
14 | IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | WHILE expr DO stmt_list END
|
|
16 | FOR IDENT IN expr DO stmt_list END
|
|
17 | assign_expr
|
|
|
|
18 assign_expr: IDENT ASSIGN expr
|
|
19 | IDENT ASSIGNPLUS expr
|
|
20 | IDENT ASSIGNMINUS expr
|
|
21 | IDENT ASSIGNSTAR expr
|
|
22 | IDENT ASSIGNSLASH expr
|
|
23 | IDENT ASSIGNDSTAR expr
|
|
24 | IDENT ASSIGNBAND expr
|
|
25 | IDENT ASSIGNBOR expr
|
|
26 | IDENT ASSIGNBXOR expr
|
|
27 | ex_index_expr ASSIGN expr
|
|
28 | ex_index_expr ASSIGNPLUS expr
|
|
29 | ex_index_expr ASSIGNMINUS expr
|
|
30 | ex_index_expr ASSIGNSTAR expr
|
|
31 | ex_index_expr ASSIGNSLASH expr
|
|
32 | ex_index_expr ASSIGNDSTAR expr
|
|
33 | ex_index_expr ASSIGNBAND expr
|
|
34 | ex_index_expr ASSIGNBOR expr
|
|
35 | ex_index_expr ASSIGNBXOR expr
|
|
36 | logic_expr
|
|
|
|
37 logic_expr: logic_expr LAND ulogic_expr
|
|
38 | logic_expr LOR ulogic_expr
|
|
39 | ulogic_expr
|
|
|
|
40 ulogic_expr: LNOT ulogic_expr
|
|
41 | rel_expr
|
|
|
|
42 rel_expr: term_expr EQUAL rel_expr
|
|
43 | term_expr NEQUAL rel_expr
|
|
44 | term_expr LESS rel_expr
|
|
45 | term_expr GREATER rel_expr
|
|
46 | term_expr LESSEQ rel_expr
|
|
47 | term_expr GREATEREQ rel_expr
|
|
48 | term_expr
|
|
|
|
49 term_expr: term_expr PLUS factor_expr
|
|
50 | term_expr MINUS factor_expr
|
|
51 | factor_expr
|
|
|
|
52 factor_expr: factor_expr STAR power_expr
|
|
53 | factor_expr SLASH power_expr
|
|
54 | factor_expr PERCENT power_expr
|
|
55 | power_expr
|
|
|
|
56 power_expr: tbang_expr DSTAR power_expr
|
|
57 | tbang_expr
|
|
|
|
58 tbang_expr: binary_expr TBANG tbang_expr
|
|
59 | binary_expr
|
|
|
|
60 binary_expr: binary_expr BAND binary_expr
|
|
61 | binary_expr BOR binary_expr
|
|
62 | binary_expr BXOR binary_expr
|
|
63 | binary_expr LSHIFT binary_expr
|
|
64 | binary_expr RSHIFT binary_expr
|
|
65 | ubinary_expr
|
|
|
|
66 ubinary_expr: BNOT ubinary_expr
|
|
67 | ulen_expr
|
|
|
|
68 ulen_expr: POUND ulen_expr
|
|
69 | call_expr
|
|
|
|
70 call_expr: call_expr LPAREN expr_list RPAREN
|
|
71 | call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | funcdecl_expr
|
|
|
|
73 funcdecl_expr: FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | index_expr
|
|
|
|
77 index_expr: expr LBRACKET expr RBRACKET
|
|
78 | expr DOT IDENT
|
|
79 | ref_expr
|
|
|
|
80 ex_index_expr: expr LBRACKET expr RBRACKET
|
|
81 | expr DOT IDENT
|
|
|
|
82 ref_expr: IDENT
|
|
83 | lit_expr
|
|
|
|
84 lit_expr: INT
|
|
85 | MINUS INT
|
|
86 | FLOAT
|
|
87 | STRING
|
|
88 | NONE
|
|
89 | gen_expr
|
|
|
|
90 gen_expr: LBRACKET expr_list RBRACKET
|
|
91 | LBRACE assoc_list RBRACE
|
|
92 | paren_expr
|
|
|
|
93 paren_expr: LPAREN expr RPAREN
|
|
|
|
94 expr_list: %empty
|
|
95 | expr
|
|
96 | expr_list COMMA
|
|
97 | expr_list expr
|
|
|
|
98 ident_list: %empty
|
|
99 | IDENT
|
|
100 | ident_list COMMA
|
|
101 | ident_list IDENT
|
|
|
|
102 assoc_list: %empty
|
|
103 | assoc_item
|
|
104 | assoc_list COMMA
|
|
105 | assoc_list assoc_item
|
|
|
|
106 assoc_item: LBRACKET expr RBRACKET ASSIGN expr
|
|
107 | IDENT ASSIGN expr
|
|
|
|
|
|
Terminals, with rules where they appear
|
|
|
|
$end (0) 0
|
|
error (256)
|
|
IF (258) 13 14
|
|
THEN (259) 13 14
|
|
ELSE (260) 14
|
|
WHILE (261) 15
|
|
FOR (262) 16
|
|
IN (263) 16
|
|
DO (264) 15 16
|
|
FUNC (265) 73 74
|
|
LAMBDA (266) 75
|
|
RETURN (267) 5 6
|
|
BREAK (268) 7 8
|
|
CONTINUE (269) 9 10
|
|
END (270) 13 14 15 16 73 74 75
|
|
NONE (271) 88
|
|
IDENT (272) 16 18 19 20 21 22 23 24 25 26 71 73 78 81 82 99 101 107
|
|
INT (273) 84 85
|
|
FLOAT (274) 86
|
|
STRING (275) 87
|
|
PLUS (276) 49
|
|
MINUS (277) 50 85
|
|
STAR (278) 52
|
|
SLASH (279) 53
|
|
PERCENT (280) 54
|
|
DSTAR (281) 56
|
|
BAND (282) 60
|
|
BOR (283) 61
|
|
BXOR (284) 62
|
|
BNOT (285) 66
|
|
LAND (286) 37
|
|
LOR (287) 38
|
|
LNOT (288) 40
|
|
ASSIGN (289) 18 27 106 107
|
|
ASSIGNPLUS (290) 19 28
|
|
ASSIGNMINUS (291) 20 29
|
|
ASSIGNSTAR (292) 21 30
|
|
ASSIGNSLASH (293) 22 31
|
|
ASSIGNDSTAR (294) 23 32
|
|
ASSIGNBAND (295) 24 33
|
|
ASSIGNBOR (296) 25 34
|
|
ASSIGNBXOR (297) 26 35
|
|
EQUAL (298) 42
|
|
NEQUAL (299) 43
|
|
LESS (300) 44
|
|
GREATER (301) 45
|
|
LESSEQ (302) 46
|
|
GREATEREQ (303) 47
|
|
RSHIFT (304) 64
|
|
LSHIFT (305) 63
|
|
LBRACE (306) 91
|
|
RBRACE (307) 91
|
|
LPAREN (308) 70 71 73 74 75 93
|
|
RPAREN (309) 70 71 73 74 75 93
|
|
LBRACKET (310) 77 80 90 106
|
|
RBRACKET (311) 77 80 90 106
|
|
DOT (312) 78 81
|
|
COLON (313) 71
|
|
SEMICOLON (314) 11
|
|
COMMA (315) 96 100 104
|
|
POUND (316) 68
|
|
TBANG (317) 58
|
|
|
|
|
|
Nonterminals, with rules where they appear
|
|
|
|
$accept (63)
|
|
on left: 0
|
|
program (64)
|
|
on left: 1, on right: 0
|
|
stmt_list (65)
|
|
on left: 2 3, on right: 1 2 13 14 15 16 73 74
|
|
stmt (66)
|
|
on left: 4 5 6 7 8 9 10 11, on right: 2 11
|
|
expr (67)
|
|
on left: 12, on right: 4 5 8 10 13 14 15 16 18 19 20 21 22 23 24
|
|
25 26 27 28 29 30 31 32 33 34 35 75 77 78 80 81 93 95 97 106 107
|
|
control_expr (68)
|
|
on left: 13 14 15 16 17, on right: 12
|
|
assign_expr (69)
|
|
on left: 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
|
36, on right: 17
|
|
logic_expr (70)
|
|
on left: 37 38 39, on right: 36 37 38
|
|
ulogic_expr (71)
|
|
on left: 40 41, on right: 37 38 39 40
|
|
rel_expr (72)
|
|
on left: 42 43 44 45 46 47 48, on right: 41 42 43 44 45 46 47
|
|
term_expr (73)
|
|
on left: 49 50 51, on right: 42 43 44 45 46 47 48 49 50
|
|
factor_expr (74)
|
|
on left: 52 53 54 55, on right: 49 50 51 52 53 54
|
|
power_expr (75)
|
|
on left: 56 57, on right: 52 53 54 55 56
|
|
tbang_expr (76)
|
|
on left: 58 59, on right: 56 57 58
|
|
binary_expr (77)
|
|
on left: 60 61 62 63 64 65, on right: 58 59 60 61 62 63 64
|
|
ubinary_expr (78)
|
|
on left: 66 67, on right: 65 66
|
|
ulen_expr (79)
|
|
on left: 68 69, on right: 67 68
|
|
call_expr (80)
|
|
on left: 70 71 72, on right: 69 70 71
|
|
funcdecl_expr (81)
|
|
on left: 73 74 75 76, on right: 72
|
|
index_expr (82)
|
|
on left: 77 78 79, on right: 76
|
|
ex_index_expr (83)
|
|
on left: 80 81, on right: 27 28 29 30 31 32 33 34 35
|
|
ref_expr (84)
|
|
on left: 82 83, on right: 79
|
|
lit_expr (85)
|
|
on left: 84 85 86 87 88 89, on right: 83
|
|
gen_expr (86)
|
|
on left: 90 91 92, on right: 89
|
|
paren_expr (87)
|
|
on left: 93, on right: 92
|
|
expr_list (88)
|
|
on left: 94 95 96 97, on right: 70 71 90 96 97
|
|
ident_list (89)
|
|
on left: 98 99 100 101, on right: 73 74 75 100 101
|
|
assoc_list (90)
|
|
on left: 102 103 104 105, on right: 91 104 105
|
|
assoc_item (91)
|
|
on left: 106 107, on right: 103 105
|
|
|
|
|
|
State 0
|
|
|
|
0 $accept: . program $end
|
|
1 program: . stmt_list
|
|
2 stmt_list: . stmt_list stmt
|
|
3 | . %empty
|
|
|
|
$default reduce using rule 3 (stmt_list)
|
|
|
|
program go to state 1
|
|
stmt_list go to state 2
|
|
|
|
|
|
State 1
|
|
|
|
0 $accept: program . $end
|
|
|
|
$end shift, and go to state 3
|
|
|
|
|
|
State 2
|
|
|
|
1 program: stmt_list . [$end]
|
|
2 stmt_list: stmt_list . stmt
|
|
4 stmt: . expr
|
|
5 | . RETURN expr
|
|
6 | . RETURN
|
|
7 | . BREAK
|
|
8 | . BREAK expr
|
|
9 | . CONTINUE
|
|
10 | . CONTINUE expr
|
|
11 | . stmt SEMICOLON
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
RETURN shift, and go to state 9
|
|
BREAK shift, and go to state 10
|
|
CONTINUE shift, and go to state 11
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
$default reduce using rule 1 (program)
|
|
|
|
stmt go to state 24
|
|
expr go to state 25
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 3
|
|
|
|
0 $accept: program $end .
|
|
|
|
$default accept
|
|
|
|
|
|
State 4
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
13 | IF . expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
14 | IF . expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 46
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 5
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
15 | WHILE . expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 47
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 6
|
|
|
|
16 control_expr: FOR . IDENT IN expr DO stmt_list END
|
|
|
|
IDENT shift, and go to state 48
|
|
|
|
|
|
State 7
|
|
|
|
73 funcdecl_expr: FUNC . IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | FUNC . LPAREN ident_list RPAREN stmt_list END
|
|
|
|
IDENT shift, and go to state 49
|
|
LPAREN shift, and go to state 50
|
|
|
|
|
|
State 8
|
|
|
|
75 funcdecl_expr: LAMBDA . LPAREN ident_list RPAREN expr END
|
|
|
|
LPAREN shift, and go to state 51
|
|
|
|
|
|
State 9
|
|
|
|
5 stmt: RETURN . expr
|
|
6 | RETURN . [$end, IF, ELSE, WHILE, FOR, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, LPAREN, LBRACKET, SEMICOLON, POUND]
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
IF [reduce using rule 6 (stmt)]
|
|
WHILE [reduce using rule 6 (stmt)]
|
|
FOR [reduce using rule 6 (stmt)]
|
|
FUNC [reduce using rule 6 (stmt)]
|
|
LAMBDA [reduce using rule 6 (stmt)]
|
|
NONE [reduce using rule 6 (stmt)]
|
|
IDENT [reduce using rule 6 (stmt)]
|
|
INT [reduce using rule 6 (stmt)]
|
|
FLOAT [reduce using rule 6 (stmt)]
|
|
STRING [reduce using rule 6 (stmt)]
|
|
MINUS [reduce using rule 6 (stmt)]
|
|
BNOT [reduce using rule 6 (stmt)]
|
|
LNOT [reduce using rule 6 (stmt)]
|
|
LBRACE [reduce using rule 6 (stmt)]
|
|
LPAREN [reduce using rule 6 (stmt)]
|
|
LBRACKET [reduce using rule 6 (stmt)]
|
|
POUND [reduce using rule 6 (stmt)]
|
|
$default reduce using rule 6 (stmt)
|
|
|
|
expr go to state 52
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 10
|
|
|
|
7 stmt: BREAK . [$end, IF, ELSE, WHILE, FOR, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, LPAREN, LBRACKET, SEMICOLON, POUND]
|
|
8 | BREAK . expr
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
IF [reduce using rule 7 (stmt)]
|
|
WHILE [reduce using rule 7 (stmt)]
|
|
FOR [reduce using rule 7 (stmt)]
|
|
FUNC [reduce using rule 7 (stmt)]
|
|
LAMBDA [reduce using rule 7 (stmt)]
|
|
NONE [reduce using rule 7 (stmt)]
|
|
IDENT [reduce using rule 7 (stmt)]
|
|
INT [reduce using rule 7 (stmt)]
|
|
FLOAT [reduce using rule 7 (stmt)]
|
|
STRING [reduce using rule 7 (stmt)]
|
|
MINUS [reduce using rule 7 (stmt)]
|
|
BNOT [reduce using rule 7 (stmt)]
|
|
LNOT [reduce using rule 7 (stmt)]
|
|
LBRACE [reduce using rule 7 (stmt)]
|
|
LPAREN [reduce using rule 7 (stmt)]
|
|
LBRACKET [reduce using rule 7 (stmt)]
|
|
POUND [reduce using rule 7 (stmt)]
|
|
$default reduce using rule 7 (stmt)
|
|
|
|
expr go to state 53
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 11
|
|
|
|
9 stmt: CONTINUE . [$end, IF, ELSE, WHILE, FOR, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, LPAREN, LBRACKET, SEMICOLON, POUND]
|
|
10 | CONTINUE . expr
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
IF [reduce using rule 9 (stmt)]
|
|
WHILE [reduce using rule 9 (stmt)]
|
|
FOR [reduce using rule 9 (stmt)]
|
|
FUNC [reduce using rule 9 (stmt)]
|
|
LAMBDA [reduce using rule 9 (stmt)]
|
|
NONE [reduce using rule 9 (stmt)]
|
|
IDENT [reduce using rule 9 (stmt)]
|
|
INT [reduce using rule 9 (stmt)]
|
|
FLOAT [reduce using rule 9 (stmt)]
|
|
STRING [reduce using rule 9 (stmt)]
|
|
MINUS [reduce using rule 9 (stmt)]
|
|
BNOT [reduce using rule 9 (stmt)]
|
|
LNOT [reduce using rule 9 (stmt)]
|
|
LBRACE [reduce using rule 9 (stmt)]
|
|
LPAREN [reduce using rule 9 (stmt)]
|
|
LBRACKET [reduce using rule 9 (stmt)]
|
|
POUND [reduce using rule 9 (stmt)]
|
|
$default reduce using rule 9 (stmt)
|
|
|
|
expr go to state 54
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 12
|
|
|
|
88 lit_expr: NONE .
|
|
|
|
$default reduce using rule 88 (lit_expr)
|
|
|
|
|
|
State 13
|
|
|
|
18 assign_expr: IDENT . ASSIGN expr
|
|
19 | IDENT . ASSIGNPLUS expr
|
|
20 | IDENT . ASSIGNMINUS expr
|
|
21 | IDENT . ASSIGNSTAR expr
|
|
22 | IDENT . ASSIGNSLASH expr
|
|
23 | IDENT . ASSIGNDSTAR expr
|
|
24 | IDENT . ASSIGNBAND expr
|
|
25 | IDENT . ASSIGNBOR expr
|
|
26 | IDENT . ASSIGNBXOR expr
|
|
82 ref_expr: IDENT . [$end, IF, THEN, ELSE, WHILE, FOR, DO, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, PLUS, MINUS, STAR, SLASH, PERCENT, DSTAR, BAND, BOR, BXOR, BNOT, LAND, LOR, LNOT, EQUAL, NEQUAL, LESS, GREATER, LESSEQ, GREATEREQ, RSHIFT, LSHIFT, LBRACE, RBRACE, LPAREN, RPAREN, LBRACKET, RBRACKET, DOT, COLON, SEMICOLON, COMMA, POUND, TBANG]
|
|
|
|
ASSIGN shift, and go to state 55
|
|
ASSIGNPLUS shift, and go to state 56
|
|
ASSIGNMINUS shift, and go to state 57
|
|
ASSIGNSTAR shift, and go to state 58
|
|
ASSIGNSLASH shift, and go to state 59
|
|
ASSIGNDSTAR shift, and go to state 60
|
|
ASSIGNBAND shift, and go to state 61
|
|
ASSIGNBOR shift, and go to state 62
|
|
ASSIGNBXOR shift, and go to state 63
|
|
|
|
$default reduce using rule 82 (ref_expr)
|
|
|
|
|
|
State 14
|
|
|
|
84 lit_expr: INT .
|
|
|
|
$default reduce using rule 84 (lit_expr)
|
|
|
|
|
|
State 15
|
|
|
|
86 lit_expr: FLOAT .
|
|
|
|
$default reduce using rule 86 (lit_expr)
|
|
|
|
|
|
State 16
|
|
|
|
87 lit_expr: STRING .
|
|
|
|
$default reduce using rule 87 (lit_expr)
|
|
|
|
|
|
State 17
|
|
|
|
85 lit_expr: MINUS . INT
|
|
|
|
INT shift, and go to state 64
|
|
|
|
|
|
State 18
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
66 | BNOT . ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 65
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 66
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 19
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
40 | LNOT . ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 65
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 67
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 20
|
|
|
|
91 gen_expr: LBRACE . assoc_list RBRACE
|
|
102 assoc_list: . %empty [IDENT, RBRACE, LBRACKET, COMMA]
|
|
103 | . assoc_item
|
|
104 | . assoc_list COMMA
|
|
105 | . assoc_list assoc_item
|
|
106 assoc_item: . LBRACKET expr RBRACKET ASSIGN expr
|
|
107 | . IDENT ASSIGN expr
|
|
|
|
IDENT shift, and go to state 68
|
|
LBRACKET shift, and go to state 69
|
|
|
|
IDENT [reduce using rule 102 (assoc_list)]
|
|
LBRACKET [reduce using rule 102 (assoc_list)]
|
|
$default reduce using rule 102 (assoc_list)
|
|
|
|
assoc_list go to state 70
|
|
assoc_item go to state 71
|
|
|
|
|
|
State 21
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
93 | LPAREN . expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 72
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 22
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
90 | LBRACKET . expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
94 expr_list: . %empty [IF, WHILE, FOR, FUNC, LAMBDA, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, LPAREN, LBRACKET, RBRACKET, COMMA, POUND]
|
|
95 | . expr
|
|
96 | . expr_list COMMA
|
|
97 | . expr_list expr
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
IF [reduce using rule 94 (expr_list)]
|
|
WHILE [reduce using rule 94 (expr_list)]
|
|
FOR [reduce using rule 94 (expr_list)]
|
|
FUNC [reduce using rule 94 (expr_list)]
|
|
LAMBDA [reduce using rule 94 (expr_list)]
|
|
NONE [reduce using rule 94 (expr_list)]
|
|
IDENT [reduce using rule 94 (expr_list)]
|
|
INT [reduce using rule 94 (expr_list)]
|
|
FLOAT [reduce using rule 94 (expr_list)]
|
|
STRING [reduce using rule 94 (expr_list)]
|
|
MINUS [reduce using rule 94 (expr_list)]
|
|
BNOT [reduce using rule 94 (expr_list)]
|
|
LNOT [reduce using rule 94 (expr_list)]
|
|
LBRACE [reduce using rule 94 (expr_list)]
|
|
LPAREN [reduce using rule 94 (expr_list)]
|
|
LBRACKET [reduce using rule 94 (expr_list)]
|
|
POUND [reduce using rule 94 (expr_list)]
|
|
$default reduce using rule 94 (expr_list)
|
|
|
|
expr go to state 73
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
expr_list go to state 74
|
|
|
|
|
|
State 23
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
68 | POUND . ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 65
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 75
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 24
|
|
|
|
2 stmt_list: stmt_list stmt . [$end, IF, ELSE, WHILE, FOR, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, LPAREN, LBRACKET, POUND]
|
|
11 stmt: stmt . SEMICOLON
|
|
|
|
SEMICOLON shift, and go to state 76
|
|
|
|
$default reduce using rule 2 (stmt_list)
|
|
|
|
|
|
State 25
|
|
|
|
4 stmt: expr . [$end, IF, ELSE, WHILE, FOR, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, LPAREN, LBRACKET, SEMICOLON, POUND]
|
|
77 index_expr: expr . LBRACKET expr RBRACKET
|
|
78 | expr . DOT IDENT
|
|
80 ex_index_expr: expr . LBRACKET expr RBRACKET
|
|
81 | expr . DOT IDENT
|
|
|
|
LBRACKET shift, and go to state 77
|
|
DOT shift, and go to state 78
|
|
|
|
LBRACKET [reduce using rule 4 (stmt)]
|
|
$default reduce using rule 4 (stmt)
|
|
|
|
|
|
State 26
|
|
|
|
12 expr: control_expr .
|
|
|
|
$default reduce using rule 12 (expr)
|
|
|
|
|
|
State 27
|
|
|
|
17 control_expr: assign_expr .
|
|
|
|
$default reduce using rule 17 (control_expr)
|
|
|
|
|
|
State 28
|
|
|
|
36 assign_expr: logic_expr . [$end, IF, THEN, ELSE, WHILE, FOR, DO, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, RBRACE, LPAREN, RPAREN, LBRACKET, RBRACKET, DOT, SEMICOLON, COMMA, POUND]
|
|
37 logic_expr: logic_expr . LAND ulogic_expr
|
|
38 | logic_expr . LOR ulogic_expr
|
|
|
|
LAND shift, and go to state 79
|
|
LOR shift, and go to state 80
|
|
|
|
$default reduce using rule 36 (assign_expr)
|
|
|
|
|
|
State 29
|
|
|
|
39 logic_expr: ulogic_expr .
|
|
|
|
$default reduce using rule 39 (logic_expr)
|
|
|
|
|
|
State 30
|
|
|
|
41 ulogic_expr: rel_expr .
|
|
|
|
$default reduce using rule 41 (ulogic_expr)
|
|
|
|
|
|
State 31
|
|
|
|
42 rel_expr: term_expr . EQUAL rel_expr
|
|
43 | term_expr . NEQUAL rel_expr
|
|
44 | term_expr . LESS rel_expr
|
|
45 | term_expr . GREATER rel_expr
|
|
46 | term_expr . LESSEQ rel_expr
|
|
47 | term_expr . GREATEREQ rel_expr
|
|
48 | term_expr . [$end, IF, THEN, ELSE, WHILE, FOR, DO, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LAND, LOR, LNOT, LBRACE, RBRACE, LPAREN, RPAREN, LBRACKET, RBRACKET, DOT, SEMICOLON, COMMA, POUND]
|
|
49 term_expr: term_expr . PLUS factor_expr
|
|
50 | term_expr . MINUS factor_expr
|
|
|
|
PLUS shift, and go to state 81
|
|
MINUS shift, and go to state 82
|
|
EQUAL shift, and go to state 83
|
|
NEQUAL shift, and go to state 84
|
|
LESS shift, and go to state 85
|
|
GREATER shift, and go to state 86
|
|
LESSEQ shift, and go to state 87
|
|
GREATEREQ shift, and go to state 88
|
|
|
|
MINUS [reduce using rule 48 (rel_expr)]
|
|
$default reduce using rule 48 (rel_expr)
|
|
|
|
|
|
State 32
|
|
|
|
51 term_expr: factor_expr . [$end, IF, THEN, ELSE, WHILE, FOR, DO, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, PLUS, MINUS, BNOT, LAND, LOR, LNOT, EQUAL, NEQUAL, LESS, GREATER, LESSEQ, GREATEREQ, LBRACE, RBRACE, LPAREN, RPAREN, LBRACKET, RBRACKET, DOT, SEMICOLON, COMMA, POUND]
|
|
52 factor_expr: factor_expr . STAR power_expr
|
|
53 | factor_expr . SLASH power_expr
|
|
54 | factor_expr . PERCENT power_expr
|
|
|
|
STAR shift, and go to state 89
|
|
SLASH shift, and go to state 90
|
|
PERCENT shift, and go to state 91
|
|
|
|
$default reduce using rule 51 (term_expr)
|
|
|
|
|
|
State 33
|
|
|
|
55 factor_expr: power_expr .
|
|
|
|
$default reduce using rule 55 (factor_expr)
|
|
|
|
|
|
State 34
|
|
|
|
56 power_expr: tbang_expr . DSTAR power_expr
|
|
57 | tbang_expr . [$end, IF, THEN, ELSE, WHILE, FOR, DO, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, PLUS, MINUS, STAR, SLASH, PERCENT, BNOT, LAND, LOR, LNOT, EQUAL, NEQUAL, LESS, GREATER, LESSEQ, GREATEREQ, LBRACE, RBRACE, LPAREN, RPAREN, LBRACKET, RBRACKET, DOT, SEMICOLON, COMMA, POUND]
|
|
|
|
DSTAR shift, and go to state 92
|
|
|
|
$default reduce using rule 57 (power_expr)
|
|
|
|
|
|
State 35
|
|
|
|
58 tbang_expr: binary_expr . TBANG tbang_expr
|
|
59 | binary_expr . [$end, IF, THEN, ELSE, WHILE, FOR, DO, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, PLUS, MINUS, STAR, SLASH, PERCENT, DSTAR, BNOT, LAND, LOR, LNOT, EQUAL, NEQUAL, LESS, GREATER, LESSEQ, GREATEREQ, LBRACE, RBRACE, LPAREN, RPAREN, LBRACKET, RBRACKET, DOT, SEMICOLON, COMMA, POUND]
|
|
60 binary_expr: binary_expr . BAND binary_expr
|
|
61 | binary_expr . BOR binary_expr
|
|
62 | binary_expr . BXOR binary_expr
|
|
63 | binary_expr . LSHIFT binary_expr
|
|
64 | binary_expr . RSHIFT binary_expr
|
|
|
|
BAND shift, and go to state 93
|
|
BOR shift, and go to state 94
|
|
BXOR shift, and go to state 95
|
|
RSHIFT shift, and go to state 96
|
|
LSHIFT shift, and go to state 97
|
|
TBANG shift, and go to state 98
|
|
|
|
$default reduce using rule 59 (tbang_expr)
|
|
|
|
|
|
State 36
|
|
|
|
65 binary_expr: ubinary_expr .
|
|
|
|
$default reduce using rule 65 (binary_expr)
|
|
|
|
|
|
State 37
|
|
|
|
67 ubinary_expr: ulen_expr .
|
|
|
|
$default reduce using rule 67 (ubinary_expr)
|
|
|
|
|
|
State 38
|
|
|
|
69 ulen_expr: call_expr . [$end, IF, THEN, ELSE, WHILE, FOR, DO, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, PLUS, MINUS, STAR, SLASH, PERCENT, DSTAR, BAND, BOR, BXOR, BNOT, LAND, LOR, LNOT, EQUAL, NEQUAL, LESS, GREATER, LESSEQ, GREATEREQ, RSHIFT, LSHIFT, LBRACE, RBRACE, LPAREN, RPAREN, LBRACKET, RBRACKET, DOT, SEMICOLON, COMMA, POUND, TBANG]
|
|
70 call_expr: call_expr . LPAREN expr_list RPAREN
|
|
71 | call_expr . COLON IDENT LPAREN expr_list RPAREN
|
|
|
|
LPAREN shift, and go to state 99
|
|
COLON shift, and go to state 100
|
|
|
|
LPAREN [reduce using rule 69 (ulen_expr)]
|
|
$default reduce using rule 69 (ulen_expr)
|
|
|
|
|
|
State 39
|
|
|
|
72 call_expr: funcdecl_expr .
|
|
|
|
$default reduce using rule 72 (call_expr)
|
|
|
|
|
|
State 40
|
|
|
|
76 funcdecl_expr: index_expr .
|
|
|
|
$default reduce using rule 76 (funcdecl_expr)
|
|
|
|
|
|
State 41
|
|
|
|
27 assign_expr: ex_index_expr . ASSIGN expr
|
|
28 | ex_index_expr . ASSIGNPLUS expr
|
|
29 | ex_index_expr . ASSIGNMINUS expr
|
|
30 | ex_index_expr . ASSIGNSTAR expr
|
|
31 | ex_index_expr . ASSIGNSLASH expr
|
|
32 | ex_index_expr . ASSIGNDSTAR expr
|
|
33 | ex_index_expr . ASSIGNBAND expr
|
|
34 | ex_index_expr . ASSIGNBOR expr
|
|
35 | ex_index_expr . ASSIGNBXOR expr
|
|
|
|
ASSIGN shift, and go to state 101
|
|
ASSIGNPLUS shift, and go to state 102
|
|
ASSIGNMINUS shift, and go to state 103
|
|
ASSIGNSTAR shift, and go to state 104
|
|
ASSIGNSLASH shift, and go to state 105
|
|
ASSIGNDSTAR shift, and go to state 106
|
|
ASSIGNBAND shift, and go to state 107
|
|
ASSIGNBOR shift, and go to state 108
|
|
ASSIGNBXOR shift, and go to state 109
|
|
|
|
|
|
State 42
|
|
|
|
79 index_expr: ref_expr .
|
|
|
|
$default reduce using rule 79 (index_expr)
|
|
|
|
|
|
State 43
|
|
|
|
83 ref_expr: lit_expr .
|
|
|
|
$default reduce using rule 83 (ref_expr)
|
|
|
|
|
|
State 44
|
|
|
|
89 lit_expr: gen_expr .
|
|
|
|
$default reduce using rule 89 (lit_expr)
|
|
|
|
|
|
State 45
|
|
|
|
92 gen_expr: paren_expr .
|
|
|
|
$default reduce using rule 92 (gen_expr)
|
|
|
|
|
|
State 46
|
|
|
|
13 control_expr: IF expr . THEN stmt_list END
|
|
14 | IF expr . THEN stmt_list ELSE stmt_list END
|
|
77 index_expr: expr . LBRACKET expr RBRACKET
|
|
78 | expr . DOT IDENT
|
|
80 ex_index_expr: expr . LBRACKET expr RBRACKET
|
|
81 | expr . DOT IDENT
|
|
|
|
THEN shift, and go to state 110
|
|
LBRACKET shift, and go to state 77
|
|
DOT shift, and go to state 78
|
|
|
|
|
|
State 47
|
|
|
|
15 control_expr: WHILE expr . DO stmt_list END
|
|
77 index_expr: expr . LBRACKET expr RBRACKET
|
|
78 | expr . DOT IDENT
|
|
80 ex_index_expr: expr . LBRACKET expr RBRACKET
|
|
81 | expr . DOT IDENT
|
|
|
|
DO shift, and go to state 111
|
|
LBRACKET shift, and go to state 77
|
|
DOT shift, and go to state 78
|
|
|
|
|
|
State 48
|
|
|
|
16 control_expr: FOR IDENT . IN expr DO stmt_list END
|
|
|
|
IN shift, and go to state 112
|
|
|
|
|
|
State 49
|
|
|
|
73 funcdecl_expr: FUNC IDENT . LPAREN ident_list RPAREN stmt_list END
|
|
|
|
LPAREN shift, and go to state 113
|
|
|
|
|
|
State 50
|
|
|
|
74 funcdecl_expr: FUNC LPAREN . ident_list RPAREN stmt_list END
|
|
98 ident_list: . %empty [IDENT, RPAREN, COMMA]
|
|
99 | . IDENT
|
|
100 | . ident_list COMMA
|
|
101 | . ident_list IDENT
|
|
|
|
IDENT shift, and go to state 114
|
|
|
|
IDENT [reduce using rule 98 (ident_list)]
|
|
$default reduce using rule 98 (ident_list)
|
|
|
|
ident_list go to state 115
|
|
|
|
|
|
State 51
|
|
|
|
75 funcdecl_expr: LAMBDA LPAREN . ident_list RPAREN expr END
|
|
98 ident_list: . %empty [IDENT, RPAREN, COMMA]
|
|
99 | . IDENT
|
|
100 | . ident_list COMMA
|
|
101 | . ident_list IDENT
|
|
|
|
IDENT shift, and go to state 114
|
|
|
|
IDENT [reduce using rule 98 (ident_list)]
|
|
$default reduce using rule 98 (ident_list)
|
|
|
|
ident_list go to state 116
|
|
|
|
|
|
State 52
|
|
|
|
5 stmt: RETURN expr . [$end, IF, ELSE, WHILE, FOR, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, LPAREN, LBRACKET, SEMICOLON, POUND]
|
|
77 index_expr: expr . LBRACKET expr RBRACKET
|
|
78 | expr . DOT IDENT
|
|
80 ex_index_expr: expr . LBRACKET expr RBRACKET
|
|
81 | expr . DOT IDENT
|
|
|
|
LBRACKET shift, and go to state 77
|
|
DOT shift, and go to state 78
|
|
|
|
LBRACKET [reduce using rule 5 (stmt)]
|
|
$default reduce using rule 5 (stmt)
|
|
|
|
|
|
State 53
|
|
|
|
8 stmt: BREAK expr . [$end, IF, ELSE, WHILE, FOR, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, LPAREN, LBRACKET, SEMICOLON, POUND]
|
|
77 index_expr: expr . LBRACKET expr RBRACKET
|
|
78 | expr . DOT IDENT
|
|
80 ex_index_expr: expr . LBRACKET expr RBRACKET
|
|
81 | expr . DOT IDENT
|
|
|
|
LBRACKET shift, and go to state 77
|
|
DOT shift, and go to state 78
|
|
|
|
LBRACKET [reduce using rule 8 (stmt)]
|
|
$default reduce using rule 8 (stmt)
|
|
|
|
|
|
State 54
|
|
|
|
10 stmt: CONTINUE expr . [$end, IF, ELSE, WHILE, FOR, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LNOT, LBRACE, LPAREN, LBRACKET, SEMICOLON, POUND]
|
|
77 index_expr: expr . LBRACKET expr RBRACKET
|
|
78 | expr . DOT IDENT
|
|
80 ex_index_expr: expr . LBRACKET expr RBRACKET
|
|
81 | expr . DOT IDENT
|
|
|
|
LBRACKET shift, and go to state 77
|
|
DOT shift, and go to state 78
|
|
|
|
LBRACKET [reduce using rule 10 (stmt)]
|
|
$default reduce using rule 10 (stmt)
|
|
|
|
|
|
State 55
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
18 | IDENT ASSIGN . expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 117
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 56
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
19 | IDENT ASSIGNPLUS . expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 118
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 57
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
20 | IDENT ASSIGNMINUS . expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 119
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 58
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
21 | IDENT ASSIGNSTAR . expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 120
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 59
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
22 | IDENT ASSIGNSLASH . expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 121
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 60
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
23 | IDENT ASSIGNDSTAR . expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 122
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 61
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
24 | IDENT ASSIGNBAND . expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 123
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 62
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
25 | IDENT ASSIGNBOR . expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 124
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 63
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
26 | IDENT ASSIGNBXOR . expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 125
|
|
control_expr go to state 26
|
|
assign_expr go to state 27
|
|
logic_expr go to state 28
|
|
ulogic_expr go to state 29
|
|
rel_expr go to state 30
|
|
term_expr go to state 31
|
|
factor_expr go to state 32
|
|
power_expr go to state 33
|
|
tbang_expr go to state 34
|
|
binary_expr go to state 35
|
|
ubinary_expr go to state 36
|
|
ulen_expr go to state 37
|
|
call_expr go to state 38
|
|
funcdecl_expr go to state 39
|
|
index_expr go to state 40
|
|
ex_index_expr go to state 41
|
|
ref_expr go to state 42
|
|
lit_expr go to state 43
|
|
gen_expr go to state 44
|
|
paren_expr go to state 45
|
|
|
|
|
|
State 64
|
|
|
|
85 lit_expr: MINUS INT .
|
|
|
|
$default reduce using rule 85 (lit_expr)
|
|
|
|
|
|
State 65
|
|
|
|
77 index_expr: expr . LBRACKET expr RBRACKET
|
|
78 | expr . DOT IDENT
|
|
80 ex_index_expr: expr . LBRACKET expr RBRACKET
|
|
81 | expr . DOT IDENT
|
|
|
|
LBRACKET shift, and go to state 77
|
|
DOT shift, and go to state 78
|
|
|
|
|
|
State 66
|
|
|
|
65 binary_expr: ubinary_expr . [PLUS, MINUS, STAR, SLASH, PERCENT, DSTAR, BAND, BOR, BXOR, LAND, LOR, EQUAL, NEQUAL, LESS, GREATER, LESSEQ, GREATEREQ, RSHIFT, LSHIFT, LBRACKET, DOT, TBANG]
|
|
66 ubinary_expr: BNOT ubinary_expr . [$end, IF, THEN, ELSE, WHILE, FOR, DO, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, PLUS, MINUS, STAR, SLASH, PERCENT, DSTAR, BAND, BOR, BXOR, BNOT, LAND, LOR, LNOT, EQUAL, NEQUAL, LESS, GREATER, LESSEQ, GREATEREQ, RSHIFT, LSHIFT, LBRACE, RBRACE, LPAREN, RPAREN, LBRACKET, RBRACKET, DOT, SEMICOLON, COMMA, POUND, TBANG]
|
|
|
|
PLUS reduce using rule 65 (binary_expr)
|
|
PLUS [reduce using rule 66 (ubinary_expr)]
|
|
MINUS reduce using rule 65 (binary_expr)
|
|
MINUS [reduce using rule 66 (ubinary_expr)]
|
|
STAR reduce using rule 65 (binary_expr)
|
|
STAR [reduce using rule 66 (ubinary_expr)]
|
|
SLASH reduce using rule 65 (binary_expr)
|
|
SLASH [reduce using rule 66 (ubinary_expr)]
|
|
PERCENT reduce using rule 65 (binary_expr)
|
|
PERCENT [reduce using rule 66 (ubinary_expr)]
|
|
DSTAR reduce using rule 65 (binary_expr)
|
|
DSTAR [reduce using rule 66 (ubinary_expr)]
|
|
BAND reduce using rule 65 (binary_expr)
|
|
BAND [reduce using rule 66 (ubinary_expr)]
|
|
BOR reduce using rule 65 (binary_expr)
|
|
BOR [reduce using rule 66 (ubinary_expr)]
|
|
BXOR reduce using rule 65 (binary_expr)
|
|
BXOR [reduce using rule 66 (ubinary_expr)]
|
|
LAND reduce using rule 65 (binary_expr)
|
|
LAND [reduce using rule 66 (ubinary_expr)]
|
|
LOR reduce using rule 65 (binary_expr)
|
|
LOR [reduce using rule 66 (ubinary_expr)]
|
|
EQUAL reduce using rule 65 (binary_expr)
|
|
EQUAL [reduce using rule 66 (ubinary_expr)]
|
|
NEQUAL reduce using rule 65 (binary_expr)
|
|
NEQUAL [reduce using rule 66 (ubinary_expr)]
|
|
LESS reduce using rule 65 (binary_expr)
|
|
LESS [reduce using rule 66 (ubinary_expr)]
|
|
GREATER reduce using rule 65 (binary_expr)
|
|
GREATER [reduce using rule 66 (ubinary_expr)]
|
|
LESSEQ reduce using rule 65 (binary_expr)
|
|
LESSEQ [reduce using rule 66 (ubinary_expr)]
|
|
GREATEREQ reduce using rule 65 (binary_expr)
|
|
GREATEREQ [reduce using rule 66 (ubinary_expr)]
|
|
RSHIFT reduce using rule 65 (binary_expr)
|
|
RSHIFT [reduce using rule 66 (ubinary_expr)]
|
|
LSHIFT reduce using rule 65 (binary_expr)
|
|
LSHIFT [reduce using rule 66 (ubinary_expr)]
|
|
LBRACKET reduce using rule 65 (binary_expr)
|
|
LBRACKET [reduce using rule 66 (ubinary_expr)]
|
|
DOT reduce using rule 65 (binary_expr)
|
|
DOT [reduce using rule 66 (ubinary_expr)]
|
|
TBANG reduce using rule 65 (binary_expr)
|
|
TBANG [reduce using rule 66 (ubinary_expr)]
|
|
$default reduce using rule 66 (ubinary_expr)
|
|
|
|
|
|
State 67
|
|
|
|
39 logic_expr: ulogic_expr . [LAND, LOR, LBRACKET, DOT]
|
|
40 ulogic_expr: LNOT ulogic_expr . [$end, IF, THEN, ELSE, WHILE, FOR, DO, FUNC, LAMBDA, RETURN, BREAK, CONTINUE, END, NONE, IDENT, INT, FLOAT, STRING, MINUS, BNOT, LAND, LOR, LNOT, LBRACE, RBRACE, LPAREN, RPAREN, LBRACKET, RBRACKET, DOT, SEMICOLON, COMMA, POUND]
|
|
|
|
LAND reduce using rule 39 (logic_expr)
|
|
LAND [reduce using rule 40 (ulogic_expr)]
|
|
LOR reduce using rule 39 (logic_expr)
|
|
LOR [reduce using rule 40 (ulogic_expr)]
|
|
LBRACKET reduce using rule 39 (logic_expr)
|
|
LBRACKET [reduce using rule 40 (ulogic_expr)]
|
|
DOT reduce using rule 39 (logic_expr)
|
|
DOT [reduce using rule 40 (ulogic_expr)]
|
|
$default reduce using rule 40 (ulogic_expr)
|
|
|
|
|
|
State 68
|
|
|
|
107 assoc_item: IDENT . ASSIGN expr
|
|
|
|
ASSIGN shift, and go to state 126
|
|
|
|
|
|
State 69
|
|
|
|
12 expr: . control_expr
|
|
13 control_expr: . IF expr THEN stmt_list END
|
|
14 | . IF expr THEN stmt_list ELSE stmt_list END
|
|
15 | . WHILE expr DO stmt_list END
|
|
16 | . FOR IDENT IN expr DO stmt_list END
|
|
17 | . assign_expr
|
|
18 assign_expr: . IDENT ASSIGN expr
|
|
19 | . IDENT ASSIGNPLUS expr
|
|
20 | . IDENT ASSIGNMINUS expr
|
|
21 | . IDENT ASSIGNSTAR expr
|
|
22 | . IDENT ASSIGNSLASH expr
|
|
23 | . IDENT ASSIGNDSTAR expr
|
|
24 | . IDENT ASSIGNBAND expr
|
|
25 | . IDENT ASSIGNBOR expr
|
|
26 | . IDENT ASSIGNBXOR expr
|
|
27 | . ex_index_expr ASSIGN expr
|
|
28 | . ex_index_expr ASSIGNPLUS expr
|
|
29 | . ex_index_expr ASSIGNMINUS expr
|
|
30 | . ex_index_expr ASSIGNSTAR expr
|
|
31 | . ex_index_expr ASSIGNSLASH expr
|
|
32 | . ex_index_expr ASSIGNDSTAR expr
|
|
33 | . ex_index_expr ASSIGNBAND expr
|
|
34 | . ex_index_expr ASSIGNBOR expr
|
|
35 | . ex_index_expr ASSIGNBXOR expr
|
|
36 | . logic_expr
|
|
37 logic_expr: . logic_expr LAND ulogic_expr
|
|
38 | . logic_expr LOR ulogic_expr
|
|
39 | . ulogic_expr
|
|
40 ulogic_expr: . LNOT ulogic_expr
|
|
41 | . rel_expr
|
|
42 rel_expr: . term_expr EQUAL rel_expr
|
|
43 | . term_expr NEQUAL rel_expr
|
|
44 | . term_expr LESS rel_expr
|
|
45 | . term_expr GREATER rel_expr
|
|
46 | . term_expr LESSEQ rel_expr
|
|
47 | . term_expr GREATEREQ rel_expr
|
|
48 | . term_expr
|
|
49 term_expr: . term_expr PLUS factor_expr
|
|
50 | . term_expr MINUS factor_expr
|
|
51 | . factor_expr
|
|
52 factor_expr: . factor_expr STAR power_expr
|
|
53 | . factor_expr SLASH power_expr
|
|
54 | . factor_expr PERCENT power_expr
|
|
55 | . power_expr
|
|
56 power_expr: . tbang_expr DSTAR power_expr
|
|
57 | . tbang_expr
|
|
58 tbang_expr: . binary_expr TBANG tbang_expr
|
|
59 | . binary_expr
|
|
60 binary_expr: . binary_expr BAND binary_expr
|
|
61 | . binary_expr BOR binary_expr
|
|
62 | . binary_expr BXOR binary_expr
|
|
63 | . binary_expr LSHIFT binary_expr
|
|
64 | . binary_expr RSHIFT binary_expr
|
|
65 | . ubinary_expr
|
|
66 ubinary_expr: . BNOT ubinary_expr
|
|
67 | . ulen_expr
|
|
68 ulen_expr: . POUND ulen_expr
|
|
69 | . call_expr
|
|
70 call_expr: . call_expr LPAREN expr_list RPAREN
|
|
71 | . call_expr COLON IDENT LPAREN expr_list RPAREN
|
|
72 | . funcdecl_expr
|
|
73 funcdecl_expr: . FUNC IDENT LPAREN ident_list RPAREN stmt_list END
|
|
74 | . FUNC LPAREN ident_list RPAREN stmt_list END
|
|
75 | . LAMBDA LPAREN ident_list RPAREN expr END
|
|
76 | . index_expr
|
|
77 index_expr: . expr LBRACKET expr RBRACKET
|
|
78 | . expr DOT IDENT
|
|
79 | . ref_expr
|
|
80 ex_index_expr: . expr LBRACKET expr RBRACKET
|
|
81 | . expr DOT IDENT
|
|
82 ref_expr: . IDENT
|
|
83 | . lit_expr
|
|
84 lit_expr: . INT
|
|
85 | . MINUS INT
|
|
86 | . FLOAT
|
|
87 | . STRING
|
|
88 | . NONE
|
|
89 | . gen_expr
|
|
90 gen_expr: . LBRACKET expr_list RBRACKET
|
|
91 | . LBRACE assoc_list RBRACE
|
|
92 | . paren_expr
|
|
93 paren_expr: . LPAREN expr RPAREN
|
|
106 assoc_item: LBRACKET . expr RBRACKET ASSIGN expr
|
|
|
|
IF shift, and go to state 4
|
|
WHILE shift, and go to state 5
|
|
FOR shift, and go to state 6
|
|
FUNC shift, and go to state 7
|
|
LAMBDA shift, and go to state 8
|
|
NONE shift, and go to state 12
|
|
IDENT shift, and go to state 13
|
|
INT shift, and go to state 14
|
|
FLOAT shift, and go to state 15
|
|
STRING shift, and go to state 16
|
|
MINUS shift, and go to state 17
|
|
BNOT shift, and go to state 18
|
|
LNOT shift, and go to state 19
|
|
LBRACE shift, and go to state 20
|
|
LPAREN shift, and go to state 21
|
|
LBRACKET shift, and go to state 22
|
|
POUND shift, and go to state 23
|
|
|
|
expr go to state 127
|
|
control_expr go to state 26
|
|