dhaka 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. data/lib/evaluator/evaluator.rb +18 -17
  2. data/lib/grammar/grammar.rb +4 -5
  3. data/lib/lexer/dfa.rb +63 -13
  4. data/lib/lexer/lexeme.rb +3 -4
  5. data/lib/lexer/lexer.rb +12 -3
  6. data/lib/lexer/lexer_run.rb +22 -10
  7. data/lib/lexer/regex_grammar.rb +88 -14
  8. data/lib/lexer/regex_parser.rb +1523 -1401
  9. data/lib/lexer/specification.rb +29 -3
  10. data/lib/lexer/state.rb +32 -9
  11. data/lib/lexer/state_machine.rb +2 -2
  12. data/lib/parser/channel.rb +4 -4
  13. data/lib/parser/parser.rb +17 -12
  14. data/lib/parser/parser_state.rb +3 -1
  15. data/test/chittagong/chittagong_lexer.rb +63 -63
  16. data/test/chittagong/chittagong_lexer.rb.rej +189 -0
  17. data/test/chittagong/chittagong_lexer_specification.rb +6 -8
  18. data/test/chittagong/chittagong_parser.rb +659 -659
  19. data/test/chittagong/chittagong_parser.rb.rej +1623 -0
  20. data/test/{another_lalr_but_not_slr_grammar.rb → core/another_lalr_but_not_slr_grammar.rb} +1 -1
  21. data/test/{compiled_parser_test.rb → core/compiled_parser_test.rb} +1 -1
  22. data/test/core/dfa_test.rb +170 -0
  23. data/test/{evaluator_test.rb → core/evaluator_test.rb} +3 -3
  24. data/test/{grammar_test.rb → core/grammar_test.rb} +3 -3
  25. data/test/{lalr_but_not_slr_grammar.rb → core/lalr_but_not_slr_grammar.rb} +0 -0
  26. data/test/core/lexer_test.rb +139 -0
  27. data/test/{malformed_grammar.rb → core/malformed_grammar.rb} +0 -0
  28. data/test/{malformed_grammar_test.rb → core/malformed_grammar_test.rb} +1 -1
  29. data/test/{nullable_grammar.rb → core/nullable_grammar.rb} +0 -0
  30. data/test/{parse_result_test.rb → core/parse_result_test.rb} +1 -1
  31. data/test/{parser_state_test.rb → core/parser_state_test.rb} +1 -1
  32. data/test/{parser_test.rb → core/parser_test.rb} +2 -2
  33. data/test/{precedence_grammar.rb → core/precedence_grammar.rb} +0 -0
  34. data/test/{precedence_grammar_test.rb → core/precedence_grammar_test.rb} +1 -1
  35. data/test/{rr_conflict_grammar.rb → core/rr_conflict_grammar.rb} +0 -0
  36. data/test/{simple_grammar.rb → core/simple_grammar.rb} +0 -0
  37. data/test/{sr_conflict_grammar.rb → core/sr_conflict_grammar.rb} +0 -0
  38. metadata +25 -22
  39. data/test/lexer_test.rb +0 -215
@@ -1,19 +1,17 @@
1
1
  # lipi:lexer_spec
2
2
  class ChittagongLexerSpecification < Dhaka::LexerSpecification
3
3
  KEYWORDS = %w| print if else end while def return |
4
-
5
- %w| == = - ! > < , |.each do |chars|
6
- for_pattern(chars) do
7
- create_token(chars)
8
- end
4
+
5
+ for_pattern('==') do
6
+ create_token('==')
9
7
  end
10
8
 
11
- %w| + * ( ) / ^ |.each do |char|
12
- for_pattern("\\#{char}") do
9
+ %w| = - ! > < , + * ( ) / ^ |.each do |char|
10
+ for_symbol(char) do
13
11
  create_token(char)
14
12
  end
15
13
  end
16
-
14
+
17
15
  for_pattern("\n") do
18
16
  create_token('newline')
19
17
  end
@@ -4,876 +4,876 @@ class ChittagongParser < Dhaka::CompiledParser
4
4
 
5
5
  start_with 0
6
6
 
7
- at_state(103) {
7
+ at_state(105) {
8
8
  for_symbols("_End_") { reduce_with "program" }
9
9
  }
10
10
 
11
- at_state(93) {
12
- for_symbols("_End_", "newline") { reduce_with "multiple_main_body_statements" }
13
- }
14
-
15
- at_state(87) {
16
- for_symbols("==") { shift_to 22 }
17
- for_symbols(">") { shift_to 10 }
18
- for_symbols("/") { shift_to 18 }
19
- for_symbols("newline") { shift_to 1 }
20
- for_symbols("^") { shift_to 20 }
21
- for_symbols("*") { shift_to 24 }
22
- for_symbols("-") { shift_to 16 }
23
- for_symbols("<") { shift_to 14 }
24
- for_symbols("terms") { shift_to 88 }
25
- for_symbols("+") { shift_to 12 }
11
+ at_state(67) {
12
+ for_symbols("else") { shift_to 69 }
13
+ for_symbols("end") { shift_to 68 }
14
+ for_symbols("while") { shift_to 75 }
15
+ for_symbols("if") { shift_to 52 }
16
+ for_symbols("newline") { shift_to 2 }
17
+ for_symbols("var_name") { shift_to 61 }
18
+ for_symbols("print") { shift_to 5 }
19
+ for_symbols("word_literal") { shift_to 30 }
20
+ for_symbols("return") { shift_to 59 }
21
+ for_symbols("function_name") { shift_to 55 }
22
+ for_symbols("simple_statement") { shift_to 64 }
23
+ for_symbols("function_body_statement") { shift_to 74 }
26
24
  }
27
25
 
28
- at_state(76) {
29
- for_symbols("function_name") { shift_to 62 }
30
- for_symbols("var_name") { shift_to 66 }
31
- for_symbols("return") { shift_to 60 }
32
- for_symbols("newline") { shift_to 58 }
33
- for_symbols("function_body") { shift_to 77 }
34
- for_symbols("while") { shift_to 53 }
35
- for_symbols("if") { shift_to 49 }
36
- for_symbols("print") { shift_to 70 }
37
- for_symbols("simple_statement") { shift_to 52 }
38
- for_symbols("word_literal") { shift_to 27 }
39
- for_symbols("function_body_statement") { shift_to 72 }
26
+ at_state(54) {
27
+ for_symbols("while") { shift_to 75 }
28
+ for_symbols("if") { shift_to 52 }
29
+ for_symbols("newline") { shift_to 2 }
30
+ for_symbols("var_name") { shift_to 61 }
31
+ for_symbols("print") { shift_to 5 }
32
+ for_symbols("word_literal") { shift_to 30 }
33
+ for_symbols("function_body") { shift_to 66 }
34
+ for_symbols("return") { shift_to 59 }
35
+ for_symbols("function_name") { shift_to 55 }
36
+ for_symbols("simple_statement") { shift_to 64 }
37
+ for_symbols("function_body_statement") { shift_to 65 }
40
38
  }
41
39
 
42
- at_state(6) {
43
- for_symbols("(") { shift_to 7 }
40
+ at_state(55) {
41
+ for_symbols("(") { shift_to 56 }
44
42
  }
45
43
 
46
- at_state(39) {
47
- for_symbols("_End_", "newline") { reduce_with "main_body_simple_statement" }
44
+ at_state(8) {
45
+ for_symbols("(") { shift_to 9 }
48
46
  }
49
47
 
50
- at_state(14) {
51
- for_symbols("(") { shift_to 28 }
52
- for_symbols("-") { shift_to 5 }
53
- for_symbols("numeric_literal") { shift_to 26 }
54
- for_symbols("var_name") { shift_to 8 }
55
- for_symbols("function_name") { shift_to 6 }
56
- for_symbols("expression") { shift_to 15 }
57
- for_symbols("!") { shift_to 4 }
58
- for_symbols("word_literal") { shift_to 27 }
48
+ at_state(40) {
49
+ for_symbols("-") { shift_to 7 }
50
+ for_symbols("!") { shift_to 34 }
51
+ for_symbols("numeric_literal") { shift_to 6 }
52
+ for_symbols("(") { shift_to 31 }
53
+ for_symbols("word_literal") { shift_to 30 }
54
+ for_symbols("var_name") { shift_to 29 }
55
+ for_symbols("function_name") { shift_to 8 }
56
+ for_symbols("expression") { shift_to 41 }
59
57
  }
60
58
 
61
- at_state(16) {
62
- for_symbols("(") { shift_to 28 }
63
- for_symbols("expression") { shift_to 17 }
64
- for_symbols("-") { shift_to 5 }
65
- for_symbols("numeric_literal") { shift_to 26 }
66
- for_symbols("var_name") { shift_to 8 }
67
- for_symbols("function_name") { shift_to 6 }
68
- for_symbols("!") { shift_to 4 }
69
- for_symbols("word_literal") { shift_to 27 }
59
+ at_state(12) {
60
+ for_symbols("==") { shift_to 27 }
61
+ for_symbols("*") { shift_to 15 }
62
+ for_symbols(",", ")") { reduce_with "multiple_args" }
63
+ for_symbols("<") { shift_to 25 }
64
+ for_symbols("/") { shift_to 13 }
65
+ for_symbols(">") { shift_to 23 }
66
+ for_symbols("^") { shift_to 19 }
67
+ for_symbols("+") { shift_to 21 }
68
+ for_symbols("-") { shift_to 17 }
70
69
  }
71
70
 
72
- at_state(12) {
73
- for_symbols("(") { shift_to 28 }
74
- for_symbols("-") { shift_to 5 }
75
- for_symbols("numeric_literal") { shift_to 26 }
76
- for_symbols("var_name") { shift_to 8 }
77
- for_symbols("function_name") { shift_to 6 }
78
- for_symbols("!") { shift_to 4 }
79
- for_symbols("expression") { shift_to 13 }
80
- for_symbols("word_literal") { shift_to 27 }
71
+ at_state(99) {
72
+ for_symbols("while") { shift_to 88 }
73
+ for_symbols("newline") { shift_to 2 }
74
+ for_symbols("var_name") { shift_to 61 }
75
+ for_symbols("print") { shift_to 5 }
76
+ for_symbols("main_body") { shift_to 100 }
77
+ for_symbols("word_literal") { shift_to 30 }
78
+ for_symbols("if") { shift_to 40 }
79
+ for_symbols("main_body_statement") { shift_to 87 }
80
+ for_symbols("def") { shift_to 43 }
81
+ for_symbols("function_name") { shift_to 55 }
82
+ for_symbols("simple_statement") { shift_to 86 }
81
83
  }
82
84
 
83
- at_state(0) {
84
- for_symbols("opt_terms") { shift_to 2 }
85
- for_symbols("word_literal", "def", "print", "if", "while") { reduce_with "no_terms" }
86
- for_symbols("newline") { shift_to 1 }
87
- for_symbols("terms") { shift_to 105 }
85
+ at_state(75) {
86
+ for_symbols("-") { shift_to 7 }
87
+ for_symbols("!") { shift_to 34 }
88
+ for_symbols("numeric_literal") { shift_to 6 }
89
+ for_symbols("(") { shift_to 31 }
90
+ for_symbols("expression") { shift_to 76 }
91
+ for_symbols("word_literal") { shift_to 30 }
92
+ for_symbols("var_name") { shift_to 29 }
93
+ for_symbols("function_name") { shift_to 8 }
88
94
  }
89
95
 
90
- at_state(85) {
91
- for_symbols("(") { reduce_with "function_name" }
96
+ at_state(31) {
97
+ for_symbols("-") { shift_to 7 }
98
+ for_symbols("!") { shift_to 34 }
99
+ for_symbols("numeric_literal") { shift_to 6 }
100
+ for_symbols("(") { shift_to 31 }
101
+ for_symbols("expression") { shift_to 32 }
102
+ for_symbols("word_literal") { shift_to 30 }
103
+ for_symbols("var_name") { shift_to 29 }
104
+ for_symbols("function_name") { shift_to 8 }
92
105
  }
93
106
 
94
- at_state(82) {
95
- for_symbols("function_name") { shift_to 62 }
96
- for_symbols("var_name") { shift_to 66 }
97
- for_symbols("return") { shift_to 60 }
98
- for_symbols("newline") { shift_to 58 }
99
- for_symbols("function_body_statement") { shift_to 69 }
100
- for_symbols("while") { shift_to 53 }
101
- for_symbols("end") { shift_to 83 }
102
- for_symbols("if") { shift_to 49 }
103
- for_symbols("print") { shift_to 70 }
104
- for_symbols("simple_statement") { shift_to 52 }
105
- for_symbols("word_literal") { shift_to 27 }
107
+ at_state(26) {
108
+ for_symbols("*") { shift_to 15 }
109
+ for_symbols("/") { shift_to 13 }
110
+ for_symbols("==", ",", "_End_", "newline", ")") { reduce_with "less_than_comparison" }
111
+ for_symbols("^") { shift_to 19 }
112
+ for_symbols("+") { shift_to 21 }
113
+ for_symbols("-") { shift_to 17 }
106
114
  }
107
115
 
108
- at_state(22) {
109
- for_symbols("(") { shift_to 28 }
110
- for_symbols("-") { shift_to 5 }
111
- for_symbols("numeric_literal") { shift_to 26 }
112
- for_symbols("var_name") { shift_to 8 }
113
- for_symbols("function_name") { shift_to 6 }
114
- for_symbols("expression") { shift_to 23 }
115
- for_symbols("!") { shift_to 4 }
116
- for_symbols("word_literal") { shift_to 27 }
116
+ at_state(43) {
117
+ for_symbols("word_literal") { shift_to 85 }
118
+ for_symbols("function_name") { shift_to 44 }
117
119
  }
118
120
 
119
- at_state(19) {
120
- for_symbols("^") { shift_to 20 }
121
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", ")", "newline", "*") { reduce_with "division" }
121
+ at_state(28) {
122
+ for_symbols("*") { shift_to 15 }
123
+ for_symbols(",", "_End_", "newline", ")") { reduce_with "equality_comparison" }
124
+ for_symbols("<") { shift_to 25 }
125
+ for_symbols("/") { shift_to 13 }
126
+ for_symbols(">") { shift_to 23 }
127
+ for_symbols("^") { shift_to 19 }
128
+ for_symbols("+") { shift_to 21 }
129
+ for_symbols("-") { shift_to 17 }
122
130
  }
123
131
 
124
- at_state(100) {
125
- for_symbols("_End_", "newline") { reduce_with "main_body_if_else_statement" }
132
+ at_state(6) {
133
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", "^", "newline", ")", "*") { reduce_with "literal" }
126
134
  }
127
135
 
128
- at_state(75) {
129
- for_symbols("newline") { shift_to 1 }
130
- for_symbols("terms") { shift_to 76 }
136
+ at_state(32) {
137
+ for_symbols("==") { shift_to 27 }
138
+ for_symbols("*") { shift_to 15 }
139
+ for_symbols("<") { shift_to 25 }
140
+ for_symbols("/") { shift_to 13 }
141
+ for_symbols(">") { shift_to 23 }
142
+ for_symbols(")") { shift_to 33 }
143
+ for_symbols("^") { shift_to 19 }
144
+ for_symbols("+") { shift_to 21 }
145
+ for_symbols("-") { shift_to 17 }
131
146
  }
132
147
 
133
- at_state(43) {
134
- for_symbols(")") { shift_to 47 }
135
- for_symbols(",") { shift_to 44 }
148
+ at_state(101) {
149
+ for_symbols("while") { shift_to 88 }
150
+ for_symbols("newline") { shift_to 2 }
151
+ for_symbols("var_name") { shift_to 61 }
152
+ for_symbols("print") { shift_to 5 }
153
+ for_symbols("main_body_statement") { shift_to 94 }
154
+ for_symbols("word_literal") { shift_to 30 }
155
+ for_symbols("if") { shift_to 40 }
156
+ for_symbols("end") { shift_to 102 }
157
+ for_symbols("def") { shift_to 43 }
158
+ for_symbols("function_name") { shift_to 55 }
159
+ for_symbols("simple_statement") { shift_to 86 }
136
160
  }
137
161
 
138
- at_state(52) {
139
- for_symbols("newline") { reduce_with "function_body_simple_statement" }
162
+ at_state(88) {
163
+ for_symbols("-") { shift_to 7 }
164
+ for_symbols("!") { shift_to 34 }
165
+ for_symbols("numeric_literal") { shift_to 6 }
166
+ for_symbols("(") { shift_to 31 }
167
+ for_symbols("word_literal") { shift_to 30 }
168
+ for_symbols("var_name") { shift_to 29 }
169
+ for_symbols("expression") { shift_to 89 }
170
+ for_symbols("function_name") { shift_to 8 }
140
171
  }
141
172
 
142
- at_state(2) {
143
- for_symbols("function_name") { shift_to 62 }
144
- for_symbols("var_name") { shift_to 66 }
145
- for_symbols("main_body_statement") { shift_to 89 }
146
- for_symbols("while") { shift_to 86 }
147
- for_symbols("def") { shift_to 40 }
148
- for_symbols("if") { shift_to 3 }
149
- for_symbols("print") { shift_to 70 }
150
- for_symbols("simple_statement") { shift_to 39 }
151
- for_symbols("main_body") { shift_to 102 }
152
- for_symbols("word_literal") { shift_to 27 }
173
+ at_state(41) {
174
+ for_symbols("==") { shift_to 27 }
175
+ for_symbols("*") { shift_to 15 }
176
+ for_symbols("terms") { shift_to 42 }
177
+ for_symbols("<") { shift_to 25 }
178
+ for_symbols("/") { shift_to 13 }
179
+ for_symbols(">") { shift_to 23 }
180
+ for_symbols("newline") { shift_to 3 }
181
+ for_symbols("^") { shift_to 19 }
182
+ for_symbols("+") { shift_to 21 }
183
+ for_symbols("-") { shift_to 17 }
153
184
  }
154
185
 
155
- at_state(11) {
156
- for_symbols("/") { shift_to 18 }
157
- for_symbols("^") { shift_to 20 }
158
- for_symbols("==", ",", "_End_", ")", "newline") { reduce_with "greater_than_comparison" }
159
- for_symbols("*") { shift_to 24 }
160
- for_symbols("-") { shift_to 16 }
161
- for_symbols("+") { shift_to 12 }
186
+ at_state(27) {
187
+ for_symbols("-") { shift_to 7 }
188
+ for_symbols("!") { shift_to 34 }
189
+ for_symbols("numeric_literal") { shift_to 6 }
190
+ for_symbols("(") { shift_to 31 }
191
+ for_symbols("expression") { shift_to 28 }
192
+ for_symbols("word_literal") { shift_to 30 }
193
+ for_symbols("var_name") { shift_to 29 }
194
+ for_symbols("function_name") { shift_to 8 }
162
195
  }
163
196
 
164
- at_state(72) {
165
- for_symbols("newline") { reduce_with "single_function_body_statement" }
197
+ at_state(9) {
198
+ for_symbols("-") { shift_to 7 }
199
+ for_symbols("!") { shift_to 34 }
200
+ for_symbols(",", ")") { reduce_with "no_args" }
201
+ for_symbols("numeric_literal") { shift_to 6 }
202
+ for_symbols("(") { shift_to 31 }
203
+ for_symbols("word_literal") { shift_to 30 }
204
+ for_symbols("var_name") { shift_to 29 }
205
+ for_symbols("function_name") { shift_to 8 }
206
+ for_symbols("expression") { shift_to 37 }
207
+ for_symbols("arg_list") { shift_to 10 }
166
208
  }
167
209
 
168
- at_state(50) {
169
- for_symbols("==") { shift_to 22 }
170
- for_symbols(">") { shift_to 10 }
171
- for_symbols("/") { shift_to 18 }
172
- for_symbols("newline") { shift_to 1 }
173
- for_symbols("^") { shift_to 20 }
174
- for_symbols("*") { shift_to 24 }
175
- for_symbols("-") { shift_to 16 }
176
- for_symbols("terms") { shift_to 51 }
177
- for_symbols("<") { shift_to 14 }
178
- for_symbols("+") { shift_to 12 }
210
+ at_state(60) {
211
+ for_symbols("==") { shift_to 27 }
212
+ for_symbols("*") { shift_to 15 }
213
+ for_symbols("<") { shift_to 25 }
214
+ for_symbols("/") { shift_to 13 }
215
+ for_symbols("newline") { reduce_with "return_statement" }
216
+ for_symbols(">") { shift_to 23 }
217
+ for_symbols("^") { shift_to 19 }
218
+ for_symbols("+") { shift_to 21 }
219
+ for_symbols("-") { shift_to 17 }
179
220
  }
180
221
 
181
- at_state(37) {
182
- for_symbols("==") { shift_to 22 }
183
- for_symbols(">") { shift_to 10 }
184
- for_symbols("/") { shift_to 18 }
185
- for_symbols("newline") { shift_to 1 }
186
- for_symbols("^") { shift_to 20 }
187
- for_symbols("*") { shift_to 24 }
188
- for_symbols("-") { shift_to 16 }
189
- for_symbols("<") { shift_to 14 }
190
- for_symbols("terms") { shift_to 38 }
191
- for_symbols("+") { shift_to 12 }
222
+ at_state(73) {
223
+ for_symbols("newline") { reduce_with "function_body_if_else_statement" }
192
224
  }
193
225
 
194
- at_state(38) {
195
- for_symbols("function_name") { shift_to 62 }
196
- for_symbols("var_name") { shift_to 66 }
197
- for_symbols("main_body_statement") { shift_to 89 }
198
- for_symbols("while") { shift_to 86 }
199
- for_symbols("newline") { shift_to 58 }
200
- for_symbols("def") { shift_to 40 }
201
- for_symbols("if") { shift_to 3 }
202
- for_symbols("print") { shift_to 70 }
203
- for_symbols("simple_statement") { shift_to 39 }
204
- for_symbols("main_body") { shift_to 94 }
205
- for_symbols("word_literal") { shift_to 27 }
226
+ at_state(24) {
227
+ for_symbols("*") { shift_to 15 }
228
+ for_symbols("==", ",", "_End_", "newline", ")") { reduce_with "greater_than_comparison" }
229
+ for_symbols("/") { shift_to 13 }
230
+ for_symbols("^") { shift_to 19 }
231
+ for_symbols("+") { shift_to 21 }
232
+ for_symbols("-") { shift_to 17 }
206
233
  }
207
234
 
208
- at_state(62) {
209
- for_symbols("(") { shift_to 63 }
235
+ at_state(65) {
236
+ for_symbols("newline") { reduce_with "single_function_body_statement" }
210
237
  }
211
238
 
212
- at_state(49) {
213
- for_symbols("(") { shift_to 28 }
214
- for_symbols("expression") { shift_to 50 }
215
- for_symbols("-") { shift_to 5 }
216
- for_symbols("numeric_literal") { shift_to 26 }
217
- for_symbols("var_name") { shift_to 8 }
218
- for_symbols("function_name") { shift_to 6 }
219
- for_symbols("!") { shift_to 4 }
220
- for_symbols("word_literal") { shift_to 27 }
239
+ at_state(53) {
240
+ for_symbols("==") { shift_to 27 }
241
+ for_symbols("*") { shift_to 15 }
242
+ for_symbols("<") { shift_to 25 }
243
+ for_symbols("/") { shift_to 13 }
244
+ for_symbols(">") { shift_to 23 }
245
+ for_symbols("terms") { shift_to 54 }
246
+ for_symbols("newline") { shift_to 3 }
247
+ for_symbols("^") { shift_to 19 }
248
+ for_symbols("+") { shift_to 21 }
249
+ for_symbols("-") { shift_to 17 }
221
250
  }
222
251
 
223
- at_state(81) {
224
- for_symbols("terms") { shift_to 82 }
225
- for_symbols("newline") { shift_to 1 }
252
+ at_state(39) {
253
+ for_symbols("==") { shift_to 27 }
254
+ for_symbols("*") { shift_to 15 }
255
+ for_symbols("<") { shift_to 25 }
256
+ for_symbols("/") { shift_to 13 }
257
+ for_symbols(">") { shift_to 23 }
258
+ for_symbols("^") { shift_to 19 }
259
+ for_symbols("+") { shift_to 21 }
260
+ for_symbols("_End_", "newline") { reduce_with "print_statement" }
261
+ for_symbols("-") { shift_to 17 }
226
262
  }
227
263
 
228
- at_state(70) {
229
- for_symbols("(") { shift_to 28 }
230
- for_symbols("-") { shift_to 5 }
231
- for_symbols("expression") { shift_to 71 }
232
- for_symbols("numeric_literal") { shift_to 26 }
233
- for_symbols("var_name") { shift_to 8 }
234
- for_symbols("function_name") { shift_to 6 }
235
- for_symbols("!") { shift_to 4 }
236
- for_symbols("word_literal") { shift_to 27 }
264
+ at_state(15) {
265
+ for_symbols("-") { shift_to 7 }
266
+ for_symbols("!") { shift_to 34 }
267
+ for_symbols("numeric_literal") { shift_to 6 }
268
+ for_symbols("(") { shift_to 31 }
269
+ for_symbols("word_literal") { shift_to 30 }
270
+ for_symbols("var_name") { shift_to 29 }
271
+ for_symbols("function_name") { shift_to 8 }
272
+ for_symbols("expression") { shift_to 16 }
237
273
  }
238
274
 
239
- at_state(7) {
240
- for_symbols("(") { shift_to 28 }
241
- for_symbols("arg_list") { shift_to 31 }
242
- for_symbols("-") { shift_to 5 }
243
- for_symbols("numeric_literal") { shift_to 26 }
244
- for_symbols("expression") { shift_to 9 }
245
- for_symbols("var_name") { shift_to 8 }
246
- for_symbols("function_name") { shift_to 6 }
247
- for_symbols("!") { shift_to 4 }
248
- for_symbols(",", ")") { reduce_with "no_args" }
249
- for_symbols("word_literal") { shift_to 27 }
275
+ at_state(34) {
276
+ for_symbols("expression") { shift_to 35 }
277
+ for_symbols("-") { shift_to 7 }
278
+ for_symbols("!") { shift_to 34 }
279
+ for_symbols("numeric_literal") { shift_to 6 }
280
+ for_symbols("(") { shift_to 31 }
281
+ for_symbols("word_literal") { shift_to 30 }
282
+ for_symbols("var_name") { shift_to 29 }
283
+ for_symbols("function_name") { shift_to 8 }
250
284
  }
251
285
 
252
- at_state(55) {
253
- for_symbols("function_name") { shift_to 62 }
254
- for_symbols("var_name") { shift_to 66 }
255
- for_symbols("return") { shift_to 60 }
256
- for_symbols("function_body") { shift_to 56 }
257
- for_symbols("newline") { shift_to 58 }
258
- for_symbols("while") { shift_to 53 }
259
- for_symbols("if") { shift_to 49 }
260
- for_symbols("print") { shift_to 70 }
261
- for_symbols("simple_statement") { shift_to 52 }
262
- for_symbols("word_literal") { shift_to 27 }
263
- for_symbols("function_body_statement") { shift_to 72 }
286
+ at_state(48) {
287
+ for_symbols(",", ")") { reduce_with "arg_declaration" }
264
288
  }
265
289
 
266
- at_state(9) {
267
- for_symbols("==") { shift_to 22 }
268
- for_symbols(">") { shift_to 10 }
269
- for_symbols("/") { shift_to 18 }
270
- for_symbols(",", ")") { reduce_with "single_arg" }
271
- for_symbols("^") { shift_to 20 }
272
- for_symbols("*") { shift_to 24 }
273
- for_symbols("-") { shift_to 16 }
274
- for_symbols("<") { shift_to 14 }
275
- for_symbols("+") { shift_to 12 }
290
+ at_state(91) {
291
+ for_symbols("newline") { shift_to 3 }
292
+ for_symbols("terms") { shift_to 92 }
276
293
  }
277
294
 
278
- at_state(105) {
279
- for_symbols("newline") { shift_to 58 }
280
- for_symbols("word_literal", "def", "print", "if", "while") { reduce_with "some_terms" }
295
+ at_state(84) {
296
+ for_symbols(",", ")") { reduce_with "single_arg_declaration" }
281
297
  }
282
298
 
283
299
  at_state(83) {
284
300
  for_symbols("_End_", "newline") { reduce_with "function_definition" }
285
301
  }
286
302
 
287
- at_state(15) {
288
- for_symbols("/") { shift_to 18 }
289
- for_symbols("^") { shift_to 20 }
290
- for_symbols("==", ",", "_End_", ")", "newline") { reduce_with "less_than_comparison" }
291
- for_symbols("*") { shift_to 24 }
292
- for_symbols("-") { shift_to 16 }
293
- for_symbols("+") { shift_to 12 }
303
+ at_state(68) {
304
+ for_symbols("newline") { reduce_with "function_body_if_statement" }
294
305
  }
295
306
 
296
- at_state(32) {
297
- for_symbols("(") { shift_to 28 }
298
- for_symbols("-") { shift_to 5 }
299
- for_symbols("numeric_literal") { shift_to 26 }
300
- for_symbols("var_name") { shift_to 8 }
301
- for_symbols("function_name") { shift_to 6 }
302
- for_symbols("expression") { shift_to 33 }
303
- for_symbols("!") { shift_to 4 }
304
- for_symbols("word_literal") { shift_to 27 }
307
+ at_state(2) {
308
+ for_symbols("word_literal", "end", "def", "print", "_End_", "else", "if", "newline", "return", "while") { reduce_with "multiple_terms" }
305
309
  }
306
310
 
307
- at_state(63) {
308
- for_symbols("(") { shift_to 28 }
309
- for_symbols("-") { shift_to 5 }
310
- for_symbols("numeric_literal") { shift_to 26 }
311
- for_symbols("expression") { shift_to 9 }
312
- for_symbols("var_name") { shift_to 8 }
313
- for_symbols("function_name") { shift_to 6 }
314
- for_symbols("!") { shift_to 4 }
315
- for_symbols("arg_list") { shift_to 64 }
316
- for_symbols(",", ")") { reduce_with "no_args" }
317
- for_symbols("word_literal") { shift_to 27 }
311
+ at_state(17) {
312
+ for_symbols("-") { shift_to 7 }
313
+ for_symbols("!") { shift_to 34 }
314
+ for_symbols("numeric_literal") { shift_to 6 }
315
+ for_symbols("(") { shift_to 31 }
316
+ for_symbols("word_literal") { shift_to 30 }
317
+ for_symbols("var_name") { shift_to 29 }
318
+ for_symbols("function_name") { shift_to 8 }
319
+ for_symbols("expression") { shift_to 18 }
318
320
  }
319
321
 
320
- at_state(90) {
321
- for_symbols("terms") { shift_to 91 }
322
- for_symbols("newline") { shift_to 1 }
322
+ at_state(29) {
323
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", "^", "newline", ")", "*") { reduce_with "variable_reference" }
323
324
  }
324
325
 
325
- at_state(64) {
326
- for_symbols(")") { shift_to 65 }
327
- for_symbols(",") { shift_to 32 }
326
+ at_state(20) {
327
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", "newline", ")", "*") { reduce_with "power" }
328
328
  }
329
329
 
330
- at_state(61) {
331
- for_symbols("==") { shift_to 22 }
332
- for_symbols(">") { shift_to 10 }
333
- for_symbols("/") { shift_to 18 }
334
- for_symbols("newline") { reduce_with "return_statement" }
335
- for_symbols("^") { shift_to 20 }
336
- for_symbols("*") { shift_to 24 }
337
- for_symbols("-") { shift_to 16 }
338
- for_symbols("<") { shift_to 14 }
339
- for_symbols("+") { shift_to 12 }
330
+ at_state(102) {
331
+ for_symbols("_End_", "newline") { reduce_with "main_body_if_else_statement" }
340
332
  }
341
333
 
342
- at_state(17) {
343
- for_symbols("/") { shift_to 18 }
344
- for_symbols("==", "+", ",", "-", "<", "_End_", ">", ")", "newline") { reduce_with "subtraction" }
345
- for_symbols("^") { shift_to 20 }
346
- for_symbols("*") { shift_to 24 }
334
+ at_state(92) {
335
+ for_symbols("while") { shift_to 88 }
336
+ for_symbols("newline") { shift_to 2 }
337
+ for_symbols("var_name") { shift_to 61 }
338
+ for_symbols("print") { shift_to 5 }
339
+ for_symbols("main_body_statement") { shift_to 94 }
340
+ for_symbols("word_literal") { shift_to 30 }
341
+ for_symbols("if") { shift_to 40 }
342
+ for_symbols("end") { shift_to 93 }
343
+ for_symbols("def") { shift_to 43 }
344
+ for_symbols("function_name") { shift_to 55 }
345
+ for_symbols("simple_statement") { shift_to 86 }
347
346
  }
348
347
 
349
- at_state(30) {
350
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", "^", ">", ")", "newline", "*") { reduce_with "parenthetized_expression" }
348
+ at_state(86) {
349
+ for_symbols("_End_", "newline") { reduce_with "main_body_simple_statement" }
351
350
  }
352
351
 
353
- at_state(59) {
354
- for_symbols("newline") { reduce_with "function_body_while_statement" }
352
+ at_state(85) {
353
+ for_symbols("(") { reduce_with "function_name" }
355
354
  }
356
355
 
357
- at_state(89) {
358
- for_symbols("_End_", "newline") { reduce_with "single_main_body_statement" }
356
+ at_state(78) {
357
+ for_symbols("newline") { shift_to 3 }
358
+ for_symbols("terms") { shift_to 79 }
359
359
  }
360
360
 
361
- at_state(88) {
362
- for_symbols("function_name") { shift_to 62 }
363
- for_symbols("var_name") { shift_to 66 }
364
- for_symbols("main_body_statement") { shift_to 89 }
365
- for_symbols("main_body") { shift_to 90 }
366
- for_symbols("while") { shift_to 86 }
367
- for_symbols("newline") { shift_to 58 }
368
- for_symbols("def") { shift_to 40 }
369
- for_symbols("if") { shift_to 3 }
370
- for_symbols("print") { shift_to 70 }
371
- for_symbols("simple_statement") { shift_to 39 }
372
- for_symbols("word_literal") { shift_to 27 }
361
+ at_state(33) {
362
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", "^", "newline", ")", "*") { reduce_with "parenthetized_expression" }
373
363
  }
374
364
 
375
- at_state(79) {
376
- for_symbols("newline") { reduce_with "function_body_if_else_statement" }
365
+ at_state(37) {
366
+ for_symbols("==") { shift_to 27 }
367
+ for_symbols("*") { shift_to 15 }
368
+ for_symbols("<") { shift_to 25 }
369
+ for_symbols("/") { shift_to 13 }
370
+ for_symbols(",", ")") { reduce_with "single_arg" }
371
+ for_symbols(">") { shift_to 23 }
372
+ for_symbols("^") { shift_to 19 }
373
+ for_symbols("+") { shift_to 21 }
374
+ for_symbols("-") { shift_to 17 }
377
375
  }
378
376
 
379
- at_state(78) {
380
- for_symbols("function_name") { shift_to 62 }
381
- for_symbols("var_name") { shift_to 66 }
382
- for_symbols("return") { shift_to 60 }
383
- for_symbols("newline") { shift_to 58 }
384
- for_symbols("function_body_statement") { shift_to 69 }
385
- for_symbols("while") { shift_to 53 }
386
- for_symbols("if") { shift_to 49 }
387
- for_symbols("print") { shift_to 70 }
388
- for_symbols("end") { shift_to 79 }
389
- for_symbols("simple_statement") { shift_to 52 }
390
- for_symbols("word_literal") { shift_to 27 }
377
+ at_state(35) {
378
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", "^", "newline", ")", "*") { reduce_with "negation" }
391
379
  }
392
380
 
393
- at_state(74) {
394
- for_symbols("function_name") { shift_to 62 }
395
- for_symbols("var_name") { shift_to 66 }
396
- for_symbols("return") { shift_to 60 }
397
- for_symbols("else") { shift_to 75 }
398
- for_symbols("newline") { shift_to 58 }
399
- for_symbols("function_body_statement") { shift_to 69 }
400
- for_symbols("while") { shift_to 53 }
401
- for_symbols("if") { shift_to 49 }
402
- for_symbols("print") { shift_to 70 }
403
- for_symbols("simple_statement") { shift_to 52 }
404
- for_symbols("end") { shift_to 80 }
405
- for_symbols("word_literal") { shift_to 27 }
381
+ at_state(70) {
382
+ for_symbols("function_body") { shift_to 71 }
383
+ for_symbols("while") { shift_to 75 }
384
+ for_symbols("if") { shift_to 52 }
385
+ for_symbols("newline") { shift_to 2 }
386
+ for_symbols("var_name") { shift_to 61 }
387
+ for_symbols("print") { shift_to 5 }
388
+ for_symbols("word_literal") { shift_to 30 }
389
+ for_symbols("return") { shift_to 59 }
390
+ for_symbols("function_name") { shift_to 55 }
391
+ for_symbols("simple_statement") { shift_to 64 }
392
+ for_symbols("function_body_statement") { shift_to 65 }
406
393
  }
407
394
 
408
- at_state(56) {
409
- for_symbols("terms") { shift_to 57 }
410
- for_symbols("newline") { shift_to 1 }
395
+ at_state(93) {
396
+ for_symbols("_End_", "newline") { reduce_with "main_body_while_statement" }
411
397
  }
412
398
 
413
- at_state(58) {
414
- for_symbols("word_literal", "end", "def", "print", "else", "_End_", "if", "return", "newline", "while") { reduce_with "multiple_terms" }
399
+ at_state(89) {
400
+ for_symbols("==") { shift_to 27 }
401
+ for_symbols("*") { shift_to 15 }
402
+ for_symbols("<") { shift_to 25 }
403
+ for_symbols("/") { shift_to 13 }
404
+ for_symbols(">") { shift_to 23 }
405
+ for_symbols("newline") { shift_to 3 }
406
+ for_symbols("^") { shift_to 19 }
407
+ for_symbols("terms") { shift_to 90 }
408
+ for_symbols("+") { shift_to 21 }
409
+ for_symbols("-") { shift_to 17 }
415
410
  }
416
411
 
417
- at_state(31) {
418
- for_symbols(",") { shift_to 32 }
419
- for_symbols(")") { shift_to 34 }
412
+ at_state(61) {
413
+ for_symbols("=") { shift_to 62 }
420
414
  }
421
415
 
422
- at_state(45) {
423
- for_symbols(",", ")") { reduce_with "multiple_arg_declarations" }
416
+ at_state(25) {
417
+ for_symbols("expression") { shift_to 26 }
418
+ for_symbols("-") { shift_to 7 }
419
+ for_symbols("!") { shift_to 34 }
420
+ for_symbols("numeric_literal") { shift_to 6 }
421
+ for_symbols("(") { shift_to 31 }
422
+ for_symbols("word_literal") { shift_to 30 }
423
+ for_symbols("var_name") { shift_to 29 }
424
+ for_symbols("function_name") { shift_to 8 }
424
425
  }
425
426
 
426
- at_state(4) {
427
- for_symbols("(") { shift_to 28 }
428
- for_symbols("expression") { shift_to 36 }
429
- for_symbols("-") { shift_to 5 }
430
- for_symbols("numeric_literal") { shift_to 26 }
431
- for_symbols("var_name") { shift_to 8 }
432
- for_symbols("function_name") { shift_to 6 }
433
- for_symbols("!") { shift_to 4 }
434
- for_symbols("word_literal") { shift_to 27 }
427
+ at_state(57) {
428
+ for_symbols(")") { shift_to 58 }
429
+ for_symbols(",") { shift_to 11 }
435
430
  }
436
431
 
437
- at_state(40) {
438
- for_symbols("word_literal") { shift_to 85 }
439
- for_symbols("function_name") { shift_to 41 }
432
+ at_state(95) {
433
+ for_symbols("terms") { shift_to 96 }
434
+ for_symbols("newline") { shift_to 3 }
440
435
  }
441
436
 
442
- at_state(21) {
443
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", ")", "newline", "*") { reduce_with "power" }
437
+ at_state(74) {
438
+ for_symbols("newline") { reduce_with "multiple_function_body_statements" }
444
439
  }
445
440
 
446
- at_state(54) {
447
- for_symbols("==") { shift_to 22 }
448
- for_symbols(">") { shift_to 10 }
449
- for_symbols("/") { shift_to 18 }
450
- for_symbols("newline") { shift_to 1 }
451
- for_symbols("^") { shift_to 20 }
452
- for_symbols("*") { shift_to 24 }
453
- for_symbols("-") { shift_to 16 }
454
- for_symbols("terms") { shift_to 55 }
455
- for_symbols("<") { shift_to 14 }
456
- for_symbols("+") { shift_to 12 }
441
+ at_state(69) {
442
+ for_symbols("newline") { shift_to 3 }
443
+ for_symbols("terms") { shift_to 70 }
457
444
  }
458
445
 
459
- at_state(65) {
460
- for_symbols("_End_", "newline") { reduce_with "function_call_statement" }
446
+ at_state(77) {
447
+ for_symbols("while") { shift_to 75 }
448
+ for_symbols("if") { shift_to 52 }
449
+ for_symbols("newline") { shift_to 2 }
450
+ for_symbols("var_name") { shift_to 61 }
451
+ for_symbols("print") { shift_to 5 }
452
+ for_symbols("word_literal") { shift_to 30 }
453
+ for_symbols("function_body") { shift_to 78 }
454
+ for_symbols("return") { shift_to 59 }
455
+ for_symbols("function_name") { shift_to 55 }
456
+ for_symbols("simple_statement") { shift_to 64 }
457
+ for_symbols("function_body_statement") { shift_to 65 }
461
458
  }
462
459
 
463
- at_state(23) {
464
- for_symbols(">") { shift_to 10 }
465
- for_symbols("/") { shift_to 18 }
466
- for_symbols("^") { shift_to 20 }
467
- for_symbols(",", "_End_", ")", "newline") { reduce_with "equality_comparison" }
468
- for_symbols("*") { shift_to 24 }
469
- for_symbols("-") { shift_to 16 }
470
- for_symbols("<") { shift_to 14 }
471
- for_symbols("+") { shift_to 12 }
460
+ at_state(59) {
461
+ for_symbols("-") { shift_to 7 }
462
+ for_symbols("!") { shift_to 34 }
463
+ for_symbols("numeric_literal") { shift_to 6 }
464
+ for_symbols("(") { shift_to 31 }
465
+ for_symbols("word_literal") { shift_to 30 }
466
+ for_symbols("var_name") { shift_to 29 }
467
+ for_symbols("function_name") { shift_to 8 }
468
+ for_symbols("expression") { shift_to 60 }
472
469
  }
473
470
 
474
- at_state(44) {
475
- for_symbols("word_literal") { shift_to 46 }
476
- for_symbols("arg_decl") { shift_to 45 }
471
+ at_state(3) {
472
+ for_symbols("word_literal", "end", "def", "print", "_End_", "else", "if", "newline", "return", "while") { reduce_with "single_term" }
477
473
  }
478
474
 
479
- at_state(27) {
480
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", "=", "^", ">", ")", "newline", "*") { reduce_with "variable_name" }
481
- for_symbols("(") { reduce_with "function_name" }
475
+ at_state(36) {
476
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", "^", "newline", ")", "*") { reduce_with "function_call_expression" }
482
477
  }
483
478
 
484
- at_state(102) {
485
- for_symbols("_End_") { reduce_with "no_terms" }
486
- for_symbols("newline") { shift_to 1 }
487
- for_symbols("terms") { shift_to 104 }
488
- for_symbols("opt_terms") { shift_to 103 }
479
+ at_state(5) {
480
+ for_symbols("-") { shift_to 7 }
481
+ for_symbols("!") { shift_to 34 }
482
+ for_symbols("numeric_literal") { shift_to 6 }
483
+ for_symbols("(") { shift_to 31 }
484
+ for_symbols("word_literal") { shift_to 30 }
485
+ for_symbols("var_name") { shift_to 29 }
486
+ for_symbols("function_name") { shift_to 8 }
487
+ for_symbols("expression") { shift_to 39 }
489
488
  }
490
489
 
491
- at_state(84) {
492
- for_symbols(",", ")") { reduce_with "single_arg_declaration" }
490
+ at_state(58) {
491
+ for_symbols("_End_", "newline") { reduce_with "function_call_statement" }
493
492
  }
494
493
 
495
- at_state(73) {
496
- for_symbols("terms") { shift_to 74 }
497
- for_symbols("newline") { shift_to 1 }
494
+ at_state(23) {
495
+ for_symbols("-") { shift_to 7 }
496
+ for_symbols("!") { shift_to 34 }
497
+ for_symbols("numeric_literal") { shift_to 6 }
498
+ for_symbols("(") { shift_to 31 }
499
+ for_symbols("expression") { shift_to 24 }
500
+ for_symbols("word_literal") { shift_to 30 }
501
+ for_symbols("var_name") { shift_to 29 }
502
+ for_symbols("function_name") { shift_to 8 }
498
503
  }
499
504
 
500
- at_state(71) {
501
- for_symbols("==") { shift_to 22 }
502
- for_symbols(">") { shift_to 10 }
503
- for_symbols("/") { shift_to 18 }
504
- for_symbols("^") { shift_to 20 }
505
- for_symbols("*") { shift_to 24 }
506
- for_symbols("-") { shift_to 16 }
507
- for_symbols("<") { shift_to 14 }
508
- for_symbols("_End_", "newline") { reduce_with "print_statement" }
509
- for_symbols("+") { shift_to 12 }
505
+ at_state(46) {
506
+ for_symbols(")") { shift_to 50 }
507
+ for_symbols(",") { shift_to 47 }
510
508
  }
511
509
 
512
- at_state(26) {
513
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", "^", ">", ")", "newline", "*") { reduce_with "literal" }
510
+ at_state(66) {
511
+ for_symbols("terms") { shift_to 67 }
512
+ for_symbols("newline") { shift_to 3 }
514
513
  }
515
514
 
516
- at_state(28) {
517
- for_symbols("(") { shift_to 28 }
518
- for_symbols("-") { shift_to 5 }
519
- for_symbols("numeric_literal") { shift_to 26 }
520
- for_symbols("var_name") { shift_to 8 }
521
- for_symbols("function_name") { shift_to 6 }
522
- for_symbols("!") { shift_to 4 }
523
- for_symbols("expression") { shift_to 29 }
524
- for_symbols("word_literal") { shift_to 27 }
515
+ at_state(94) {
516
+ for_symbols("_End_", "newline") { reduce_with "multiple_main_body_statements" }
525
517
  }
526
518
 
527
- at_state(8) {
528
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", "^", ">", ")", "newline", "*") { reduce_with "variable_reference" }
519
+ at_state(11) {
520
+ for_symbols("-") { shift_to 7 }
521
+ for_symbols("!") { shift_to 34 }
522
+ for_symbols("numeric_literal") { shift_to 6 }
523
+ for_symbols("(") { shift_to 31 }
524
+ for_symbols("word_literal") { shift_to 30 }
525
+ for_symbols("var_name") { shift_to 29 }
526
+ for_symbols("function_name") { shift_to 8 }
527
+ for_symbols("expression") { shift_to 12 }
529
528
  }
530
529
 
531
- at_state(33) {
532
- for_symbols("==") { shift_to 22 }
533
- for_symbols(">") { shift_to 10 }
534
- for_symbols("/") { shift_to 18 }
535
- for_symbols("^") { shift_to 20 }
536
- for_symbols("*") { shift_to 24 }
537
- for_symbols("-") { shift_to 16 }
538
- for_symbols("<") { shift_to 14 }
539
- for_symbols(",", ")") { reduce_with "multiple_args" }
540
- for_symbols("+") { shift_to 12 }
530
+ at_state(51) {
531
+ for_symbols("function_body") { shift_to 81 }
532
+ for_symbols("while") { shift_to 75 }
533
+ for_symbols("if") { shift_to 52 }
534
+ for_symbols("newline") { shift_to 2 }
535
+ for_symbols("var_name") { shift_to 61 }
536
+ for_symbols("print") { shift_to 5 }
537
+ for_symbols("word_literal") { shift_to 30 }
538
+ for_symbols("return") { shift_to 59 }
539
+ for_symbols("function_name") { shift_to 55 }
540
+ for_symbols("simple_statement") { shift_to 64 }
541
+ for_symbols("function_body_statement") { shift_to 65 }
541
542
  }
542
543
 
543
- at_state(13) {
544
- for_symbols("/") { shift_to 18 }
545
- for_symbols("^") { shift_to 20 }
546
- for_symbols("*") { shift_to 24 }
547
- for_symbols("==", "+", ",", "-", "<", "_End_", ">", ")", "newline") { reduce_with "addition" }
544
+ at_state(50) {
545
+ for_symbols("terms") { shift_to 51 }
546
+ for_symbols("newline") { shift_to 3 }
548
547
  }
549
548
 
550
- at_state(29) {
551
- for_symbols("==") { shift_to 22 }
552
- for_symbols(">") { shift_to 10 }
553
- for_symbols("/") { shift_to 18 }
554
- for_symbols("^") { shift_to 20 }
555
- for_symbols("*") { shift_to 24 }
556
- for_symbols("-") { shift_to 16 }
557
- for_symbols("<") { shift_to 14 }
558
- for_symbols(")") { shift_to 30 }
559
- for_symbols("+") { shift_to 12 }
549
+ at_state(22) {
550
+ for_symbols("*") { shift_to 15 }
551
+ for_symbols("/") { shift_to 13 }
552
+ for_symbols("^") { shift_to 19 }
553
+ for_symbols("==", "+", ",", "-", "<", "_End_", ">", "newline", ")") { reduce_with "addition" }
560
554
  }
561
555
 
562
- at_state(35) {
563
- for_symbols("^") { shift_to 20 }
564
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", ")", "newline", "*") { reduce_with "negated_expression" }
556
+ at_state(38) {
557
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", "newline", ")", "*") { reduce_with "negated_expression" }
558
+ for_symbols("^") { shift_to 19 }
565
559
  }
566
560
 
567
- at_state(104) {
568
- for_symbols("function_name") { shift_to 62 }
569
- for_symbols("var_name") { shift_to 66 }
570
- for_symbols("while") { shift_to 86 }
571
- for_symbols("newline") { shift_to 58 }
572
- for_symbols("def") { shift_to 40 }
573
- for_symbols("_End_") { reduce_with "some_terms" }
574
- for_symbols("main_body_statement") { shift_to 93 }
575
- for_symbols("if") { shift_to 3 }
576
- for_symbols("print") { shift_to 70 }
577
- for_symbols("simple_statement") { shift_to 39 }
578
- for_symbols("word_literal") { shift_to 27 }
561
+ at_state(63) {
562
+ for_symbols("==") { shift_to 27 }
563
+ for_symbols("*") { shift_to 15 }
564
+ for_symbols("<") { shift_to 25 }
565
+ for_symbols("/") { shift_to 13 }
566
+ for_symbols(">") { shift_to 23 }
567
+ for_symbols("^") { shift_to 19 }
568
+ for_symbols("_End_", "newline") { reduce_with "assignment_statement" }
569
+ for_symbols("+") { shift_to 21 }
570
+ for_symbols("-") { shift_to 17 }
579
571
  }
580
572
 
581
- at_state(99) {
582
- for_symbols("function_name") { shift_to 62 }
583
- for_symbols("var_name") { shift_to 66 }
584
- for_symbols("while") { shift_to 86 }
585
- for_symbols("newline") { shift_to 58 }
586
- for_symbols("def") { shift_to 40 }
587
- for_symbols("main_body_statement") { shift_to 93 }
588
- for_symbols("if") { shift_to 3 }
589
- for_symbols("end") { shift_to 100 }
590
- for_symbols("print") { shift_to 70 }
591
- for_symbols("simple_statement") { shift_to 39 }
592
- for_symbols("word_literal") { shift_to 27 }
573
+ at_state(100) {
574
+ for_symbols("terms") { shift_to 101 }
575
+ for_symbols("newline") { shift_to 3 }
593
576
  }
594
577
 
595
- at_state(92) {
596
- for_symbols("_End_", "newline") { reduce_with "main_body_while_statement" }
578
+ at_state(98) {
579
+ for_symbols("terms") { shift_to 99 }
580
+ for_symbols("newline") { shift_to 3 }
597
581
  }
598
582
 
599
- at_state(91) {
600
- for_symbols("function_name") { shift_to 62 }
601
- for_symbols("var_name") { shift_to 66 }
602
- for_symbols("while") { shift_to 86 }
603
- for_symbols("newline") { shift_to 58 }
604
- for_symbols("def") { shift_to 40 }
605
- for_symbols("end") { shift_to 92 }
606
- for_symbols("main_body_statement") { shift_to 93 }
607
- for_symbols("if") { shift_to 3 }
608
- for_symbols("print") { shift_to 70 }
609
- for_symbols("simple_statement") { shift_to 39 }
610
- for_symbols("word_literal") { shift_to 27 }
583
+ at_state(97) {
584
+ for_symbols("_End_", "newline") { reduce_with "main_body_if_statement" }
611
585
  }
612
586
 
613
- at_state(68) {
614
- for_symbols("==") { shift_to 22 }
615
- for_symbols(">") { shift_to 10 }
616
- for_symbols("_End_", "newline") { reduce_with "assignment_statement" }
617
- for_symbols("/") { shift_to 18 }
618
- for_symbols("^") { shift_to 20 }
619
- for_symbols("*") { shift_to 24 }
620
- for_symbols("-") { shift_to 16 }
621
- for_symbols("<") { shift_to 14 }
622
- for_symbols("+") { shift_to 12 }
587
+ at_state(76) {
588
+ for_symbols("==") { shift_to 27 }
589
+ for_symbols("*") { shift_to 15 }
590
+ for_symbols("<") { shift_to 25 }
591
+ for_symbols("/") { shift_to 13 }
592
+ for_symbols(">") { shift_to 23 }
593
+ for_symbols("newline") { shift_to 3 }
594
+ for_symbols("^") { shift_to 19 }
595
+ for_symbols("terms") { shift_to 77 }
596
+ for_symbols("+") { shift_to 21 }
597
+ for_symbols("-") { shift_to 17 }
623
598
  }
624
599
 
625
- at_state(66) {
626
- for_symbols("=") { shift_to 67 }
600
+ at_state(14) {
601
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", "newline", ")", "*") { reduce_with "division" }
602
+ for_symbols("^") { shift_to 19 }
627
603
  }
628
604
 
629
- at_state(53) {
630
- for_symbols("(") { shift_to 28 }
631
- for_symbols("expression") { shift_to 54 }
632
- for_symbols("-") { shift_to 5 }
633
- for_symbols("numeric_literal") { shift_to 26 }
634
- for_symbols("var_name") { shift_to 8 }
635
- for_symbols("function_name") { shift_to 6 }
636
- for_symbols("!") { shift_to 4 }
637
- for_symbols("word_literal") { shift_to 27 }
605
+ at_state(62) {
606
+ for_symbols("expression") { shift_to 63 }
607
+ for_symbols("-") { shift_to 7 }
608
+ for_symbols("!") { shift_to 34 }
609
+ for_symbols("numeric_literal") { shift_to 6 }
610
+ for_symbols("(") { shift_to 31 }
611
+ for_symbols("word_literal") { shift_to 30 }
612
+ for_symbols("var_name") { shift_to 29 }
613
+ for_symbols("function_name") { shift_to 8 }
638
614
  }
639
615
 
640
- at_state(34) {
641
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", "^", ">", ")", "newline", "*") { reduce_with "function_call_expression" }
616
+ at_state(104) {
617
+ for_symbols("while") { shift_to 88 }
618
+ for_symbols("newline") { shift_to 2 }
619
+ for_symbols("var_name") { shift_to 61 }
620
+ for_symbols("print") { shift_to 5 }
621
+ for_symbols("main_body_statement") { shift_to 94 }
622
+ for_symbols("word_literal") { shift_to 30 }
623
+ for_symbols("if") { shift_to 40 }
624
+ for_symbols("def") { shift_to 43 }
625
+ for_symbols("function_name") { shift_to 55 }
626
+ for_symbols("_End_") { reduce_with "some_terms" }
627
+ for_symbols("simple_statement") { shift_to 86 }
642
628
  }
643
629
 
644
- at_state(48) {
645
- for_symbols("function_body") { shift_to 81 }
646
- for_symbols("function_name") { shift_to 62 }
647
- for_symbols("var_name") { shift_to 66 }
648
- for_symbols("return") { shift_to 60 }
649
- for_symbols("newline") { shift_to 58 }
650
- for_symbols("while") { shift_to 53 }
651
- for_symbols("if") { shift_to 49 }
652
- for_symbols("print") { shift_to 70 }
653
- for_symbols("simple_statement") { shift_to 52 }
654
- for_symbols("word_literal") { shift_to 27 }
655
- for_symbols("function_body_statement") { shift_to 72 }
630
+ at_state(71) {
631
+ for_symbols("terms") { shift_to 72 }
632
+ for_symbols("newline") { shift_to 3 }
656
633
  }
657
634
 
658
- at_state(60) {
659
- for_symbols("(") { shift_to 28 }
660
- for_symbols("expression") { shift_to 61 }
661
- for_symbols("-") { shift_to 5 }
662
- for_symbols("numeric_literal") { shift_to 26 }
663
- for_symbols("var_name") { shift_to 8 }
664
- for_symbols("function_name") { shift_to 6 }
665
- for_symbols("!") { shift_to 4 }
666
- for_symbols("word_literal") { shift_to 27 }
635
+ at_state(30) {
636
+ for_symbols("(") { reduce_with "function_name" }
637
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", "=", ">", "^", "newline", ")", "*") { reduce_with "variable_name" }
667
638
  }
668
639
 
669
- at_state(97) {
670
- for_symbols("function_name") { shift_to 62 }
671
- for_symbols("var_name") { shift_to 66 }
672
- for_symbols("main_body_statement") { shift_to 89 }
673
- for_symbols("while") { shift_to 86 }
674
- for_symbols("newline") { shift_to 58 }
675
- for_symbols("main_body") { shift_to 98 }
676
- for_symbols("def") { shift_to 40 }
677
- for_symbols("if") { shift_to 3 }
678
- for_symbols("print") { shift_to 70 }
679
- for_symbols("simple_statement") { shift_to 39 }
680
- for_symbols("word_literal") { shift_to 27 }
640
+ at_state(44) {
641
+ for_symbols("(") { shift_to 45 }
681
642
  }
682
643
 
683
- at_state(10) {
684
- for_symbols("(") { shift_to 28 }
685
- for_symbols("-") { shift_to 5 }
686
- for_symbols("numeric_literal") { shift_to 26 }
687
- for_symbols("var_name") { shift_to 8 }
688
- for_symbols("function_name") { shift_to 6 }
689
- for_symbols("expression") { shift_to 11 }
690
- for_symbols("!") { shift_to 4 }
691
- for_symbols("word_literal") { shift_to 27 }
644
+ at_state(21) {
645
+ for_symbols("expression") { shift_to 22 }
646
+ for_symbols("-") { shift_to 7 }
647
+ for_symbols("!") { shift_to 34 }
648
+ for_symbols("numeric_literal") { shift_to 6 }
649
+ for_symbols("(") { shift_to 31 }
650
+ for_symbols("word_literal") { shift_to 30 }
651
+ for_symbols("var_name") { shift_to 29 }
652
+ for_symbols("function_name") { shift_to 8 }
692
653
  }
693
654
 
694
- at_state(42) {
695
- for_symbols(",", ")") { reduce_with "no_arg_decl" }
696
- for_symbols("word_literal") { shift_to 46 }
697
- for_symbols("arg_decl") { shift_to 84 }
698
- for_symbols("arg_declarations") { shift_to 43 }
655
+ at_state(80) {
656
+ for_symbols("newline") { reduce_with "function_body_while_statement" }
699
657
  }
700
658
 
701
- at_state(51) {
702
- for_symbols("function_name") { shift_to 62 }
703
- for_symbols("var_name") { shift_to 66 }
704
- for_symbols("function_body") { shift_to 73 }
705
- for_symbols("return") { shift_to 60 }
706
- for_symbols("newline") { shift_to 58 }
707
- for_symbols("while") { shift_to 53 }
708
- for_symbols("if") { shift_to 49 }
709
- for_symbols("print") { shift_to 70 }
710
- for_symbols("simple_statement") { shift_to 52 }
711
- for_symbols("word_literal") { shift_to 27 }
712
- for_symbols("function_body_statement") { shift_to 72 }
659
+ at_state(79) {
660
+ for_symbols("while") { shift_to 75 }
661
+ for_symbols("if") { shift_to 52 }
662
+ for_symbols("newline") { shift_to 2 }
663
+ for_symbols("var_name") { shift_to 61 }
664
+ for_symbols("print") { shift_to 5 }
665
+ for_symbols("word_literal") { shift_to 30 }
666
+ for_symbols("end") { shift_to 80 }
667
+ for_symbols("return") { shift_to 59 }
668
+ for_symbols("function_name") { shift_to 55 }
669
+ for_symbols("simple_statement") { shift_to 64 }
670
+ for_symbols("function_body_statement") { shift_to 74 }
713
671
  }
714
672
 
715
- at_state(20) {
716
- for_symbols("(") { shift_to 28 }
717
- for_symbols("expression") { shift_to 21 }
718
- for_symbols("-") { shift_to 5 }
719
- for_symbols("numeric_literal") { shift_to 26 }
720
- for_symbols("var_name") { shift_to 8 }
721
- for_symbols("function_name") { shift_to 6 }
722
- for_symbols("!") { shift_to 4 }
723
- for_symbols("word_literal") { shift_to 27 }
673
+ at_state(52) {
674
+ for_symbols("-") { shift_to 7 }
675
+ for_symbols("!") { shift_to 34 }
676
+ for_symbols("numeric_literal") { shift_to 6 }
677
+ for_symbols("(") { shift_to 31 }
678
+ for_symbols("word_literal") { shift_to 30 }
679
+ for_symbols("var_name") { shift_to 29 }
680
+ for_symbols("expression") { shift_to 53 }
681
+ for_symbols("function_name") { shift_to 8 }
724
682
  }
725
683
 
726
- at_state(98) {
727
- for_symbols("newline") { shift_to 1 }
728
- for_symbols("terms") { shift_to 99 }
684
+ at_state(1) {
685
+ for_symbols("newline") { shift_to 2 }
686
+ for_symbols("word_literal", "def", "print", "if", "while") { reduce_with "some_terms" }
729
687
  }
730
688
 
731
- at_state(96) {
732
- for_symbols("newline") { shift_to 1 }
733
- for_symbols("terms") { shift_to 97 }
689
+ at_state(4) {
690
+ for_symbols("main_body") { shift_to 103 }
691
+ for_symbols("while") { shift_to 88 }
692
+ for_symbols("var_name") { shift_to 61 }
693
+ for_symbols("print") { shift_to 5 }
694
+ for_symbols("word_literal") { shift_to 30 }
695
+ for_symbols("if") { shift_to 40 }
696
+ for_symbols("main_body_statement") { shift_to 87 }
697
+ for_symbols("def") { shift_to 43 }
698
+ for_symbols("function_name") { shift_to 55 }
699
+ for_symbols("simple_statement") { shift_to 86 }
734
700
  }
735
701
 
736
- at_state(94) {
737
- for_symbols("newline") { shift_to 1 }
738
- for_symbols("terms") { shift_to 95 }
702
+ at_state(49) {
703
+ for_symbols(",", ")") { reduce_with "multiple_arg_declarations" }
739
704
  }
740
705
 
741
- at_state(86) {
742
- for_symbols("(") { shift_to 28 }
743
- for_symbols("-") { shift_to 5 }
744
- for_symbols("numeric_literal") { shift_to 26 }
745
- for_symbols("var_name") { shift_to 8 }
746
- for_symbols("function_name") { shift_to 6 }
747
- for_symbols("!") { shift_to 4 }
748
- for_symbols("expression") { shift_to 87 }
749
- for_symbols("word_literal") { shift_to 27 }
706
+ at_state(16) {
707
+ for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", "newline", ")", "*") { reduce_with "multiplication" }
708
+ for_symbols("^") { shift_to 19 }
750
709
  }
751
710
 
752
- at_state(67) {
753
- for_symbols("(") { shift_to 28 }
754
- for_symbols("-") { shift_to 5 }
755
- for_symbols("numeric_literal") { shift_to 26 }
756
- for_symbols("var_name") { shift_to 8 }
757
- for_symbols("function_name") { shift_to 6 }
758
- for_symbols("!") { shift_to 4 }
759
- for_symbols("expression") { shift_to 68 }
760
- for_symbols("word_literal") { shift_to 27 }
711
+ at_state(18) {
712
+ for_symbols("*") { shift_to 15 }
713
+ for_symbols("/") { shift_to 13 }
714
+ for_symbols("^") { shift_to 19 }
715
+ for_symbols("==", "+", ",", "-", "<", "_End_", ">", "newline", ")") { reduce_with "subtraction" }
761
716
  }
762
717
 
763
- at_state(36) {
764
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", "^", ">", ")", "newline", "*") { reduce_with "negation" }
718
+ at_state(87) {
719
+ for_symbols("_End_", "newline") { reduce_with "single_main_body_statement" }
765
720
  }
766
721
 
767
- at_state(25) {
768
- for_symbols("^") { shift_to 20 }
769
- for_symbols("==", "+", ",", "-", "/", "<", "_End_", ">", ")", "newline", "*") { reduce_with "multiplication" }
722
+ at_state(45) {
723
+ for_symbols("arg_decl") { shift_to 84 }
724
+ for_symbols("word_literal") { shift_to 48 }
725
+ for_symbols(",", ")") { reduce_with "no_arg_decl" }
726
+ for_symbols("arg_declarations") { shift_to 46 }
770
727
  }
771
728
 
772
- at_state(101) {
773
- for_symbols("_End_", "newline") { reduce_with "main_body_if_statement" }
729
+ at_state(7) {
730
+ for_symbols("-") { shift_to 7 }
731
+ for_symbols("!") { shift_to 34 }
732
+ for_symbols("expression") { shift_to 38 }
733
+ for_symbols("numeric_literal") { shift_to 6 }
734
+ for_symbols("(") { shift_to 31 }
735
+ for_symbols("word_literal") { shift_to 30 }
736
+ for_symbols("var_name") { shift_to 29 }
737
+ for_symbols("function_name") { shift_to 8 }
774
738
  }
775
739
 
776
- at_state(1) {
777
- for_symbols("word_literal", "end", "def", "print", "else", "_End_", "if", "return", "newline", "while") { reduce_with "single_term" }
740
+ at_state(13) {
741
+ for_symbols("-") { shift_to 7 }
742
+ for_symbols("!") { shift_to 34 }
743
+ for_symbols("numeric_literal") { shift_to 6 }
744
+ for_symbols("(") { shift_to 31 }
745
+ for_symbols("expression") { shift_to 14 }
746
+ for_symbols("word_literal") { shift_to 30 }
747
+ for_symbols("var_name") { shift_to 29 }
748
+ for_symbols("function_name") { shift_to 8 }
778
749
  }
779
750
 
780
- at_state(41) {
781
- for_symbols("(") { shift_to 42 }
751
+ at_state(19) {
752
+ for_symbols("-") { shift_to 7 }
753
+ for_symbols("!") { shift_to 34 }
754
+ for_symbols("numeric_literal") { shift_to 6 }
755
+ for_symbols("(") { shift_to 31 }
756
+ for_symbols("expression") { shift_to 20 }
757
+ for_symbols("word_literal") { shift_to 30 }
758
+ for_symbols("var_name") { shift_to 29 }
759
+ for_symbols("function_name") { shift_to 8 }
782
760
  }
783
761
 
784
- at_state(57) {
785
- for_symbols("function_name") { shift_to 62 }
786
- for_symbols("var_name") { shift_to 66 }
787
- for_symbols("return") { shift_to 60 }
788
- for_symbols("newline") { shift_to 58 }
789
- for_symbols("function_body_statement") { shift_to 69 }
790
- for_symbols("while") { shift_to 53 }
791
- for_symbols("end") { shift_to 59 }
792
- for_symbols("if") { shift_to 49 }
793
- for_symbols("print") { shift_to 70 }
794
- for_symbols("simple_statement") { shift_to 52 }
795
- for_symbols("word_literal") { shift_to 27 }
762
+ at_state(90) {
763
+ for_symbols("while") { shift_to 88 }
764
+ for_symbols("newline") { shift_to 2 }
765
+ for_symbols("var_name") { shift_to 61 }
766
+ for_symbols("print") { shift_to 5 }
767
+ for_symbols("word_literal") { shift_to 30 }
768
+ for_symbols("main_body") { shift_to 91 }
769
+ for_symbols("if") { shift_to 40 }
770
+ for_symbols("main_body_statement") { shift_to 87 }
771
+ for_symbols("def") { shift_to 43 }
772
+ for_symbols("function_name") { shift_to 55 }
773
+ for_symbols("simple_statement") { shift_to 86 }
796
774
  }
797
775
 
798
- at_state(95) {
799
- for_symbols("function_name") { shift_to 62 }
800
- for_symbols("var_name") { shift_to 66 }
801
- for_symbols("while") { shift_to 86 }
802
- for_symbols("newline") { shift_to 58 }
803
- for_symbols("def") { shift_to 40 }
804
- for_symbols("end") { shift_to 101 }
805
- for_symbols("main_body_statement") { shift_to 93 }
806
- for_symbols("if") { shift_to 3 }
807
- for_symbols("else") { shift_to 96 }
808
- for_symbols("print") { shift_to 70 }
809
- for_symbols("simple_statement") { shift_to 39 }
810
- for_symbols("word_literal") { shift_to 27 }
776
+ at_state(82) {
777
+ for_symbols("while") { shift_to 75 }
778
+ for_symbols("if") { shift_to 52 }
779
+ for_symbols("newline") { shift_to 2 }
780
+ for_symbols("var_name") { shift_to 61 }
781
+ for_symbols("print") { shift_to 5 }
782
+ for_symbols("word_literal") { shift_to 30 }
783
+ for_symbols("end") { shift_to 83 }
784
+ for_symbols("return") { shift_to 59 }
785
+ for_symbols("function_name") { shift_to 55 }
786
+ for_symbols("simple_statement") { shift_to 64 }
787
+ for_symbols("function_body_statement") { shift_to 74 }
811
788
  }
812
789
 
813
- at_state(77) {
814
- for_symbols("newline") { shift_to 1 }
815
- for_symbols("terms") { shift_to 78 }
790
+ at_state(81) {
791
+ for_symbols("newline") { shift_to 3 }
792
+ for_symbols("terms") { shift_to 82 }
816
793
  }
817
794
 
818
- at_state(5) {
819
- for_symbols("(") { shift_to 28 }
820
- for_symbols("-") { shift_to 5 }
821
- for_symbols("numeric_literal") { shift_to 26 }
822
- for_symbols("var_name") { shift_to 8 }
823
- for_symbols("function_name") { shift_to 6 }
824
- for_symbols("expression") { shift_to 35 }
825
- for_symbols("!") { shift_to 4 }
826
- for_symbols("word_literal") { shift_to 27 }
795
+ at_state(64) {
796
+ for_symbols("newline") { reduce_with "function_body_simple_statement" }
827
797
  }
828
798
 
829
- at_state(18) {
830
- for_symbols("(") { shift_to 28 }
831
- for_symbols("-") { shift_to 5 }
832
- for_symbols("numeric_literal") { shift_to 26 }
833
- for_symbols("var_name") { shift_to 8 }
834
- for_symbols("function_name") { shift_to 6 }
835
- for_symbols("!") { shift_to 4 }
836
- for_symbols("expression") { shift_to 19 }
837
- for_symbols("word_literal") { shift_to 27 }
799
+ at_state(56) {
800
+ for_symbols("-") { shift_to 7 }
801
+ for_symbols("!") { shift_to 34 }
802
+ for_symbols("arg_list") { shift_to 57 }
803
+ for_symbols(",", ")") { reduce_with "no_args" }
804
+ for_symbols("numeric_literal") { shift_to 6 }
805
+ for_symbols("(") { shift_to 31 }
806
+ for_symbols("word_literal") { shift_to 30 }
807
+ for_symbols("var_name") { shift_to 29 }
808
+ for_symbols("function_name") { shift_to 8 }
809
+ for_symbols("expression") { shift_to 37 }
838
810
  }
839
811
 
840
- at_state(3) {
841
- for_symbols("(") { shift_to 28 }
842
- for_symbols("-") { shift_to 5 }
843
- for_symbols("numeric_literal") { shift_to 26 }
844
- for_symbols("var_name") { shift_to 8 }
845
- for_symbols("function_name") { shift_to 6 }
846
- for_symbols("!") { shift_to 4 }
847
- for_symbols("expression") { shift_to 37 }
848
- for_symbols("word_literal") { shift_to 27 }
812
+ at_state(0) {
813
+ for_symbols("opt_terms") { shift_to 4 }
814
+ for_symbols("terms") { shift_to 1 }
815
+ for_symbols("newline") { shift_to 3 }
816
+ for_symbols("word_literal", "def", "print", "if", "while") { reduce_with "no_terms" }
849
817
  }
850
818
 
851
- at_state(24) {
852
- for_symbols("(") { shift_to 28 }
853
- for_symbols("-") { shift_to 5 }
854
- for_symbols("numeric_literal") { shift_to 26 }
855
- for_symbols("var_name") { shift_to 8 }
856
- for_symbols("function_name") { shift_to 6 }
857
- for_symbols("!") { shift_to 4 }
858
- for_symbols("expression") { shift_to 25 }
859
- for_symbols("word_literal") { shift_to 27 }
819
+ at_state(47) {
820
+ for_symbols("arg_decl") { shift_to 49 }
821
+ for_symbols("word_literal") { shift_to 48 }
860
822
  }
861
823
 
862
- at_state(80) {
863
- for_symbols("newline") { reduce_with "function_body_if_statement" }
824
+ at_state(103) {
825
+ for_symbols("opt_terms") { shift_to 105 }
826
+ for_symbols("terms") { shift_to 104 }
827
+ for_symbols("newline") { shift_to 3 }
828
+ for_symbols("_End_") { reduce_with "no_terms" }
864
829
  }
865
830
 
866
- at_state(69) {
867
- for_symbols("newline") { reduce_with "multiple_function_body_statements" }
831
+ at_state(96) {
832
+ for_symbols("else") { shift_to 98 }
833
+ for_symbols("while") { shift_to 88 }
834
+ for_symbols("end") { shift_to 97 }
835
+ for_symbols("newline") { shift_to 2 }
836
+ for_symbols("var_name") { shift_to 61 }
837
+ for_symbols("print") { shift_to 5 }
838
+ for_symbols("main_body_statement") { shift_to 94 }
839
+ for_symbols("word_literal") { shift_to 30 }
840
+ for_symbols("if") { shift_to 40 }
841
+ for_symbols("def") { shift_to 43 }
842
+ for_symbols("function_name") { shift_to 55 }
843
+ for_symbols("simple_statement") { shift_to 86 }
868
844
  }
869
845
 
870
- at_state(46) {
871
- for_symbols(",", ")") { reduce_with "arg_declaration" }
846
+ at_state(72) {
847
+ for_symbols("while") { shift_to 75 }
848
+ for_symbols("if") { shift_to 52 }
849
+ for_symbols("end") { shift_to 73 }
850
+ for_symbols("newline") { shift_to 2 }
851
+ for_symbols("var_name") { shift_to 61 }
852
+ for_symbols("print") { shift_to 5 }
853
+ for_symbols("word_literal") { shift_to 30 }
854
+ for_symbols("return") { shift_to 59 }
855
+ for_symbols("function_name") { shift_to 55 }
856
+ for_symbols("simple_statement") { shift_to 64 }
857
+ for_symbols("function_body_statement") { shift_to 74 }
872
858
  }
873
859
 
874
- at_state(47) {
875
- for_symbols("newline") { shift_to 1 }
876
- for_symbols("terms") { shift_to 48 }
860
+ at_state(42) {
861
+ for_symbols("while") { shift_to 88 }
862
+ for_symbols("main_body") { shift_to 95 }
863
+ for_symbols("newline") { shift_to 2 }
864
+ for_symbols("var_name") { shift_to 61 }
865
+ for_symbols("print") { shift_to 5 }
866
+ for_symbols("word_literal") { shift_to 30 }
867
+ for_symbols("if") { shift_to 40 }
868
+ for_symbols("main_body_statement") { shift_to 87 }
869
+ for_symbols("def") { shift_to 43 }
870
+ for_symbols("function_name") { shift_to 55 }
871
+ for_symbols("simple_statement") { shift_to 86 }
872
+ }
873
+
874
+ at_state(10) {
875
+ for_symbols(",") { shift_to 11 }
876
+ for_symbols(")") { shift_to 36 }
877
877
  }
878
878
 
879
879
  end