salt 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4031 @@
1
+
2
+
3
+ module Salt
4
+ class Parser
5
+
6
+ # This file assumes that the output of the generator will be placed
7
+ # within a module or a class. However, the module/class requires a
8
+ # `type` method, which takes a terminal and gives its type, as a
9
+ # symbol. These types should line up with the terminals that were
10
+ # defined in the original grammar.
11
+
12
+ # The actions to take during parsing. In every state, there are a
13
+ # set of acceptable peek tokens; this table tells the parser what
14
+ # to do on each acceptable peek token. The possible actions include
15
+ # `:accept`, `:reduce`, and `:state`; `:accept` means to accept the
16
+ # input and return the value of the pasing. `:reduce` means to
17
+ # reduce the top of the stack into a given nonterminal. `:state`
18
+ # means to transition to another state.
19
+ #
20
+ # @return [Array<Hash<(Symbol, Array<(Symbol, Numeric)>)>>]
21
+ ACTION_TABLE = [{:body=>[:state, 1],
22
+ :"parts.maybe"=>[:state, 2],
23
+ :parts=>[:state, 3],
24
+ :part=>[:state, 4],
25
+ :type=>[:state, 5],
26
+ :function=>[:state, 6],
27
+ :class=>[:state, 7],
28
+ :typedef=>[:state, 8],
29
+ :preprocessor=>[:state, 9],
30
+ :"class.name"=>[:state, 10],
31
+ :struct=>[:state, 11],
32
+ :union=>[:state, 12],
33
+ :FUNCTION=>[:state, 13],
34
+ :CLASS=>[:state, 14],
35
+ :"typedef.type"=>[:state, 15],
36
+ :"typedef.func"=>[:state, 16],
37
+ :HASH=>[:state, 17],
38
+ :IDENTIFIER=>[:state, 18],
39
+ :STRUCT=>[:state, 19],
40
+ :UNION=>[:state, 20],
41
+ :TYPEDEF=>[:state, 21],
42
+ :$end=>[:reduce, 4]},
43
+ {:$end=>[:state, 22]},
44
+ {:$end=>[:reduce, 1]},
45
+ {:part=>[:state, 23],
46
+ :function=>[:state, 6],
47
+ :class=>[:state, 7],
48
+ :typedef=>[:state, 8],
49
+ :preprocessor=>[:state, 9],
50
+ :FUNCTION=>[:state, 13],
51
+ :CLASS=>[:state, 14],
52
+ :"typedef.type"=>[:state, 15],
53
+ :"typedef.func"=>[:state, 16],
54
+ :HASH=>[:state, 17],
55
+ :TYPEDEF=>[:state, 21],
56
+ :$end=>[:reduce, 3]},
57
+ {:$end=>[:reduce, 6],
58
+ :FUNCTION=>[:reduce, 6],
59
+ :CLASS=>[:reduce, 6],
60
+ :TYPEDEF=>[:reduce, 6],
61
+ :HASH=>[:reduce, 6]},
62
+ {:CARET=>[:state, 24],
63
+ :$end=>[:reduce, 7],
64
+ :FUNCTION=>[:reduce, 7],
65
+ :CLASS=>[:reduce, 7],
66
+ :TYPEDEF=>[:reduce, 7],
67
+ :HASH=>[:reduce, 7]},
68
+ {:$end=>[:reduce, 8],
69
+ :FUNCTION=>[:reduce, 8],
70
+ :CLASS=>[:reduce, 8],
71
+ :TYPEDEF=>[:reduce, 8],
72
+ :HASH=>[:reduce, 8]},
73
+ {:$end=>[:reduce, 9],
74
+ :FUNCTION=>[:reduce, 9],
75
+ :CLASS=>[:reduce, 9],
76
+ :TYPEDEF=>[:reduce, 9],
77
+ :HASH=>[:reduce, 9]},
78
+ {:$end=>[:reduce, 10],
79
+ :FUNCTION=>[:reduce, 10],
80
+ :CLASS=>[:reduce, 10],
81
+ :TYPEDEF=>[:reduce, 10],
82
+ :HASH=>[:reduce, 10]},
83
+ {:$end=>[:reduce, 11],
84
+ :FUNCTION=>[:reduce, 11],
85
+ :CLASS=>[:reduce, 11],
86
+ :TYPEDEF=>[:reduce, 11],
87
+ :HASH=>[:reduce, 11]},
88
+ {:DCOLON=>[:state, 25],
89
+ :$end=>[:reduce, 48],
90
+ :FUNCTION=>[:reduce, 48],
91
+ :CLASS=>[:reduce, 48],
92
+ :TYPEDEF=>[:reduce, 48],
93
+ :HASH=>[:reduce, 48],
94
+ :CARET=>[:reduce, 48],
95
+ :SEMICOLON=>[:reduce, 48],
96
+ :EQUALS=>[:reduce, 48],
97
+ :RPAREN=>[:reduce, 48],
98
+ :COMMA=>[:reduce, 48],
99
+ :LBRACE=>[:reduce, 48]},
100
+ {:$end=>[:reduce, 49],
101
+ :FUNCTION=>[:reduce, 49],
102
+ :CLASS=>[:reduce, 49],
103
+ :TYPEDEF=>[:reduce, 49],
104
+ :HASH=>[:reduce, 49],
105
+ :CARET=>[:reduce, 49],
106
+ :SEMICOLON=>[:reduce, 49],
107
+ :EQUALS=>[:reduce, 49],
108
+ :RPAREN=>[:reduce, 49],
109
+ :COMMA=>[:reduce, 49],
110
+ :LBRACE=>[:reduce, 49]},
111
+ {:$end=>[:reduce, 50],
112
+ :FUNCTION=>[:reduce, 50],
113
+ :CLASS=>[:reduce, 50],
114
+ :TYPEDEF=>[:reduce, 50],
115
+ :HASH=>[:reduce, 50],
116
+ :CARET=>[:reduce, 50],
117
+ :SEMICOLON=>[:reduce, 50],
118
+ :EQUALS=>[:reduce, 50],
119
+ :RPAREN=>[:reduce, 50],
120
+ :COMMA=>[:reduce, 50],
121
+ :LBRACE=>[:reduce, 50]},
122
+ {:IDENTIFIER=>[:state, 26]},
123
+ {:"class.name"=>[:state, 27], :IDENTIFIER=>[:state, 18]},
124
+ {:$end=>[:reduce, 140],
125
+ :FUNCTION=>[:reduce, 140],
126
+ :CLASS=>[:reduce, 140],
127
+ :TYPEDEF=>[:reduce, 140],
128
+ :HASH=>[:reduce, 140]},
129
+ {:$end=>[:reduce, 141],
130
+ :FUNCTION=>[:reduce, 141],
131
+ :CLASS=>[:reduce, 141],
132
+ :TYPEDEF=>[:reduce, 141],
133
+ :HASH=>[:reduce, 141]},
134
+ {:IDENTIFIER=>[:state, 28]},
135
+ {:$end=>[:reduce, 20],
136
+ :FUNCTION=>[:reduce, 20],
137
+ :CLASS=>[:reduce, 20],
138
+ :TYPEDEF=>[:reduce, 20],
139
+ :HASH=>[:reduce, 20],
140
+ :CARET=>[:reduce, 20],
141
+ :DCOLON=>[:reduce, 20],
142
+ :LBRACE=>[:reduce, 20],
143
+ :COLON=>[:reduce, 20],
144
+ :LPAREN=>[:reduce, 20],
145
+ :SEMICOLON=>[:reduce, 20],
146
+ :EQUALS=>[:reduce, 20],
147
+ :RPAREN=>[:reduce, 20],
148
+ :COMMA=>[:reduce, 20]},
149
+ {:"class.name"=>[:state, 29], :IDENTIFIER=>[:state, 18]},
150
+ {:"class.name"=>[:state, 30], :IDENTIFIER=>[:state, 18]},
151
+ {:"class.name"=>[:state, 31], :IDENTIFIER=>[:state, 18]},
152
+ {:$end=>[:accept, 0]},
153
+ {:$end=>[:reduce, 5],
154
+ :FUNCTION=>[:reduce, 5],
155
+ :CLASS=>[:reduce, 5],
156
+ :TYPEDEF=>[:reduce, 5],
157
+ :HASH=>[:reduce, 5]},
158
+ {:$end=>[:reduce, 47],
159
+ :FUNCTION=>[:reduce, 47],
160
+ :CLASS=>[:reduce, 47],
161
+ :TYPEDEF=>[:reduce, 47],
162
+ :HASH=>[:reduce, 47],
163
+ :CARET=>[:reduce, 47],
164
+ :SEMICOLON=>[:reduce, 47],
165
+ :EQUALS=>[:reduce, 47],
166
+ :RPAREN=>[:reduce, 47],
167
+ :COMMA=>[:reduce, 47],
168
+ :LBRACE=>[:reduce, 47]},
169
+ {:IDENTIFIER=>[:state, 32]},
170
+ {:LPAREN=>[:state, 33]},
171
+ {:LBRACE=>[:state, 34], :DCOLON=>[:state, 25]},
172
+ {:"function.body"=>[:state, 35],
173
+ :"function.body.parts.maybe"=>[:state, 36],
174
+ :"function.body.parts"=>[:state, 37],
175
+ :"function.body.part"=>[:state, 38],
176
+ :"function.body.declare"=>[:state, 39],
177
+ :"function.body.expression"=>[:state, 40],
178
+ :"function.body.control"=>[:state, 41],
179
+ :preprocessor=>[:state, 42],
180
+ :IDENTIFIER=>[:state, 43],
181
+ :"function.body.assignment"=>[:state, 44],
182
+ :"function.body.reference"=>[:state, 45],
183
+ :"function.body.call"=>[:state, 46],
184
+ :"function.body.math"=>[:state, 47],
185
+ :"function.body.literal"=>[:state, 48],
186
+ :"function.body.logic"=>[:state, 49],
187
+ :LPAREN=>[:state, 50],
188
+ :"control.if"=>[:state, 51],
189
+ :"control.while"=>[:state, 52],
190
+ :"control.for"=>[:state, 53],
191
+ :"control.goto"=>[:state, 54],
192
+ :"control.label"=>[:state, 55],
193
+ :"control.return"=>[:state, 56],
194
+ :CONTINUE=>[:state, 57],
195
+ :BREAK=>[:state, 58],
196
+ :HASH=>[:state, 17],
197
+ :CARET=>[:state, 59],
198
+ :AMBER=>[:state, 60],
199
+ :DMINUS=>[:state, 61],
200
+ :DPLUS=>[:state, 62],
201
+ :PLUS=>[:state, 63],
202
+ :MINUS=>[:state, 64],
203
+ :NUMBER=>[:state, 65],
204
+ :FLOAT=>[:state, 66],
205
+ :DOUBLE=>[:state, 67],
206
+ :UNUMBER=>[:state, 68],
207
+ :SNUMBER=>[:state, 69],
208
+ :USNUMBER=>[:state, 70],
209
+ :LNUMBER=>[:state, 71],
210
+ :ULNUMBER=>[:state, 72],
211
+ :LLNUMBER=>[:state, 73],
212
+ :ULLNUMBER=>[:state, 74],
213
+ :CHARACTER=>[:state, 75],
214
+ :"function.body.string"=>[:state, 76],
215
+ :LNOT=>[:state, 77],
216
+ :BNOT=>[:state, 78],
217
+ :IF=>[:state, 79],
218
+ :WHILE=>[:state, 80],
219
+ :DO=>[:state, 81],
220
+ :FOR=>[:state, 82],
221
+ :GOTO=>[:state, 83],
222
+ :LABEL=>[:state, 84],
223
+ :RETURN=>[:state, 85],
224
+ :STRING=>[:state, 86],
225
+ :SEMICOLON=>[:reduce, 53]},
226
+ {:LBRACE=>[:state, 87], :DCOLON=>[:state, 25]},
227
+ {:LBRACE=>[:state, 88], :DCOLON=>[:state, 25]},
228
+ {:COLON=>[:state, 89],
229
+ :LPAREN=>[:state, 90],
230
+ :CARET=>[:state, 91],
231
+ :DCOLON=>[:state, 25]},
232
+ {:$end=>[:reduce, 19],
233
+ :FUNCTION=>[:reduce, 19],
234
+ :CLASS=>[:reduce, 19],
235
+ :TYPEDEF=>[:reduce, 19],
236
+ :HASH=>[:reduce, 19],
237
+ :CARET=>[:reduce, 19],
238
+ :DCOLON=>[:reduce, 19],
239
+ :LBRACE=>[:reduce, 19],
240
+ :COLON=>[:reduce, 19],
241
+ :LPAREN=>[:reduce, 19],
242
+ :SEMICOLON=>[:reduce, 19],
243
+ :EQUALS=>[:reduce, 19],
244
+ :RPAREN=>[:reduce, 19],
245
+ :COMMA=>[:reduce, 19]},
246
+ {:"function.arguments.maybe"=>[:state, 92],
247
+ :"function.arguments"=>[:state, 93],
248
+ :"function.argument"=>[:state, 94],
249
+ :IDENTIFIER=>[:state, 95],
250
+ :RPAREN=>[:reduce, 14]},
251
+ {:"class.body"=>[:state, 96],
252
+ :"class.parts.maybe"=>[:state, 97],
253
+ :"class.parts"=>[:state, 98],
254
+ :"class.part"=>[:state, 99],
255
+ :"class.attribute"=>[:state, 100],
256
+ :"class.function"=>[:state, 101],
257
+ :preprocessor=>[:state, 102],
258
+ :IDENTIFIER=>[:state, 103],
259
+ :FUNC=>[:state, 104],
260
+ :HASH=>[:state, 17],
261
+ :RBRACE=>[:reduce, 23]},
262
+ {:SEMICOLON=>[:state, 105]},
263
+ {:SEMICOLON=>[:reduce, 51], :RBRACE=>[:reduce, 51]},
264
+ {:"function.body.part"=>[:state, 106],
265
+ :"function.body.declare"=>[:state, 39],
266
+ :"function.body.expression"=>[:state, 40],
267
+ :"function.body.control"=>[:state, 41],
268
+ :preprocessor=>[:state, 42],
269
+ :IDENTIFIER=>[:state, 43],
270
+ :"function.body.assignment"=>[:state, 44],
271
+ :"function.body.reference"=>[:state, 45],
272
+ :"function.body.call"=>[:state, 46],
273
+ :"function.body.math"=>[:state, 47],
274
+ :"function.body.literal"=>[:state, 48],
275
+ :"function.body.logic"=>[:state, 49],
276
+ :LPAREN=>[:state, 50],
277
+ :"control.if"=>[:state, 51],
278
+ :"control.while"=>[:state, 52],
279
+ :"control.for"=>[:state, 53],
280
+ :"control.goto"=>[:state, 54],
281
+ :"control.label"=>[:state, 55],
282
+ :"control.return"=>[:state, 56],
283
+ :CONTINUE=>[:state, 57],
284
+ :BREAK=>[:state, 58],
285
+ :HASH=>[:state, 17],
286
+ :CARET=>[:state, 59],
287
+ :AMBER=>[:state, 60],
288
+ :DMINUS=>[:state, 61],
289
+ :DPLUS=>[:state, 62],
290
+ :PLUS=>[:state, 63],
291
+ :MINUS=>[:state, 64],
292
+ :NUMBER=>[:state, 65],
293
+ :FLOAT=>[:state, 66],
294
+ :DOUBLE=>[:state, 67],
295
+ :UNUMBER=>[:state, 68],
296
+ :SNUMBER=>[:state, 69],
297
+ :USNUMBER=>[:state, 70],
298
+ :LNUMBER=>[:state, 71],
299
+ :ULNUMBER=>[:state, 72],
300
+ :LLNUMBER=>[:state, 73],
301
+ :ULLNUMBER=>[:state, 74],
302
+ :CHARACTER=>[:state, 75],
303
+ :"function.body.string"=>[:state, 76],
304
+ :LNOT=>[:state, 77],
305
+ :BNOT=>[:state, 78],
306
+ :IF=>[:state, 79],
307
+ :WHILE=>[:state, 80],
308
+ :DO=>[:state, 81],
309
+ :FOR=>[:state, 82],
310
+ :GOTO=>[:state, 83],
311
+ :LABEL=>[:state, 84],
312
+ :RETURN=>[:state, 85],
313
+ :STRING=>[:state, 86],
314
+ :SEMICOLON=>[:reduce, 52],
315
+ :RBRACE=>[:reduce, 52]},
316
+ {:$default=>[:reduce, 55]},
317
+ {:SEMICOLON=>[:state, 107]},
318
+ {:SEMICOLON=>[:state, 108],
319
+ :LBRACK=>[:state, 109],
320
+ :LPAREN=>[:state, 110],
321
+ :PLUS=>[:state, 111],
322
+ :MINUS=>[:state, 112],
323
+ :STAR=>[:state, 113],
324
+ :DIVIDE=>[:state, 114],
325
+ :MOD=>[:state, 115],
326
+ :LSHIFT=>[:state, 116],
327
+ :RSHIFT=>[:state, 117],
328
+ :DPLUS=>[:state, 118],
329
+ :DMINUS=>[:state, 119],
330
+ :LBRK=>[:state, 120],
331
+ :RBRK=>[:state, 121],
332
+ :COMP=>[:state, 122],
333
+ :NCMP=>[:state, 123],
334
+ :LAND=>[:state, 124],
335
+ :AMBER=>[:state, 125],
336
+ :LOR=>[:state, 126],
337
+ :BOR=>[:state, 127]},
338
+ {:SEMICOLON=>[:state, 128]},
339
+ {:$default=>[:reduce, 59]},
340
+ {:COLON=>[:state, 129],
341
+ :SEMICOLON=>[:reduce, 73],
342
+ :LBRACK=>[:reduce, 73],
343
+ :LPAREN=>[:reduce, 73],
344
+ :PLUS=>[:reduce, 73],
345
+ :MINUS=>[:reduce, 73],
346
+ :STAR=>[:reduce, 73],
347
+ :DIVIDE=>[:reduce, 73],
348
+ :MOD=>[:reduce, 73],
349
+ :LSHIFT=>[:reduce, 73],
350
+ :RSHIFT=>[:reduce, 73],
351
+ :DPLUS=>[:reduce, 73],
352
+ :DMINUS=>[:reduce, 73],
353
+ :LBRK=>[:reduce, 73],
354
+ :RBRK=>[:reduce, 73],
355
+ :COMP=>[:reduce, 73],
356
+ :NCMP=>[:reduce, 73],
357
+ :LAND=>[:reduce, 73],
358
+ :AMBER=>[:reduce, 73],
359
+ :LOR=>[:reduce, 73],
360
+ :BOR=>[:reduce, 73],
361
+ :EQUALS=>[:reduce, 73],
362
+ :RPAREN=>[:reduce, 73],
363
+ :WHILE=>[:reduce, 73],
364
+ :RBRACK=>[:reduce, 73],
365
+ :COMMA=>[:reduce, 73],
366
+ :ELSE=>[:reduce, 73]},
367
+ {:SEMICOLON=>[:reduce, 60],
368
+ :LBRACK=>[:reduce, 60],
369
+ :LPAREN=>[:reduce, 60],
370
+ :PLUS=>[:reduce, 60],
371
+ :MINUS=>[:reduce, 60],
372
+ :STAR=>[:reduce, 60],
373
+ :DIVIDE=>[:reduce, 60],
374
+ :MOD=>[:reduce, 60],
375
+ :LSHIFT=>[:reduce, 60],
376
+ :RSHIFT=>[:reduce, 60],
377
+ :DPLUS=>[:reduce, 60],
378
+ :DMINUS=>[:reduce, 60],
379
+ :LBRK=>[:reduce, 60],
380
+ :RBRK=>[:reduce, 60],
381
+ :COMP=>[:reduce, 60],
382
+ :NCMP=>[:reduce, 60],
383
+ :LAND=>[:reduce, 60],
384
+ :AMBER=>[:reduce, 60],
385
+ :LOR=>[:reduce, 60],
386
+ :BOR=>[:reduce, 60],
387
+ :RPAREN=>[:reduce, 60],
388
+ :EQUALS=>[:reduce, 60],
389
+ :WHILE=>[:reduce, 60],
390
+ :RBRACK=>[:reduce, 60],
391
+ :COMMA=>[:reduce, 60],
392
+ :ELSE=>[:reduce, 60]},
393
+ {:EQUALS=>[:state, 130],
394
+ :SEMICOLON=>[:reduce, 61],
395
+ :LBRACK=>[:reduce, 61],
396
+ :LPAREN=>[:reduce, 61],
397
+ :PLUS=>[:reduce, 61],
398
+ :MINUS=>[:reduce, 61],
399
+ :STAR=>[:reduce, 61],
400
+ :DIVIDE=>[:reduce, 61],
401
+ :MOD=>[:reduce, 61],
402
+ :LSHIFT=>[:reduce, 61],
403
+ :RSHIFT=>[:reduce, 61],
404
+ :DPLUS=>[:reduce, 61],
405
+ :DMINUS=>[:reduce, 61],
406
+ :LBRK=>[:reduce, 61],
407
+ :RBRK=>[:reduce, 61],
408
+ :COMP=>[:reduce, 61],
409
+ :NCMP=>[:reduce, 61],
410
+ :LAND=>[:reduce, 61],
411
+ :AMBER=>[:reduce, 61],
412
+ :LOR=>[:reduce, 61],
413
+ :BOR=>[:reduce, 61],
414
+ :RPAREN=>[:reduce, 61],
415
+ :WHILE=>[:reduce, 61],
416
+ :RBRACK=>[:reduce, 61],
417
+ :COMMA=>[:reduce, 61],
418
+ :ELSE=>[:reduce, 61]},
419
+ {:SEMICOLON=>[:reduce, 62],
420
+ :LBRACK=>[:reduce, 62],
421
+ :LPAREN=>[:reduce, 62],
422
+ :PLUS=>[:reduce, 62],
423
+ :MINUS=>[:reduce, 62],
424
+ :STAR=>[:reduce, 62],
425
+ :DIVIDE=>[:reduce, 62],
426
+ :MOD=>[:reduce, 62],
427
+ :LSHIFT=>[:reduce, 62],
428
+ :RSHIFT=>[:reduce, 62],
429
+ :DPLUS=>[:reduce, 62],
430
+ :DMINUS=>[:reduce, 62],
431
+ :LBRK=>[:reduce, 62],
432
+ :RBRK=>[:reduce, 62],
433
+ :COMP=>[:reduce, 62],
434
+ :NCMP=>[:reduce, 62],
435
+ :LAND=>[:reduce, 62],
436
+ :AMBER=>[:reduce, 62],
437
+ :LOR=>[:reduce, 62],
438
+ :BOR=>[:reduce, 62],
439
+ :RPAREN=>[:reduce, 62],
440
+ :EQUALS=>[:reduce, 62],
441
+ :WHILE=>[:reduce, 62],
442
+ :RBRACK=>[:reduce, 62],
443
+ :COMMA=>[:reduce, 62],
444
+ :ELSE=>[:reduce, 62]},
445
+ {:SEMICOLON=>[:reduce, 63],
446
+ :LBRACK=>[:reduce, 63],
447
+ :LPAREN=>[:reduce, 63],
448
+ :PLUS=>[:reduce, 63],
449
+ :MINUS=>[:reduce, 63],
450
+ :STAR=>[:reduce, 63],
451
+ :DIVIDE=>[:reduce, 63],
452
+ :MOD=>[:reduce, 63],
453
+ :LSHIFT=>[:reduce, 63],
454
+ :RSHIFT=>[:reduce, 63],
455
+ :DPLUS=>[:reduce, 63],
456
+ :DMINUS=>[:reduce, 63],
457
+ :LBRK=>[:reduce, 63],
458
+ :RBRK=>[:reduce, 63],
459
+ :COMP=>[:reduce, 63],
460
+ :NCMP=>[:reduce, 63],
461
+ :LAND=>[:reduce, 63],
462
+ :AMBER=>[:reduce, 63],
463
+ :LOR=>[:reduce, 63],
464
+ :BOR=>[:reduce, 63],
465
+ :RPAREN=>[:reduce, 63],
466
+ :EQUALS=>[:reduce, 63],
467
+ :WHILE=>[:reduce, 63],
468
+ :RBRACK=>[:reduce, 63],
469
+ :COMMA=>[:reduce, 63],
470
+ :ELSE=>[:reduce, 63]},
471
+ {:SEMICOLON=>[:reduce, 64],
472
+ :LBRACK=>[:reduce, 64],
473
+ :LPAREN=>[:reduce, 64],
474
+ :PLUS=>[:reduce, 64],
475
+ :MINUS=>[:reduce, 64],
476
+ :STAR=>[:reduce, 64],
477
+ :DIVIDE=>[:reduce, 64],
478
+ :MOD=>[:reduce, 64],
479
+ :LSHIFT=>[:reduce, 64],
480
+ :RSHIFT=>[:reduce, 64],
481
+ :DPLUS=>[:reduce, 64],
482
+ :DMINUS=>[:reduce, 64],
483
+ :LBRK=>[:reduce, 64],
484
+ :RBRK=>[:reduce, 64],
485
+ :COMP=>[:reduce, 64],
486
+ :NCMP=>[:reduce, 64],
487
+ :LAND=>[:reduce, 64],
488
+ :AMBER=>[:reduce, 64],
489
+ :LOR=>[:reduce, 64],
490
+ :BOR=>[:reduce, 64],
491
+ :RPAREN=>[:reduce, 64],
492
+ :EQUALS=>[:reduce, 64],
493
+ :WHILE=>[:reduce, 64],
494
+ :RBRACK=>[:reduce, 64],
495
+ :COMMA=>[:reduce, 64],
496
+ :ELSE=>[:reduce, 64]},
497
+ {:SEMICOLON=>[:reduce, 65],
498
+ :LBRACK=>[:reduce, 65],
499
+ :LPAREN=>[:reduce, 65],
500
+ :PLUS=>[:reduce, 65],
501
+ :MINUS=>[:reduce, 65],
502
+ :STAR=>[:reduce, 65],
503
+ :DIVIDE=>[:reduce, 65],
504
+ :MOD=>[:reduce, 65],
505
+ :LSHIFT=>[:reduce, 65],
506
+ :RSHIFT=>[:reduce, 65],
507
+ :DPLUS=>[:reduce, 65],
508
+ :DMINUS=>[:reduce, 65],
509
+ :LBRK=>[:reduce, 65],
510
+ :RBRK=>[:reduce, 65],
511
+ :COMP=>[:reduce, 65],
512
+ :NCMP=>[:reduce, 65],
513
+ :LAND=>[:reduce, 65],
514
+ :AMBER=>[:reduce, 65],
515
+ :LOR=>[:reduce, 65],
516
+ :BOR=>[:reduce, 65],
517
+ :RPAREN=>[:reduce, 65],
518
+ :EQUALS=>[:reduce, 65],
519
+ :WHILE=>[:reduce, 65],
520
+ :RBRACK=>[:reduce, 65],
521
+ :COMMA=>[:reduce, 65],
522
+ :ELSE=>[:reduce, 65]},
523
+ {:"function.body.expression"=>[:state, 131],
524
+ :"function.body.assignment"=>[:state, 44],
525
+ :"function.body.reference"=>[:state, 45],
526
+ :"function.body.call"=>[:state, 46],
527
+ :"function.body.math"=>[:state, 47],
528
+ :"function.body.literal"=>[:state, 48],
529
+ :"function.body.logic"=>[:state, 49],
530
+ :LPAREN=>[:state, 50],
531
+ :CARET=>[:state, 59],
532
+ :AMBER=>[:state, 60],
533
+ :IDENTIFIER=>[:state, 43],
534
+ :DMINUS=>[:state, 61],
535
+ :DPLUS=>[:state, 62],
536
+ :PLUS=>[:state, 63],
537
+ :MINUS=>[:state, 64],
538
+ :NUMBER=>[:state, 65],
539
+ :FLOAT=>[:state, 66],
540
+ :DOUBLE=>[:state, 67],
541
+ :UNUMBER=>[:state, 68],
542
+ :SNUMBER=>[:state, 69],
543
+ :USNUMBER=>[:state, 70],
544
+ :LNUMBER=>[:state, 71],
545
+ :ULNUMBER=>[:state, 72],
546
+ :LLNUMBER=>[:state, 73],
547
+ :ULLNUMBER=>[:state, 74],
548
+ :CHARACTER=>[:state, 75],
549
+ :"function.body.string"=>[:state, 76],
550
+ :LNOT=>[:state, 77],
551
+ :BNOT=>[:state, 78],
552
+ :STRING=>[:state, 86]},
553
+ {:SEMICOLON=>[:reduce, 119]},
554
+ {:SEMICOLON=>[:reduce, 120]},
555
+ {:SEMICOLON=>[:reduce, 121]},
556
+ {:SEMICOLON=>[:reduce, 122]},
557
+ {:SEMICOLON=>[:reduce, 123]},
558
+ {:SEMICOLON=>[:reduce, 124]},
559
+ {:SEMICOLON=>[:reduce, 125]},
560
+ {:SEMICOLON=>[:reduce, 126]},
561
+ {:"function.body.expression"=>[:state, 132],
562
+ :"function.body.assignment"=>[:state, 44],
563
+ :"function.body.reference"=>[:state, 45],
564
+ :"function.body.call"=>[:state, 46],
565
+ :"function.body.math"=>[:state, 47],
566
+ :"function.body.literal"=>[:state, 48],
567
+ :"function.body.logic"=>[:state, 49],
568
+ :LPAREN=>[:state, 50],
569
+ :CARET=>[:state, 59],
570
+ :AMBER=>[:state, 60],
571
+ :IDENTIFIER=>[:state, 43],
572
+ :DMINUS=>[:state, 61],
573
+ :DPLUS=>[:state, 62],
574
+ :PLUS=>[:state, 63],
575
+ :MINUS=>[:state, 64],
576
+ :NUMBER=>[:state, 65],
577
+ :FLOAT=>[:state, 66],
578
+ :DOUBLE=>[:state, 67],
579
+ :UNUMBER=>[:state, 68],
580
+ :SNUMBER=>[:state, 69],
581
+ :USNUMBER=>[:state, 70],
582
+ :LNUMBER=>[:state, 71],
583
+ :ULNUMBER=>[:state, 72],
584
+ :LLNUMBER=>[:state, 73],
585
+ :ULLNUMBER=>[:state, 74],
586
+ :CHARACTER=>[:state, 75],
587
+ :"function.body.string"=>[:state, 76],
588
+ :LNOT=>[:state, 77],
589
+ :BNOT=>[:state, 78],
590
+ :STRING=>[:state, 86]},
591
+ {:"function.body.expression"=>[:state, 133],
592
+ :"function.body.assignment"=>[:state, 44],
593
+ :"function.body.reference"=>[:state, 45],
594
+ :"function.body.call"=>[:state, 46],
595
+ :"function.body.math"=>[:state, 47],
596
+ :"function.body.literal"=>[:state, 48],
597
+ :"function.body.logic"=>[:state, 49],
598
+ :LPAREN=>[:state, 50],
599
+ :CARET=>[:state, 59],
600
+ :AMBER=>[:state, 60],
601
+ :IDENTIFIER=>[:state, 43],
602
+ :DMINUS=>[:state, 61],
603
+ :DPLUS=>[:state, 62],
604
+ :PLUS=>[:state, 63],
605
+ :MINUS=>[:state, 64],
606
+ :NUMBER=>[:state, 65],
607
+ :FLOAT=>[:state, 66],
608
+ :DOUBLE=>[:state, 67],
609
+ :UNUMBER=>[:state, 68],
610
+ :SNUMBER=>[:state, 69],
611
+ :USNUMBER=>[:state, 70],
612
+ :LNUMBER=>[:state, 71],
613
+ :ULNUMBER=>[:state, 72],
614
+ :LLNUMBER=>[:state, 73],
615
+ :ULLNUMBER=>[:state, 74],
616
+ :CHARACTER=>[:state, 75],
617
+ :"function.body.string"=>[:state, 76],
618
+ :LNOT=>[:state, 77],
619
+ :BNOT=>[:state, 78],
620
+ :STRING=>[:state, 86]},
621
+ {:"function.body.expression"=>[:state, 134],
622
+ :"function.body.assignment"=>[:state, 44],
623
+ :"function.body.reference"=>[:state, 45],
624
+ :"function.body.call"=>[:state, 46],
625
+ :"function.body.math"=>[:state, 47],
626
+ :"function.body.literal"=>[:state, 48],
627
+ :"function.body.logic"=>[:state, 49],
628
+ :LPAREN=>[:state, 50],
629
+ :CARET=>[:state, 59],
630
+ :AMBER=>[:state, 60],
631
+ :IDENTIFIER=>[:state, 43],
632
+ :DMINUS=>[:state, 61],
633
+ :DPLUS=>[:state, 62],
634
+ :PLUS=>[:state, 63],
635
+ :MINUS=>[:state, 64],
636
+ :NUMBER=>[:state, 65],
637
+ :FLOAT=>[:state, 66],
638
+ :DOUBLE=>[:state, 67],
639
+ :UNUMBER=>[:state, 68],
640
+ :SNUMBER=>[:state, 69],
641
+ :USNUMBER=>[:state, 70],
642
+ :LNUMBER=>[:state, 71],
643
+ :ULNUMBER=>[:state, 72],
644
+ :LLNUMBER=>[:state, 73],
645
+ :ULLNUMBER=>[:state, 74],
646
+ :CHARACTER=>[:state, 75],
647
+ :"function.body.string"=>[:state, 76],
648
+ :LNOT=>[:state, 77],
649
+ :BNOT=>[:state, 78],
650
+ :STRING=>[:state, 86]},
651
+ {:"function.body.expression"=>[:state, 135],
652
+ :"function.body.assignment"=>[:state, 44],
653
+ :"function.body.reference"=>[:state, 45],
654
+ :"function.body.call"=>[:state, 46],
655
+ :"function.body.math"=>[:state, 47],
656
+ :"function.body.literal"=>[:state, 48],
657
+ :"function.body.logic"=>[:state, 49],
658
+ :LPAREN=>[:state, 50],
659
+ :CARET=>[:state, 59],
660
+ :AMBER=>[:state, 60],
661
+ :IDENTIFIER=>[:state, 43],
662
+ :DMINUS=>[:state, 61],
663
+ :DPLUS=>[:state, 62],
664
+ :PLUS=>[:state, 63],
665
+ :MINUS=>[:state, 64],
666
+ :NUMBER=>[:state, 65],
667
+ :FLOAT=>[:state, 66],
668
+ :DOUBLE=>[:state, 67],
669
+ :UNUMBER=>[:state, 68],
670
+ :SNUMBER=>[:state, 69],
671
+ :USNUMBER=>[:state, 70],
672
+ :LNUMBER=>[:state, 71],
673
+ :ULNUMBER=>[:state, 72],
674
+ :LLNUMBER=>[:state, 73],
675
+ :ULLNUMBER=>[:state, 74],
676
+ :CHARACTER=>[:state, 75],
677
+ :"function.body.string"=>[:state, 76],
678
+ :LNOT=>[:state, 77],
679
+ :BNOT=>[:state, 78],
680
+ :STRING=>[:state, 86]},
681
+ {:"function.body.expression"=>[:state, 136],
682
+ :"function.body.assignment"=>[:state, 44],
683
+ :"function.body.reference"=>[:state, 45],
684
+ :"function.body.call"=>[:state, 46],
685
+ :"function.body.math"=>[:state, 47],
686
+ :"function.body.literal"=>[:state, 48],
687
+ :"function.body.logic"=>[:state, 49],
688
+ :LPAREN=>[:state, 50],
689
+ :CARET=>[:state, 59],
690
+ :AMBER=>[:state, 60],
691
+ :IDENTIFIER=>[:state, 43],
692
+ :DMINUS=>[:state, 61],
693
+ :DPLUS=>[:state, 62],
694
+ :PLUS=>[:state, 63],
695
+ :MINUS=>[:state, 64],
696
+ :NUMBER=>[:state, 65],
697
+ :FLOAT=>[:state, 66],
698
+ :DOUBLE=>[:state, 67],
699
+ :UNUMBER=>[:state, 68],
700
+ :SNUMBER=>[:state, 69],
701
+ :USNUMBER=>[:state, 70],
702
+ :LNUMBER=>[:state, 71],
703
+ :ULNUMBER=>[:state, 72],
704
+ :LLNUMBER=>[:state, 73],
705
+ :ULLNUMBER=>[:state, 74],
706
+ :CHARACTER=>[:state, 75],
707
+ :"function.body.string"=>[:state, 76],
708
+ :LNOT=>[:state, 77],
709
+ :BNOT=>[:state, 78],
710
+ :STRING=>[:state, 86]},
711
+ {:"function.body.expression"=>[:state, 137],
712
+ :"function.body.assignment"=>[:state, 44],
713
+ :"function.body.reference"=>[:state, 45],
714
+ :"function.body.call"=>[:state, 46],
715
+ :"function.body.math"=>[:state, 47],
716
+ :"function.body.literal"=>[:state, 48],
717
+ :"function.body.logic"=>[:state, 49],
718
+ :LPAREN=>[:state, 50],
719
+ :CARET=>[:state, 59],
720
+ :AMBER=>[:state, 60],
721
+ :IDENTIFIER=>[:state, 43],
722
+ :DMINUS=>[:state, 61],
723
+ :DPLUS=>[:state, 62],
724
+ :PLUS=>[:state, 63],
725
+ :MINUS=>[:state, 64],
726
+ :NUMBER=>[:state, 65],
727
+ :FLOAT=>[:state, 66],
728
+ :DOUBLE=>[:state, 67],
729
+ :UNUMBER=>[:state, 68],
730
+ :SNUMBER=>[:state, 69],
731
+ :USNUMBER=>[:state, 70],
732
+ :LNUMBER=>[:state, 71],
733
+ :ULNUMBER=>[:state, 72],
734
+ :LLNUMBER=>[:state, 73],
735
+ :ULLNUMBER=>[:state, 74],
736
+ :CHARACTER=>[:state, 75],
737
+ :"function.body.string"=>[:state, 76],
738
+ :LNOT=>[:state, 77],
739
+ :BNOT=>[:state, 78],
740
+ :STRING=>[:state, 86]},
741
+ {:SEMICOLON=>[:reduce, 88],
742
+ :LBRACK=>[:reduce, 88],
743
+ :LPAREN=>[:reduce, 88],
744
+ :PLUS=>[:reduce, 88],
745
+ :MINUS=>[:reduce, 88],
746
+ :STAR=>[:reduce, 88],
747
+ :DIVIDE=>[:reduce, 88],
748
+ :MOD=>[:reduce, 88],
749
+ :LSHIFT=>[:reduce, 88],
750
+ :RSHIFT=>[:reduce, 88],
751
+ :DPLUS=>[:reduce, 88],
752
+ :DMINUS=>[:reduce, 88],
753
+ :LBRK=>[:reduce, 88],
754
+ :RBRK=>[:reduce, 88],
755
+ :COMP=>[:reduce, 88],
756
+ :NCMP=>[:reduce, 88],
757
+ :LAND=>[:reduce, 88],
758
+ :AMBER=>[:reduce, 88],
759
+ :LOR=>[:reduce, 88],
760
+ :BOR=>[:reduce, 88],
761
+ :RPAREN=>[:reduce, 88],
762
+ :EQUALS=>[:reduce, 88],
763
+ :WHILE=>[:reduce, 88],
764
+ :RBRACK=>[:reduce, 88],
765
+ :COMMA=>[:reduce, 88],
766
+ :ELSE=>[:reduce, 88]},
767
+ {:SEMICOLON=>[:reduce, 89],
768
+ :LBRACK=>[:reduce, 89],
769
+ :LPAREN=>[:reduce, 89],
770
+ :PLUS=>[:reduce, 89],
771
+ :MINUS=>[:reduce, 89],
772
+ :STAR=>[:reduce, 89],
773
+ :DIVIDE=>[:reduce, 89],
774
+ :MOD=>[:reduce, 89],
775
+ :LSHIFT=>[:reduce, 89],
776
+ :RSHIFT=>[:reduce, 89],
777
+ :DPLUS=>[:reduce, 89],
778
+ :DMINUS=>[:reduce, 89],
779
+ :LBRK=>[:reduce, 89],
780
+ :RBRK=>[:reduce, 89],
781
+ :COMP=>[:reduce, 89],
782
+ :NCMP=>[:reduce, 89],
783
+ :LAND=>[:reduce, 89],
784
+ :AMBER=>[:reduce, 89],
785
+ :LOR=>[:reduce, 89],
786
+ :BOR=>[:reduce, 89],
787
+ :RPAREN=>[:reduce, 89],
788
+ :EQUALS=>[:reduce, 89],
789
+ :WHILE=>[:reduce, 89],
790
+ :RBRACK=>[:reduce, 89],
791
+ :COMMA=>[:reduce, 89],
792
+ :ELSE=>[:reduce, 89]},
793
+ {:SEMICOLON=>[:reduce, 90],
794
+ :LBRACK=>[:reduce, 90],
795
+ :LPAREN=>[:reduce, 90],
796
+ :PLUS=>[:reduce, 90],
797
+ :MINUS=>[:reduce, 90],
798
+ :STAR=>[:reduce, 90],
799
+ :DIVIDE=>[:reduce, 90],
800
+ :MOD=>[:reduce, 90],
801
+ :LSHIFT=>[:reduce, 90],
802
+ :RSHIFT=>[:reduce, 90],
803
+ :DPLUS=>[:reduce, 90],
804
+ :DMINUS=>[:reduce, 90],
805
+ :LBRK=>[:reduce, 90],
806
+ :RBRK=>[:reduce, 90],
807
+ :COMP=>[:reduce, 90],
808
+ :NCMP=>[:reduce, 90],
809
+ :LAND=>[:reduce, 90],
810
+ :AMBER=>[:reduce, 90],
811
+ :LOR=>[:reduce, 90],
812
+ :BOR=>[:reduce, 90],
813
+ :RPAREN=>[:reduce, 90],
814
+ :EQUALS=>[:reduce, 90],
815
+ :WHILE=>[:reduce, 90],
816
+ :RBRACK=>[:reduce, 90],
817
+ :COMMA=>[:reduce, 90],
818
+ :ELSE=>[:reduce, 90]},
819
+ {:SEMICOLON=>[:reduce, 91],
820
+ :LBRACK=>[:reduce, 91],
821
+ :LPAREN=>[:reduce, 91],
822
+ :PLUS=>[:reduce, 91],
823
+ :MINUS=>[:reduce, 91],
824
+ :STAR=>[:reduce, 91],
825
+ :DIVIDE=>[:reduce, 91],
826
+ :MOD=>[:reduce, 91],
827
+ :LSHIFT=>[:reduce, 91],
828
+ :RSHIFT=>[:reduce, 91],
829
+ :DPLUS=>[:reduce, 91],
830
+ :DMINUS=>[:reduce, 91],
831
+ :LBRK=>[:reduce, 91],
832
+ :RBRK=>[:reduce, 91],
833
+ :COMP=>[:reduce, 91],
834
+ :NCMP=>[:reduce, 91],
835
+ :LAND=>[:reduce, 91],
836
+ :AMBER=>[:reduce, 91],
837
+ :LOR=>[:reduce, 91],
838
+ :BOR=>[:reduce, 91],
839
+ :RPAREN=>[:reduce, 91],
840
+ :EQUALS=>[:reduce, 91],
841
+ :WHILE=>[:reduce, 91],
842
+ :RBRACK=>[:reduce, 91],
843
+ :COMMA=>[:reduce, 91],
844
+ :ELSE=>[:reduce, 91]},
845
+ {:SEMICOLON=>[:reduce, 92],
846
+ :LBRACK=>[:reduce, 92],
847
+ :LPAREN=>[:reduce, 92],
848
+ :PLUS=>[:reduce, 92],
849
+ :MINUS=>[:reduce, 92],
850
+ :STAR=>[:reduce, 92],
851
+ :DIVIDE=>[:reduce, 92],
852
+ :MOD=>[:reduce, 92],
853
+ :LSHIFT=>[:reduce, 92],
854
+ :RSHIFT=>[:reduce, 92],
855
+ :DPLUS=>[:reduce, 92],
856
+ :DMINUS=>[:reduce, 92],
857
+ :LBRK=>[:reduce, 92],
858
+ :RBRK=>[:reduce, 92],
859
+ :COMP=>[:reduce, 92],
860
+ :NCMP=>[:reduce, 92],
861
+ :LAND=>[:reduce, 92],
862
+ :AMBER=>[:reduce, 92],
863
+ :LOR=>[:reduce, 92],
864
+ :BOR=>[:reduce, 92],
865
+ :RPAREN=>[:reduce, 92],
866
+ :EQUALS=>[:reduce, 92],
867
+ :WHILE=>[:reduce, 92],
868
+ :RBRACK=>[:reduce, 92],
869
+ :COMMA=>[:reduce, 92],
870
+ :ELSE=>[:reduce, 92]},
871
+ {:SEMICOLON=>[:reduce, 93],
872
+ :LBRACK=>[:reduce, 93],
873
+ :LPAREN=>[:reduce, 93],
874
+ :PLUS=>[:reduce, 93],
875
+ :MINUS=>[:reduce, 93],
876
+ :STAR=>[:reduce, 93],
877
+ :DIVIDE=>[:reduce, 93],
878
+ :MOD=>[:reduce, 93],
879
+ :LSHIFT=>[:reduce, 93],
880
+ :RSHIFT=>[:reduce, 93],
881
+ :DPLUS=>[:reduce, 93],
882
+ :DMINUS=>[:reduce, 93],
883
+ :LBRK=>[:reduce, 93],
884
+ :RBRK=>[:reduce, 93],
885
+ :COMP=>[:reduce, 93],
886
+ :NCMP=>[:reduce, 93],
887
+ :LAND=>[:reduce, 93],
888
+ :AMBER=>[:reduce, 93],
889
+ :LOR=>[:reduce, 93],
890
+ :BOR=>[:reduce, 93],
891
+ :RPAREN=>[:reduce, 93],
892
+ :EQUALS=>[:reduce, 93],
893
+ :WHILE=>[:reduce, 93],
894
+ :RBRACK=>[:reduce, 93],
895
+ :COMMA=>[:reduce, 93],
896
+ :ELSE=>[:reduce, 93]},
897
+ {:SEMICOLON=>[:reduce, 94],
898
+ :LBRACK=>[:reduce, 94],
899
+ :LPAREN=>[:reduce, 94],
900
+ :PLUS=>[:reduce, 94],
901
+ :MINUS=>[:reduce, 94],
902
+ :STAR=>[:reduce, 94],
903
+ :DIVIDE=>[:reduce, 94],
904
+ :MOD=>[:reduce, 94],
905
+ :LSHIFT=>[:reduce, 94],
906
+ :RSHIFT=>[:reduce, 94],
907
+ :DPLUS=>[:reduce, 94],
908
+ :DMINUS=>[:reduce, 94],
909
+ :LBRK=>[:reduce, 94],
910
+ :RBRK=>[:reduce, 94],
911
+ :COMP=>[:reduce, 94],
912
+ :NCMP=>[:reduce, 94],
913
+ :LAND=>[:reduce, 94],
914
+ :AMBER=>[:reduce, 94],
915
+ :LOR=>[:reduce, 94],
916
+ :BOR=>[:reduce, 94],
917
+ :RPAREN=>[:reduce, 94],
918
+ :EQUALS=>[:reduce, 94],
919
+ :WHILE=>[:reduce, 94],
920
+ :RBRACK=>[:reduce, 94],
921
+ :COMMA=>[:reduce, 94],
922
+ :ELSE=>[:reduce, 94]},
923
+ {:SEMICOLON=>[:reduce, 95],
924
+ :LBRACK=>[:reduce, 95],
925
+ :LPAREN=>[:reduce, 95],
926
+ :PLUS=>[:reduce, 95],
927
+ :MINUS=>[:reduce, 95],
928
+ :STAR=>[:reduce, 95],
929
+ :DIVIDE=>[:reduce, 95],
930
+ :MOD=>[:reduce, 95],
931
+ :LSHIFT=>[:reduce, 95],
932
+ :RSHIFT=>[:reduce, 95],
933
+ :DPLUS=>[:reduce, 95],
934
+ :DMINUS=>[:reduce, 95],
935
+ :LBRK=>[:reduce, 95],
936
+ :RBRK=>[:reduce, 95],
937
+ :COMP=>[:reduce, 95],
938
+ :NCMP=>[:reduce, 95],
939
+ :LAND=>[:reduce, 95],
940
+ :AMBER=>[:reduce, 95],
941
+ :LOR=>[:reduce, 95],
942
+ :BOR=>[:reduce, 95],
943
+ :RPAREN=>[:reduce, 95],
944
+ :EQUALS=>[:reduce, 95],
945
+ :WHILE=>[:reduce, 95],
946
+ :RBRACK=>[:reduce, 95],
947
+ :COMMA=>[:reduce, 95],
948
+ :ELSE=>[:reduce, 95]},
949
+ {:SEMICOLON=>[:reduce, 96],
950
+ :LBRACK=>[:reduce, 96],
951
+ :LPAREN=>[:reduce, 96],
952
+ :PLUS=>[:reduce, 96],
953
+ :MINUS=>[:reduce, 96],
954
+ :STAR=>[:reduce, 96],
955
+ :DIVIDE=>[:reduce, 96],
956
+ :MOD=>[:reduce, 96],
957
+ :LSHIFT=>[:reduce, 96],
958
+ :RSHIFT=>[:reduce, 96],
959
+ :DPLUS=>[:reduce, 96],
960
+ :DMINUS=>[:reduce, 96],
961
+ :LBRK=>[:reduce, 96],
962
+ :RBRK=>[:reduce, 96],
963
+ :COMP=>[:reduce, 96],
964
+ :NCMP=>[:reduce, 96],
965
+ :LAND=>[:reduce, 96],
966
+ :AMBER=>[:reduce, 96],
967
+ :LOR=>[:reduce, 96],
968
+ :BOR=>[:reduce, 96],
969
+ :RPAREN=>[:reduce, 96],
970
+ :EQUALS=>[:reduce, 96],
971
+ :WHILE=>[:reduce, 96],
972
+ :RBRACK=>[:reduce, 96],
973
+ :COMMA=>[:reduce, 96],
974
+ :ELSE=>[:reduce, 96]},
975
+ {:SEMICOLON=>[:reduce, 97],
976
+ :LBRACK=>[:reduce, 97],
977
+ :LPAREN=>[:reduce, 97],
978
+ :PLUS=>[:reduce, 97],
979
+ :MINUS=>[:reduce, 97],
980
+ :STAR=>[:reduce, 97],
981
+ :DIVIDE=>[:reduce, 97],
982
+ :MOD=>[:reduce, 97],
983
+ :LSHIFT=>[:reduce, 97],
984
+ :RSHIFT=>[:reduce, 97],
985
+ :DPLUS=>[:reduce, 97],
986
+ :DMINUS=>[:reduce, 97],
987
+ :LBRK=>[:reduce, 97],
988
+ :RBRK=>[:reduce, 97],
989
+ :COMP=>[:reduce, 97],
990
+ :NCMP=>[:reduce, 97],
991
+ :LAND=>[:reduce, 97],
992
+ :AMBER=>[:reduce, 97],
993
+ :LOR=>[:reduce, 97],
994
+ :BOR=>[:reduce, 97],
995
+ :RPAREN=>[:reduce, 97],
996
+ :EQUALS=>[:reduce, 97],
997
+ :WHILE=>[:reduce, 97],
998
+ :RBRACK=>[:reduce, 97],
999
+ :COMMA=>[:reduce, 97],
1000
+ :ELSE=>[:reduce, 97]},
1001
+ {:SEMICOLON=>[:reduce, 98],
1002
+ :LBRACK=>[:reduce, 98],
1003
+ :LPAREN=>[:reduce, 98],
1004
+ :PLUS=>[:reduce, 98],
1005
+ :MINUS=>[:reduce, 98],
1006
+ :STAR=>[:reduce, 98],
1007
+ :DIVIDE=>[:reduce, 98],
1008
+ :MOD=>[:reduce, 98],
1009
+ :LSHIFT=>[:reduce, 98],
1010
+ :RSHIFT=>[:reduce, 98],
1011
+ :DPLUS=>[:reduce, 98],
1012
+ :DMINUS=>[:reduce, 98],
1013
+ :LBRK=>[:reduce, 98],
1014
+ :RBRK=>[:reduce, 98],
1015
+ :COMP=>[:reduce, 98],
1016
+ :NCMP=>[:reduce, 98],
1017
+ :LAND=>[:reduce, 98],
1018
+ :AMBER=>[:reduce, 98],
1019
+ :LOR=>[:reduce, 98],
1020
+ :BOR=>[:reduce, 98],
1021
+ :RPAREN=>[:reduce, 98],
1022
+ :EQUALS=>[:reduce, 98],
1023
+ :WHILE=>[:reduce, 98],
1024
+ :RBRACK=>[:reduce, 98],
1025
+ :COMMA=>[:reduce, 98],
1026
+ :ELSE=>[:reduce, 98]},
1027
+ {:STRING=>[:state, 138],
1028
+ :SEMICOLON=>[:reduce, 99],
1029
+ :LBRACK=>[:reduce, 99],
1030
+ :LPAREN=>[:reduce, 99],
1031
+ :PLUS=>[:reduce, 99],
1032
+ :MINUS=>[:reduce, 99],
1033
+ :STAR=>[:reduce, 99],
1034
+ :DIVIDE=>[:reduce, 99],
1035
+ :MOD=>[:reduce, 99],
1036
+ :LSHIFT=>[:reduce, 99],
1037
+ :RSHIFT=>[:reduce, 99],
1038
+ :DPLUS=>[:reduce, 99],
1039
+ :DMINUS=>[:reduce, 99],
1040
+ :LBRK=>[:reduce, 99],
1041
+ :RBRK=>[:reduce, 99],
1042
+ :COMP=>[:reduce, 99],
1043
+ :NCMP=>[:reduce, 99],
1044
+ :LAND=>[:reduce, 99],
1045
+ :AMBER=>[:reduce, 99],
1046
+ :LOR=>[:reduce, 99],
1047
+ :BOR=>[:reduce, 99],
1048
+ :RPAREN=>[:reduce, 99],
1049
+ :EQUALS=>[:reduce, 99],
1050
+ :WHILE=>[:reduce, 99],
1051
+ :RBRACK=>[:reduce, 99],
1052
+ :COMMA=>[:reduce, 99],
1053
+ :ELSE=>[:reduce, 99]},
1054
+ {:"function.body.expression"=>[:state, 139],
1055
+ :"function.body.assignment"=>[:state, 44],
1056
+ :"function.body.reference"=>[:state, 45],
1057
+ :"function.body.call"=>[:state, 46],
1058
+ :"function.body.math"=>[:state, 47],
1059
+ :"function.body.literal"=>[:state, 48],
1060
+ :"function.body.logic"=>[:state, 49],
1061
+ :LPAREN=>[:state, 50],
1062
+ :CARET=>[:state, 59],
1063
+ :AMBER=>[:state, 60],
1064
+ :IDENTIFIER=>[:state, 43],
1065
+ :DMINUS=>[:state, 61],
1066
+ :DPLUS=>[:state, 62],
1067
+ :PLUS=>[:state, 63],
1068
+ :MINUS=>[:state, 64],
1069
+ :NUMBER=>[:state, 65],
1070
+ :FLOAT=>[:state, 66],
1071
+ :DOUBLE=>[:state, 67],
1072
+ :UNUMBER=>[:state, 68],
1073
+ :SNUMBER=>[:state, 69],
1074
+ :USNUMBER=>[:state, 70],
1075
+ :LNUMBER=>[:state, 71],
1076
+ :ULNUMBER=>[:state, 72],
1077
+ :LLNUMBER=>[:state, 73],
1078
+ :ULLNUMBER=>[:state, 74],
1079
+ :CHARACTER=>[:state, 75],
1080
+ :"function.body.string"=>[:state, 76],
1081
+ :LNOT=>[:state, 77],
1082
+ :BNOT=>[:state, 78],
1083
+ :STRING=>[:state, 86]},
1084
+ {:"function.body.expression"=>[:state, 140],
1085
+ :"function.body.assignment"=>[:state, 44],
1086
+ :"function.body.reference"=>[:state, 45],
1087
+ :"function.body.call"=>[:state, 46],
1088
+ :"function.body.math"=>[:state, 47],
1089
+ :"function.body.literal"=>[:state, 48],
1090
+ :"function.body.logic"=>[:state, 49],
1091
+ :LPAREN=>[:state, 50],
1092
+ :CARET=>[:state, 59],
1093
+ :AMBER=>[:state, 60],
1094
+ :IDENTIFIER=>[:state, 43],
1095
+ :DMINUS=>[:state, 61],
1096
+ :DPLUS=>[:state, 62],
1097
+ :PLUS=>[:state, 63],
1098
+ :MINUS=>[:state, 64],
1099
+ :NUMBER=>[:state, 65],
1100
+ :FLOAT=>[:state, 66],
1101
+ :DOUBLE=>[:state, 67],
1102
+ :UNUMBER=>[:state, 68],
1103
+ :SNUMBER=>[:state, 69],
1104
+ :USNUMBER=>[:state, 70],
1105
+ :LNUMBER=>[:state, 71],
1106
+ :ULNUMBER=>[:state, 72],
1107
+ :LLNUMBER=>[:state, 73],
1108
+ :ULLNUMBER=>[:state, 74],
1109
+ :CHARACTER=>[:state, 75],
1110
+ :"function.body.string"=>[:state, 76],
1111
+ :LNOT=>[:state, 77],
1112
+ :BNOT=>[:state, 78],
1113
+ :STRING=>[:state, 86]},
1114
+ {:LPAREN=>[:state, 141]},
1115
+ {:LPAREN=>[:state, 142]},
1116
+ {:"control.block"=>[:state, 143],
1117
+ :"function.body.expression"=>[:state, 144],
1118
+ :LBRACE=>[:state, 145],
1119
+ :"function.body.assignment"=>[:state, 44],
1120
+ :"function.body.reference"=>[:state, 45],
1121
+ :"function.body.call"=>[:state, 46],
1122
+ :"function.body.math"=>[:state, 47],
1123
+ :"function.body.literal"=>[:state, 48],
1124
+ :"function.body.logic"=>[:state, 49],
1125
+ :LPAREN=>[:state, 50],
1126
+ :CARET=>[:state, 59],
1127
+ :AMBER=>[:state, 60],
1128
+ :IDENTIFIER=>[:state, 43],
1129
+ :DMINUS=>[:state, 61],
1130
+ :DPLUS=>[:state, 62],
1131
+ :PLUS=>[:state, 63],
1132
+ :MINUS=>[:state, 64],
1133
+ :NUMBER=>[:state, 65],
1134
+ :FLOAT=>[:state, 66],
1135
+ :DOUBLE=>[:state, 67],
1136
+ :UNUMBER=>[:state, 68],
1137
+ :SNUMBER=>[:state, 69],
1138
+ :USNUMBER=>[:state, 70],
1139
+ :LNUMBER=>[:state, 71],
1140
+ :ULNUMBER=>[:state, 72],
1141
+ :LLNUMBER=>[:state, 73],
1142
+ :ULLNUMBER=>[:state, 74],
1143
+ :CHARACTER=>[:state, 75],
1144
+ :"function.body.string"=>[:state, 76],
1145
+ :LNOT=>[:state, 77],
1146
+ :BNOT=>[:state, 78],
1147
+ :STRING=>[:state, 86]},
1148
+ {:LPAREN=>[:state, 146]},
1149
+ {:IDENTIFIER=>[:state, 147]},
1150
+ {:IDENTIFIER=>[:state, 148]},
1151
+ {:"function.body.expression"=>[:state, 149],
1152
+ :SEMICOLON=>[:state, 150],
1153
+ :"function.body.assignment"=>[:state, 44],
1154
+ :"function.body.reference"=>[:state, 45],
1155
+ :"function.body.call"=>[:state, 46],
1156
+ :"function.body.math"=>[:state, 47],
1157
+ :"function.body.literal"=>[:state, 48],
1158
+ :"function.body.logic"=>[:state, 49],
1159
+ :LPAREN=>[:state, 50],
1160
+ :CARET=>[:state, 59],
1161
+ :AMBER=>[:state, 60],
1162
+ :IDENTIFIER=>[:state, 43],
1163
+ :DMINUS=>[:state, 61],
1164
+ :DPLUS=>[:state, 62],
1165
+ :PLUS=>[:state, 63],
1166
+ :MINUS=>[:state, 64],
1167
+ :NUMBER=>[:state, 65],
1168
+ :FLOAT=>[:state, 66],
1169
+ :DOUBLE=>[:state, 67],
1170
+ :UNUMBER=>[:state, 68],
1171
+ :SNUMBER=>[:state, 69],
1172
+ :USNUMBER=>[:state, 70],
1173
+ :LNUMBER=>[:state, 71],
1174
+ :ULNUMBER=>[:state, 72],
1175
+ :LLNUMBER=>[:state, 73],
1176
+ :ULLNUMBER=>[:state, 74],
1177
+ :CHARACTER=>[:state, 75],
1178
+ :"function.body.string"=>[:state, 76],
1179
+ :LNOT=>[:state, 77],
1180
+ :BNOT=>[:state, 78],
1181
+ :STRING=>[:state, 86]},
1182
+ {:SEMICOLON=>[:reduce, 101],
1183
+ :LBRACK=>[:reduce, 101],
1184
+ :LPAREN=>[:reduce, 101],
1185
+ :PLUS=>[:reduce, 101],
1186
+ :MINUS=>[:reduce, 101],
1187
+ :STAR=>[:reduce, 101],
1188
+ :DIVIDE=>[:reduce, 101],
1189
+ :MOD=>[:reduce, 101],
1190
+ :LSHIFT=>[:reduce, 101],
1191
+ :RSHIFT=>[:reduce, 101],
1192
+ :DPLUS=>[:reduce, 101],
1193
+ :DMINUS=>[:reduce, 101],
1194
+ :LBRK=>[:reduce, 101],
1195
+ :RBRK=>[:reduce, 101],
1196
+ :COMP=>[:reduce, 101],
1197
+ :NCMP=>[:reduce, 101],
1198
+ :LAND=>[:reduce, 101],
1199
+ :AMBER=>[:reduce, 101],
1200
+ :LOR=>[:reduce, 101],
1201
+ :BOR=>[:reduce, 101],
1202
+ :STRING=>[:reduce, 101],
1203
+ :RPAREN=>[:reduce, 101],
1204
+ :EQUALS=>[:reduce, 101],
1205
+ :WHILE=>[:reduce, 101],
1206
+ :RBRACK=>[:reduce, 101],
1207
+ :COMMA=>[:reduce, 101],
1208
+ :ELSE=>[:reduce, 101]},
1209
+ {:"struct.body"=>[:state, 151],
1210
+ :"struct.parts.maybe"=>[:state, 152],
1211
+ :"struct.parts"=>[:state, 153],
1212
+ :"struct.part"=>[:state, 154],
1213
+ :"class.attribute"=>[:state, 155],
1214
+ :preprocessor=>[:state, 156],
1215
+ :IDENTIFIER=>[:state, 103],
1216
+ :HASH=>[:state, 17],
1217
+ :RBRACE=>[:reduce, 34]},
1218
+ {:"union.body"=>[:state, 157],
1219
+ :"union.parts.maybe"=>[:state, 158],
1220
+ :"union.parts"=>[:state, 159],
1221
+ :"union.part"=>[:state, 160],
1222
+ :"class.attribute"=>[:state, 161],
1223
+ :preprocessor=>[:state, 162],
1224
+ :IDENTIFIER=>[:state, 103],
1225
+ :HASH=>[:state, 17],
1226
+ :RBRACE=>[:reduce, 42]},
1227
+ {:type=>[:state, 163],
1228
+ :"class.name"=>[:state, 10],
1229
+ :struct=>[:state, 11],
1230
+ :union=>[:state, 12],
1231
+ :IDENTIFIER=>[:state, 18],
1232
+ :STRUCT=>[:state, 19],
1233
+ :UNION=>[:state, 20]},
1234
+ {:"function.arguments.maybe"=>[:state, 164],
1235
+ :"function.arguments"=>[:state, 93],
1236
+ :"function.argument"=>[:state, 94],
1237
+ :IDENTIFIER=>[:state, 95],
1238
+ :RPAREN=>[:reduce, 14]},
1239
+ {:LPAREN=>[:state, 165]},
1240
+ {:RPAREN=>[:state, 166]},
1241
+ {:COMMA=>[:state, 167], :RPAREN=>[:reduce, 13]},
1242
+ {:RPAREN=>[:reduce, 16], :COMMA=>[:reduce, 16]},
1243
+ {:COLON=>[:state, 168]},
1244
+ {:RBRACE=>[:state, 169]},
1245
+ {:RBRACE=>[:reduce, 21]},
1246
+ {:"class.part"=>[:state, 170],
1247
+ :"class.attribute"=>[:state, 100],
1248
+ :"class.function"=>[:state, 101],
1249
+ :preprocessor=>[:state, 102],
1250
+ :IDENTIFIER=>[:state, 103],
1251
+ :FUNC=>[:state, 104],
1252
+ :HASH=>[:state, 17],
1253
+ :RBRACE=>[:reduce, 22]},
1254
+ {:RBRACE=>[:reduce, 25],
1255
+ :IDENTIFIER=>[:reduce, 25],
1256
+ :FUNC=>[:reduce, 25],
1257
+ :HASH=>[:reduce, 25]},
1258
+ {:RBRACE=>[:reduce, 26],
1259
+ :IDENTIFIER=>[:reduce, 26],
1260
+ :FUNC=>[:reduce, 26],
1261
+ :HASH=>[:reduce, 26]},
1262
+ {:RBRACE=>[:reduce, 27],
1263
+ :IDENTIFIER=>[:reduce, 27],
1264
+ :FUNC=>[:reduce, 27],
1265
+ :HASH=>[:reduce, 27]},
1266
+ {:RBRACE=>[:reduce, 28],
1267
+ :IDENTIFIER=>[:reduce, 28],
1268
+ :FUNC=>[:reduce, 28],
1269
+ :HASH=>[:reduce, 28]},
1270
+ {:COLON=>[:state, 171]},
1271
+ {:IDENTIFIER=>[:state, 172]},
1272
+ {:$default=>[:reduce, 2]},
1273
+ {:$default=>[:reduce, 54]},
1274
+ {:$default=>[:reduce, 56]},
1275
+ {:$default=>[:reduce, 57]},
1276
+ {:"function.body.expression"=>[:state, 173],
1277
+ :"function.body.assignment"=>[:state, 44],
1278
+ :"function.body.reference"=>[:state, 45],
1279
+ :"function.body.call"=>[:state, 46],
1280
+ :"function.body.math"=>[:state, 47],
1281
+ :"function.body.literal"=>[:state, 48],
1282
+ :"function.body.logic"=>[:state, 49],
1283
+ :LPAREN=>[:state, 50],
1284
+ :CARET=>[:state, 59],
1285
+ :AMBER=>[:state, 60],
1286
+ :IDENTIFIER=>[:state, 43],
1287
+ :DMINUS=>[:state, 61],
1288
+ :DPLUS=>[:state, 62],
1289
+ :PLUS=>[:state, 63],
1290
+ :MINUS=>[:state, 64],
1291
+ :NUMBER=>[:state, 65],
1292
+ :FLOAT=>[:state, 66],
1293
+ :DOUBLE=>[:state, 67],
1294
+ :UNUMBER=>[:state, 68],
1295
+ :SNUMBER=>[:state, 69],
1296
+ :USNUMBER=>[:state, 70],
1297
+ :LNUMBER=>[:state, 71],
1298
+ :ULNUMBER=>[:state, 72],
1299
+ :LLNUMBER=>[:state, 73],
1300
+ :ULLNUMBER=>[:state, 74],
1301
+ :CHARACTER=>[:state, 75],
1302
+ :"function.body.string"=>[:state, 76],
1303
+ :LNOT=>[:state, 77],
1304
+ :BNOT=>[:state, 78],
1305
+ :STRING=>[:state, 86]},
1306
+ {:"function.body.call.arguments.maybe"=>[:state, 174],
1307
+ :"function.body.call.arguments"=>[:state, 175],
1308
+ :"function.body.call.argument"=>[:state, 176],
1309
+ :"function.body.expression"=>[:state, 177],
1310
+ :"function.body.assignment"=>[:state, 44],
1311
+ :"function.body.reference"=>[:state, 45],
1312
+ :"function.body.call"=>[:state, 46],
1313
+ :"function.body.math"=>[:state, 47],
1314
+ :"function.body.literal"=>[:state, 48],
1315
+ :"function.body.logic"=>[:state, 49],
1316
+ :LPAREN=>[:state, 50],
1317
+ :CARET=>[:state, 59],
1318
+ :AMBER=>[:state, 60],
1319
+ :IDENTIFIER=>[:state, 43],
1320
+ :DMINUS=>[:state, 61],
1321
+ :DPLUS=>[:state, 62],
1322
+ :PLUS=>[:state, 63],
1323
+ :MINUS=>[:state, 64],
1324
+ :NUMBER=>[:state, 65],
1325
+ :FLOAT=>[:state, 66],
1326
+ :DOUBLE=>[:state, 67],
1327
+ :UNUMBER=>[:state, 68],
1328
+ :SNUMBER=>[:state, 69],
1329
+ :USNUMBER=>[:state, 70],
1330
+ :LNUMBER=>[:state, 71],
1331
+ :ULNUMBER=>[:state, 72],
1332
+ :LLNUMBER=>[:state, 73],
1333
+ :ULLNUMBER=>[:state, 74],
1334
+ :CHARACTER=>[:state, 75],
1335
+ :"function.body.string"=>[:state, 76],
1336
+ :LNOT=>[:state, 77],
1337
+ :BNOT=>[:state, 78],
1338
+ :STRING=>[:state, 86],
1339
+ :RPAREN=>[:reduce, 115]},
1340
+ {:"function.body.expression"=>[:state, 178],
1341
+ :"function.body.assignment"=>[:state, 44],
1342
+ :"function.body.reference"=>[:state, 45],
1343
+ :"function.body.call"=>[:state, 46],
1344
+ :"function.body.math"=>[:state, 47],
1345
+ :"function.body.literal"=>[:state, 48],
1346
+ :"function.body.logic"=>[:state, 49],
1347
+ :LPAREN=>[:state, 50],
1348
+ :CARET=>[:state, 59],
1349
+ :AMBER=>[:state, 60],
1350
+ :IDENTIFIER=>[:state, 43],
1351
+ :DMINUS=>[:state, 61],
1352
+ :DPLUS=>[:state, 62],
1353
+ :PLUS=>[:state, 63],
1354
+ :MINUS=>[:state, 64],
1355
+ :NUMBER=>[:state, 65],
1356
+ :FLOAT=>[:state, 66],
1357
+ :DOUBLE=>[:state, 67],
1358
+ :UNUMBER=>[:state, 68],
1359
+ :SNUMBER=>[:state, 69],
1360
+ :USNUMBER=>[:state, 70],
1361
+ :LNUMBER=>[:state, 71],
1362
+ :ULNUMBER=>[:state, 72],
1363
+ :LLNUMBER=>[:state, 73],
1364
+ :ULLNUMBER=>[:state, 74],
1365
+ :CHARACTER=>[:state, 75],
1366
+ :"function.body.string"=>[:state, 76],
1367
+ :LNOT=>[:state, 77],
1368
+ :BNOT=>[:state, 78],
1369
+ :STRING=>[:state, 86]},
1370
+ {:"function.body.expression"=>[:state, 179],
1371
+ :"function.body.assignment"=>[:state, 44],
1372
+ :"function.body.reference"=>[:state, 45],
1373
+ :"function.body.call"=>[:state, 46],
1374
+ :"function.body.math"=>[:state, 47],
1375
+ :"function.body.literal"=>[:state, 48],
1376
+ :"function.body.logic"=>[:state, 49],
1377
+ :LPAREN=>[:state, 50],
1378
+ :CARET=>[:state, 59],
1379
+ :AMBER=>[:state, 60],
1380
+ :IDENTIFIER=>[:state, 43],
1381
+ :DMINUS=>[:state, 61],
1382
+ :DPLUS=>[:state, 62],
1383
+ :PLUS=>[:state, 63],
1384
+ :MINUS=>[:state, 64],
1385
+ :NUMBER=>[:state, 65],
1386
+ :FLOAT=>[:state, 66],
1387
+ :DOUBLE=>[:state, 67],
1388
+ :UNUMBER=>[:state, 68],
1389
+ :SNUMBER=>[:state, 69],
1390
+ :USNUMBER=>[:state, 70],
1391
+ :LNUMBER=>[:state, 71],
1392
+ :ULNUMBER=>[:state, 72],
1393
+ :LLNUMBER=>[:state, 73],
1394
+ :ULLNUMBER=>[:state, 74],
1395
+ :CHARACTER=>[:state, 75],
1396
+ :"function.body.string"=>[:state, 76],
1397
+ :LNOT=>[:state, 77],
1398
+ :BNOT=>[:state, 78],
1399
+ :STRING=>[:state, 86]},
1400
+ {:"function.body.expression"=>[:state, 180],
1401
+ :"function.body.assignment"=>[:state, 44],
1402
+ :"function.body.reference"=>[:state, 45],
1403
+ :"function.body.call"=>[:state, 46],
1404
+ :"function.body.math"=>[:state, 47],
1405
+ :"function.body.literal"=>[:state, 48],
1406
+ :"function.body.logic"=>[:state, 49],
1407
+ :LPAREN=>[:state, 50],
1408
+ :CARET=>[:state, 59],
1409
+ :AMBER=>[:state, 60],
1410
+ :IDENTIFIER=>[:state, 43],
1411
+ :DMINUS=>[:state, 61],
1412
+ :DPLUS=>[:state, 62],
1413
+ :PLUS=>[:state, 63],
1414
+ :MINUS=>[:state, 64],
1415
+ :NUMBER=>[:state, 65],
1416
+ :FLOAT=>[:state, 66],
1417
+ :DOUBLE=>[:state, 67],
1418
+ :UNUMBER=>[:state, 68],
1419
+ :SNUMBER=>[:state, 69],
1420
+ :USNUMBER=>[:state, 70],
1421
+ :LNUMBER=>[:state, 71],
1422
+ :ULNUMBER=>[:state, 72],
1423
+ :LLNUMBER=>[:state, 73],
1424
+ :ULLNUMBER=>[:state, 74],
1425
+ :CHARACTER=>[:state, 75],
1426
+ :"function.body.string"=>[:state, 76],
1427
+ :LNOT=>[:state, 77],
1428
+ :BNOT=>[:state, 78],
1429
+ :STRING=>[:state, 86]},
1430
+ {:"function.body.expression"=>[:state, 181],
1431
+ :"function.body.assignment"=>[:state, 44],
1432
+ :"function.body.reference"=>[:state, 45],
1433
+ :"function.body.call"=>[:state, 46],
1434
+ :"function.body.math"=>[:state, 47],
1435
+ :"function.body.literal"=>[:state, 48],
1436
+ :"function.body.logic"=>[:state, 49],
1437
+ :LPAREN=>[:state, 50],
1438
+ :CARET=>[:state, 59],
1439
+ :AMBER=>[:state, 60],
1440
+ :IDENTIFIER=>[:state, 43],
1441
+ :DMINUS=>[:state, 61],
1442
+ :DPLUS=>[:state, 62],
1443
+ :PLUS=>[:state, 63],
1444
+ :MINUS=>[:state, 64],
1445
+ :NUMBER=>[:state, 65],
1446
+ :FLOAT=>[:state, 66],
1447
+ :DOUBLE=>[:state, 67],
1448
+ :UNUMBER=>[:state, 68],
1449
+ :SNUMBER=>[:state, 69],
1450
+ :USNUMBER=>[:state, 70],
1451
+ :LNUMBER=>[:state, 71],
1452
+ :ULNUMBER=>[:state, 72],
1453
+ :LLNUMBER=>[:state, 73],
1454
+ :ULLNUMBER=>[:state, 74],
1455
+ :CHARACTER=>[:state, 75],
1456
+ :"function.body.string"=>[:state, 76],
1457
+ :LNOT=>[:state, 77],
1458
+ :BNOT=>[:state, 78],
1459
+ :STRING=>[:state, 86]},
1460
+ {:"function.body.expression"=>[:state, 182],
1461
+ :"function.body.assignment"=>[:state, 44],
1462
+ :"function.body.reference"=>[:state, 45],
1463
+ :"function.body.call"=>[:state, 46],
1464
+ :"function.body.math"=>[:state, 47],
1465
+ :"function.body.literal"=>[:state, 48],
1466
+ :"function.body.logic"=>[:state, 49],
1467
+ :LPAREN=>[:state, 50],
1468
+ :CARET=>[:state, 59],
1469
+ :AMBER=>[:state, 60],
1470
+ :IDENTIFIER=>[:state, 43],
1471
+ :DMINUS=>[:state, 61],
1472
+ :DPLUS=>[:state, 62],
1473
+ :PLUS=>[:state, 63],
1474
+ :MINUS=>[:state, 64],
1475
+ :NUMBER=>[:state, 65],
1476
+ :FLOAT=>[:state, 66],
1477
+ :DOUBLE=>[:state, 67],
1478
+ :UNUMBER=>[:state, 68],
1479
+ :SNUMBER=>[:state, 69],
1480
+ :USNUMBER=>[:state, 70],
1481
+ :LNUMBER=>[:state, 71],
1482
+ :ULNUMBER=>[:state, 72],
1483
+ :LLNUMBER=>[:state, 73],
1484
+ :ULLNUMBER=>[:state, 74],
1485
+ :CHARACTER=>[:state, 75],
1486
+ :"function.body.string"=>[:state, 76],
1487
+ :LNOT=>[:state, 77],
1488
+ :BNOT=>[:state, 78],
1489
+ :STRING=>[:state, 86]},
1490
+ {:"function.body.expression"=>[:state, 183],
1491
+ :"function.body.assignment"=>[:state, 44],
1492
+ :"function.body.reference"=>[:state, 45],
1493
+ :"function.body.call"=>[:state, 46],
1494
+ :"function.body.math"=>[:state, 47],
1495
+ :"function.body.literal"=>[:state, 48],
1496
+ :"function.body.logic"=>[:state, 49],
1497
+ :LPAREN=>[:state, 50],
1498
+ :CARET=>[:state, 59],
1499
+ :AMBER=>[:state, 60],
1500
+ :IDENTIFIER=>[:state, 43],
1501
+ :DMINUS=>[:state, 61],
1502
+ :DPLUS=>[:state, 62],
1503
+ :PLUS=>[:state, 63],
1504
+ :MINUS=>[:state, 64],
1505
+ :NUMBER=>[:state, 65],
1506
+ :FLOAT=>[:state, 66],
1507
+ :DOUBLE=>[:state, 67],
1508
+ :UNUMBER=>[:state, 68],
1509
+ :SNUMBER=>[:state, 69],
1510
+ :USNUMBER=>[:state, 70],
1511
+ :LNUMBER=>[:state, 71],
1512
+ :ULNUMBER=>[:state, 72],
1513
+ :LLNUMBER=>[:state, 73],
1514
+ :ULLNUMBER=>[:state, 74],
1515
+ :CHARACTER=>[:state, 75],
1516
+ :"function.body.string"=>[:state, 76],
1517
+ :LNOT=>[:state, 77],
1518
+ :BNOT=>[:state, 78],
1519
+ :STRING=>[:state, 86]},
1520
+ {:"function.body.expression"=>[:state, 184],
1521
+ :"function.body.assignment"=>[:state, 44],
1522
+ :"function.body.reference"=>[:state, 45],
1523
+ :"function.body.call"=>[:state, 46],
1524
+ :"function.body.math"=>[:state, 47],
1525
+ :"function.body.literal"=>[:state, 48],
1526
+ :"function.body.logic"=>[:state, 49],
1527
+ :LPAREN=>[:state, 50],
1528
+ :CARET=>[:state, 59],
1529
+ :AMBER=>[:state, 60],
1530
+ :IDENTIFIER=>[:state, 43],
1531
+ :DMINUS=>[:state, 61],
1532
+ :DPLUS=>[:state, 62],
1533
+ :PLUS=>[:state, 63],
1534
+ :MINUS=>[:state, 64],
1535
+ :NUMBER=>[:state, 65],
1536
+ :FLOAT=>[:state, 66],
1537
+ :DOUBLE=>[:state, 67],
1538
+ :UNUMBER=>[:state, 68],
1539
+ :SNUMBER=>[:state, 69],
1540
+ :USNUMBER=>[:state, 70],
1541
+ :LNUMBER=>[:state, 71],
1542
+ :ULNUMBER=>[:state, 72],
1543
+ :LLNUMBER=>[:state, 73],
1544
+ :ULLNUMBER=>[:state, 74],
1545
+ :CHARACTER=>[:state, 75],
1546
+ :"function.body.string"=>[:state, 76],
1547
+ :LNOT=>[:state, 77],
1548
+ :BNOT=>[:state, 78],
1549
+ :STRING=>[:state, 86]},
1550
+ {:SEMICOLON=>[:reduce, 82],
1551
+ :LBRACK=>[:reduce, 82],
1552
+ :LPAREN=>[:reduce, 82],
1553
+ :PLUS=>[:reduce, 82],
1554
+ :MINUS=>[:reduce, 82],
1555
+ :STAR=>[:reduce, 82],
1556
+ :DIVIDE=>[:reduce, 82],
1557
+ :MOD=>[:reduce, 82],
1558
+ :LSHIFT=>[:reduce, 82],
1559
+ :RSHIFT=>[:reduce, 82],
1560
+ :DPLUS=>[:reduce, 82],
1561
+ :DMINUS=>[:reduce, 82],
1562
+ :LBRK=>[:reduce, 82],
1563
+ :RBRK=>[:reduce, 82],
1564
+ :COMP=>[:reduce, 82],
1565
+ :NCMP=>[:reduce, 82],
1566
+ :LAND=>[:reduce, 82],
1567
+ :AMBER=>[:reduce, 82],
1568
+ :LOR=>[:reduce, 82],
1569
+ :BOR=>[:reduce, 82],
1570
+ :RPAREN=>[:reduce, 82],
1571
+ :WHILE=>[:reduce, 82],
1572
+ :RBRACK=>[:reduce, 82],
1573
+ :COMMA=>[:reduce, 82],
1574
+ :ELSE=>[:reduce, 82]},
1575
+ {:SEMICOLON=>[:reduce, 83],
1576
+ :LBRACK=>[:reduce, 83],
1577
+ :LPAREN=>[:reduce, 83],
1578
+ :PLUS=>[:reduce, 83],
1579
+ :MINUS=>[:reduce, 83],
1580
+ :STAR=>[:reduce, 83],
1581
+ :DIVIDE=>[:reduce, 83],
1582
+ :MOD=>[:reduce, 83],
1583
+ :LSHIFT=>[:reduce, 83],
1584
+ :RSHIFT=>[:reduce, 83],
1585
+ :DPLUS=>[:reduce, 83],
1586
+ :DMINUS=>[:reduce, 83],
1587
+ :LBRK=>[:reduce, 83],
1588
+ :RBRK=>[:reduce, 83],
1589
+ :COMP=>[:reduce, 83],
1590
+ :NCMP=>[:reduce, 83],
1591
+ :LAND=>[:reduce, 83],
1592
+ :AMBER=>[:reduce, 83],
1593
+ :LOR=>[:reduce, 83],
1594
+ :BOR=>[:reduce, 83],
1595
+ :RPAREN=>[:reduce, 83],
1596
+ :WHILE=>[:reduce, 83],
1597
+ :RBRACK=>[:reduce, 83],
1598
+ :COMMA=>[:reduce, 83],
1599
+ :ELSE=>[:reduce, 83]},
1600
+ {:"function.body.expression"=>[:state, 185],
1601
+ :EQUALS=>[:state, 186],
1602
+ :"function.body.assignment"=>[:state, 44],
1603
+ :"function.body.reference"=>[:state, 45],
1604
+ :"function.body.call"=>[:state, 46],
1605
+ :"function.body.math"=>[:state, 47],
1606
+ :"function.body.literal"=>[:state, 48],
1607
+ :"function.body.logic"=>[:state, 49],
1608
+ :LPAREN=>[:state, 50],
1609
+ :CARET=>[:state, 59],
1610
+ :AMBER=>[:state, 60],
1611
+ :IDENTIFIER=>[:state, 43],
1612
+ :DMINUS=>[:state, 61],
1613
+ :DPLUS=>[:state, 62],
1614
+ :PLUS=>[:state, 63],
1615
+ :MINUS=>[:state, 64],
1616
+ :NUMBER=>[:state, 65],
1617
+ :FLOAT=>[:state, 66],
1618
+ :DOUBLE=>[:state, 67],
1619
+ :UNUMBER=>[:state, 68],
1620
+ :SNUMBER=>[:state, 69],
1621
+ :USNUMBER=>[:state, 70],
1622
+ :LNUMBER=>[:state, 71],
1623
+ :ULNUMBER=>[:state, 72],
1624
+ :LLNUMBER=>[:state, 73],
1625
+ :ULLNUMBER=>[:state, 74],
1626
+ :CHARACTER=>[:state, 75],
1627
+ :"function.body.string"=>[:state, 76],
1628
+ :LNOT=>[:state, 77],
1629
+ :BNOT=>[:state, 78],
1630
+ :STRING=>[:state, 86]},
1631
+ {:"function.body.expression"=>[:state, 187],
1632
+ :EQUALS=>[:state, 188],
1633
+ :"function.body.assignment"=>[:state, 44],
1634
+ :"function.body.reference"=>[:state, 45],
1635
+ :"function.body.call"=>[:state, 46],
1636
+ :"function.body.math"=>[:state, 47],
1637
+ :"function.body.literal"=>[:state, 48],
1638
+ :"function.body.logic"=>[:state, 49],
1639
+ :LPAREN=>[:state, 50],
1640
+ :CARET=>[:state, 59],
1641
+ :AMBER=>[:state, 60],
1642
+ :IDENTIFIER=>[:state, 43],
1643
+ :DMINUS=>[:state, 61],
1644
+ :DPLUS=>[:state, 62],
1645
+ :PLUS=>[:state, 63],
1646
+ :MINUS=>[:state, 64],
1647
+ :NUMBER=>[:state, 65],
1648
+ :FLOAT=>[:state, 66],
1649
+ :DOUBLE=>[:state, 67],
1650
+ :UNUMBER=>[:state, 68],
1651
+ :SNUMBER=>[:state, 69],
1652
+ :USNUMBER=>[:state, 70],
1653
+ :LNUMBER=>[:state, 71],
1654
+ :ULNUMBER=>[:state, 72],
1655
+ :LLNUMBER=>[:state, 73],
1656
+ :ULLNUMBER=>[:state, 74],
1657
+ :CHARACTER=>[:state, 75],
1658
+ :"function.body.string"=>[:state, 76],
1659
+ :LNOT=>[:state, 77],
1660
+ :BNOT=>[:state, 78],
1661
+ :STRING=>[:state, 86]},
1662
+ {:"function.body.expression"=>[:state, 189],
1663
+ :"function.body.assignment"=>[:state, 44],
1664
+ :"function.body.reference"=>[:state, 45],
1665
+ :"function.body.call"=>[:state, 46],
1666
+ :"function.body.math"=>[:state, 47],
1667
+ :"function.body.literal"=>[:state, 48],
1668
+ :"function.body.logic"=>[:state, 49],
1669
+ :LPAREN=>[:state, 50],
1670
+ :CARET=>[:state, 59],
1671
+ :AMBER=>[:state, 60],
1672
+ :IDENTIFIER=>[:state, 43],
1673
+ :DMINUS=>[:state, 61],
1674
+ :DPLUS=>[:state, 62],
1675
+ :PLUS=>[:state, 63],
1676
+ :MINUS=>[:state, 64],
1677
+ :NUMBER=>[:state, 65],
1678
+ :FLOAT=>[:state, 66],
1679
+ :DOUBLE=>[:state, 67],
1680
+ :UNUMBER=>[:state, 68],
1681
+ :SNUMBER=>[:state, 69],
1682
+ :USNUMBER=>[:state, 70],
1683
+ :LNUMBER=>[:state, 71],
1684
+ :ULNUMBER=>[:state, 72],
1685
+ :LLNUMBER=>[:state, 73],
1686
+ :ULLNUMBER=>[:state, 74],
1687
+ :CHARACTER=>[:state, 75],
1688
+ :"function.body.string"=>[:state, 76],
1689
+ :LNOT=>[:state, 77],
1690
+ :BNOT=>[:state, 78],
1691
+ :STRING=>[:state, 86]},
1692
+ {:"function.body.expression"=>[:state, 190],
1693
+ :"function.body.assignment"=>[:state, 44],
1694
+ :"function.body.reference"=>[:state, 45],
1695
+ :"function.body.call"=>[:state, 46],
1696
+ :"function.body.math"=>[:state, 47],
1697
+ :"function.body.literal"=>[:state, 48],
1698
+ :"function.body.logic"=>[:state, 49],
1699
+ :LPAREN=>[:state, 50],
1700
+ :CARET=>[:state, 59],
1701
+ :AMBER=>[:state, 60],
1702
+ :IDENTIFIER=>[:state, 43],
1703
+ :DMINUS=>[:state, 61],
1704
+ :DPLUS=>[:state, 62],
1705
+ :PLUS=>[:state, 63],
1706
+ :MINUS=>[:state, 64],
1707
+ :NUMBER=>[:state, 65],
1708
+ :FLOAT=>[:state, 66],
1709
+ :DOUBLE=>[:state, 67],
1710
+ :UNUMBER=>[:state, 68],
1711
+ :SNUMBER=>[:state, 69],
1712
+ :USNUMBER=>[:state, 70],
1713
+ :LNUMBER=>[:state, 71],
1714
+ :ULNUMBER=>[:state, 72],
1715
+ :LLNUMBER=>[:state, 73],
1716
+ :ULLNUMBER=>[:state, 74],
1717
+ :CHARACTER=>[:state, 75],
1718
+ :"function.body.string"=>[:state, 76],
1719
+ :LNOT=>[:state, 77],
1720
+ :BNOT=>[:state, 78],
1721
+ :STRING=>[:state, 86]},
1722
+ {:"function.body.expression"=>[:state, 191],
1723
+ :"function.body.assignment"=>[:state, 44],
1724
+ :"function.body.reference"=>[:state, 45],
1725
+ :"function.body.call"=>[:state, 46],
1726
+ :"function.body.math"=>[:state, 47],
1727
+ :"function.body.literal"=>[:state, 48],
1728
+ :"function.body.logic"=>[:state, 49],
1729
+ :LPAREN=>[:state, 50],
1730
+ :CARET=>[:state, 59],
1731
+ :AMBER=>[:state, 60],
1732
+ :IDENTIFIER=>[:state, 43],
1733
+ :DMINUS=>[:state, 61],
1734
+ :DPLUS=>[:state, 62],
1735
+ :PLUS=>[:state, 63],
1736
+ :MINUS=>[:state, 64],
1737
+ :NUMBER=>[:state, 65],
1738
+ :FLOAT=>[:state, 66],
1739
+ :DOUBLE=>[:state, 67],
1740
+ :UNUMBER=>[:state, 68],
1741
+ :SNUMBER=>[:state, 69],
1742
+ :USNUMBER=>[:state, 70],
1743
+ :LNUMBER=>[:state, 71],
1744
+ :ULNUMBER=>[:state, 72],
1745
+ :LLNUMBER=>[:state, 73],
1746
+ :ULLNUMBER=>[:state, 74],
1747
+ :CHARACTER=>[:state, 75],
1748
+ :"function.body.string"=>[:state, 76],
1749
+ :LNOT=>[:state, 77],
1750
+ :BNOT=>[:state, 78],
1751
+ :STRING=>[:state, 86]},
1752
+ {:"function.body.expression"=>[:state, 192],
1753
+ :"function.body.assignment"=>[:state, 44],
1754
+ :"function.body.reference"=>[:state, 45],
1755
+ :"function.body.call"=>[:state, 46],
1756
+ :"function.body.math"=>[:state, 47],
1757
+ :"function.body.literal"=>[:state, 48],
1758
+ :"function.body.logic"=>[:state, 49],
1759
+ :LPAREN=>[:state, 50],
1760
+ :CARET=>[:state, 59],
1761
+ :AMBER=>[:state, 60],
1762
+ :IDENTIFIER=>[:state, 43],
1763
+ :DMINUS=>[:state, 61],
1764
+ :DPLUS=>[:state, 62],
1765
+ :PLUS=>[:state, 63],
1766
+ :MINUS=>[:state, 64],
1767
+ :NUMBER=>[:state, 65],
1768
+ :FLOAT=>[:state, 66],
1769
+ :DOUBLE=>[:state, 67],
1770
+ :UNUMBER=>[:state, 68],
1771
+ :SNUMBER=>[:state, 69],
1772
+ :USNUMBER=>[:state, 70],
1773
+ :LNUMBER=>[:state, 71],
1774
+ :ULNUMBER=>[:state, 72],
1775
+ :LLNUMBER=>[:state, 73],
1776
+ :ULLNUMBER=>[:state, 74],
1777
+ :CHARACTER=>[:state, 75],
1778
+ :"function.body.string"=>[:state, 76],
1779
+ :LNOT=>[:state, 77],
1780
+ :BNOT=>[:state, 78],
1781
+ :STRING=>[:state, 86]},
1782
+ {:"function.body.expression"=>[:state, 193],
1783
+ :"function.body.assignment"=>[:state, 44],
1784
+ :"function.body.reference"=>[:state, 45],
1785
+ :"function.body.call"=>[:state, 46],
1786
+ :"function.body.math"=>[:state, 47],
1787
+ :"function.body.literal"=>[:state, 48],
1788
+ :"function.body.logic"=>[:state, 49],
1789
+ :LPAREN=>[:state, 50],
1790
+ :CARET=>[:state, 59],
1791
+ :AMBER=>[:state, 60],
1792
+ :IDENTIFIER=>[:state, 43],
1793
+ :DMINUS=>[:state, 61],
1794
+ :DPLUS=>[:state, 62],
1795
+ :PLUS=>[:state, 63],
1796
+ :MINUS=>[:state, 64],
1797
+ :NUMBER=>[:state, 65],
1798
+ :FLOAT=>[:state, 66],
1799
+ :DOUBLE=>[:state, 67],
1800
+ :UNUMBER=>[:state, 68],
1801
+ :SNUMBER=>[:state, 69],
1802
+ :USNUMBER=>[:state, 70],
1803
+ :LNUMBER=>[:state, 71],
1804
+ :ULNUMBER=>[:state, 72],
1805
+ :LLNUMBER=>[:state, 73],
1806
+ :ULLNUMBER=>[:state, 74],
1807
+ :CHARACTER=>[:state, 75],
1808
+ :"function.body.string"=>[:state, 76],
1809
+ :LNOT=>[:state, 77],
1810
+ :BNOT=>[:state, 78],
1811
+ :STRING=>[:state, 86]},
1812
+ {:"function.body.expression"=>[:state, 194],
1813
+ :"function.body.assignment"=>[:state, 44],
1814
+ :"function.body.reference"=>[:state, 45],
1815
+ :"function.body.call"=>[:state, 46],
1816
+ :"function.body.math"=>[:state, 47],
1817
+ :"function.body.literal"=>[:state, 48],
1818
+ :"function.body.logic"=>[:state, 49],
1819
+ :LPAREN=>[:state, 50],
1820
+ :CARET=>[:state, 59],
1821
+ :AMBER=>[:state, 60],
1822
+ :IDENTIFIER=>[:state, 43],
1823
+ :DMINUS=>[:state, 61],
1824
+ :DPLUS=>[:state, 62],
1825
+ :PLUS=>[:state, 63],
1826
+ :MINUS=>[:state, 64],
1827
+ :NUMBER=>[:state, 65],
1828
+ :FLOAT=>[:state, 66],
1829
+ :DOUBLE=>[:state, 67],
1830
+ :UNUMBER=>[:state, 68],
1831
+ :SNUMBER=>[:state, 69],
1832
+ :USNUMBER=>[:state, 70],
1833
+ :LNUMBER=>[:state, 71],
1834
+ :ULNUMBER=>[:state, 72],
1835
+ :LLNUMBER=>[:state, 73],
1836
+ :ULLNUMBER=>[:state, 74],
1837
+ :CHARACTER=>[:state, 75],
1838
+ :"function.body.string"=>[:state, 76],
1839
+ :LNOT=>[:state, 77],
1840
+ :BNOT=>[:state, 78],
1841
+ :STRING=>[:state, 86]},
1842
+ {:$default=>[:reduce, 58]},
1843
+ {:type=>[:state, 195],
1844
+ :"class.name"=>[:state, 10],
1845
+ :struct=>[:state, 11],
1846
+ :union=>[:state, 12],
1847
+ :IDENTIFIER=>[:state, 18],
1848
+ :STRUCT=>[:state, 19],
1849
+ :UNION=>[:state, 20]},
1850
+ {:"function.body.expression"=>[:state, 196],
1851
+ :"function.body.assignment"=>[:state, 44],
1852
+ :"function.body.reference"=>[:state, 45],
1853
+ :"function.body.call"=>[:state, 46],
1854
+ :"function.body.math"=>[:state, 47],
1855
+ :"function.body.literal"=>[:state, 48],
1856
+ :"function.body.logic"=>[:state, 49],
1857
+ :LPAREN=>[:state, 50],
1858
+ :CARET=>[:state, 59],
1859
+ :AMBER=>[:state, 60],
1860
+ :IDENTIFIER=>[:state, 43],
1861
+ :DMINUS=>[:state, 61],
1862
+ :DPLUS=>[:state, 62],
1863
+ :PLUS=>[:state, 63],
1864
+ :MINUS=>[:state, 64],
1865
+ :NUMBER=>[:state, 65],
1866
+ :FLOAT=>[:state, 66],
1867
+ :DOUBLE=>[:state, 67],
1868
+ :UNUMBER=>[:state, 68],
1869
+ :SNUMBER=>[:state, 69],
1870
+ :USNUMBER=>[:state, 70],
1871
+ :LNUMBER=>[:state, 71],
1872
+ :ULNUMBER=>[:state, 72],
1873
+ :LLNUMBER=>[:state, 73],
1874
+ :ULLNUMBER=>[:state, 74],
1875
+ :CHARACTER=>[:state, 75],
1876
+ :"function.body.string"=>[:state, 76],
1877
+ :LNOT=>[:state, 77],
1878
+ :BNOT=>[:state, 78],
1879
+ :STRING=>[:state, 86]},
1880
+ {:RPAREN=>[:state, 197],
1881
+ :LBRACK=>[:state, 109],
1882
+ :LPAREN=>[:state, 110],
1883
+ :PLUS=>[:state, 111],
1884
+ :MINUS=>[:state, 112],
1885
+ :STAR=>[:state, 113],
1886
+ :DIVIDE=>[:state, 114],
1887
+ :MOD=>[:state, 115],
1888
+ :LSHIFT=>[:state, 116],
1889
+ :RSHIFT=>[:state, 117],
1890
+ :DPLUS=>[:state, 118],
1891
+ :DMINUS=>[:state, 119],
1892
+ :LBRK=>[:state, 120],
1893
+ :RBRK=>[:state, 121],
1894
+ :COMP=>[:state, 122],
1895
+ :NCMP=>[:state, 123],
1896
+ :LAND=>[:state, 124],
1897
+ :AMBER=>[:state, 125],
1898
+ :LOR=>[:state, 126],
1899
+ :BOR=>[:state, 127]},
1900
+ {:LBRACK=>[:state, 109],
1901
+ :LPAREN=>[:state, 110],
1902
+ :PLUS=>[:state, 111],
1903
+ :MINUS=>[:state, 112],
1904
+ :STAR=>[:state, 113],
1905
+ :DIVIDE=>[:state, 114],
1906
+ :MOD=>[:state, 115],
1907
+ :LSHIFT=>[:state, 116],
1908
+ :RSHIFT=>[:state, 117],
1909
+ :DPLUS=>[:state, 118],
1910
+ :DMINUS=>[:state, 119],
1911
+ :LBRK=>[:state, 120],
1912
+ :RBRK=>[:state, 121],
1913
+ :COMP=>[:state, 122],
1914
+ :NCMP=>[:state, 123],
1915
+ :LAND=>[:state, 124],
1916
+ :AMBER=>[:state, 125],
1917
+ :LOR=>[:state, 126],
1918
+ :BOR=>[:state, 127],
1919
+ :SEMICOLON=>[:reduce, 70],
1920
+ :EQUALS=>[:reduce, 70],
1921
+ :RPAREN=>[:reduce, 70],
1922
+ :WHILE=>[:reduce, 70],
1923
+ :RBRACK=>[:reduce, 70],
1924
+ :COMMA=>[:reduce, 70],
1925
+ :ELSE=>[:reduce, 70]},
1926
+ {:LBRACK=>[:state, 109],
1927
+ :LPAREN=>[:state, 110],
1928
+ :PLUS=>[:reduce, 71],
1929
+ :MINUS=>[:reduce, 71],
1930
+ :STAR=>[:reduce, 71],
1931
+ :DIVIDE=>[:reduce, 71],
1932
+ :MOD=>[:reduce, 71],
1933
+ :LSHIFT=>[:reduce, 71],
1934
+ :RSHIFT=>[:reduce, 71],
1935
+ :DPLUS=>[:state, 118],
1936
+ :DMINUS=>[:state, 119],
1937
+ :LBRK=>[:reduce, 71],
1938
+ :RBRK=>[:reduce, 71],
1939
+ :COMP=>[:reduce, 71],
1940
+ :NCMP=>[:reduce, 71],
1941
+ :LAND=>[:reduce, 71],
1942
+ :AMBER=>[:reduce, 71],
1943
+ :LOR=>[:reduce, 71],
1944
+ :BOR=>[:reduce, 71],
1945
+ :SEMICOLON=>[:reduce, 71],
1946
+ :EQUALS=>[:reduce, 71],
1947
+ :RPAREN=>[:reduce, 71],
1948
+ :WHILE=>[:reduce, 71],
1949
+ :RBRACK=>[:reduce, 71],
1950
+ :COMMA=>[:reduce, 71],
1951
+ :ELSE=>[:reduce, 71]},
1952
+ {:LBRACK=>[:state, 109],
1953
+ :LPAREN=>[:state, 110],
1954
+ :PLUS=>[:reduce, 84],
1955
+ :MINUS=>[:reduce, 84],
1956
+ :STAR=>[:reduce, 84],
1957
+ :DIVIDE=>[:reduce, 84],
1958
+ :MOD=>[:reduce, 84],
1959
+ :LSHIFT=>[:reduce, 84],
1960
+ :RSHIFT=>[:reduce, 84],
1961
+ :DPLUS=>[:state, 118],
1962
+ :DMINUS=>[:state, 119],
1963
+ :LBRK=>[:reduce, 84],
1964
+ :RBRK=>[:reduce, 84],
1965
+ :COMP=>[:reduce, 84],
1966
+ :NCMP=>[:reduce, 84],
1967
+ :LAND=>[:reduce, 84],
1968
+ :AMBER=>[:reduce, 84],
1969
+ :LOR=>[:reduce, 84],
1970
+ :BOR=>[:reduce, 84],
1971
+ :SEMICOLON=>[:reduce, 84],
1972
+ :RPAREN=>[:reduce, 84],
1973
+ :WHILE=>[:reduce, 84],
1974
+ :RBRACK=>[:reduce, 84],
1975
+ :COMMA=>[:reduce, 84],
1976
+ :ELSE=>[:reduce, 84]},
1977
+ {:LBRACK=>[:state, 109],
1978
+ :LPAREN=>[:state, 110],
1979
+ :PLUS=>[:reduce, 85],
1980
+ :MINUS=>[:reduce, 85],
1981
+ :STAR=>[:reduce, 85],
1982
+ :DIVIDE=>[:reduce, 85],
1983
+ :MOD=>[:reduce, 85],
1984
+ :LSHIFT=>[:reduce, 85],
1985
+ :RSHIFT=>[:reduce, 85],
1986
+ :DPLUS=>[:state, 118],
1987
+ :DMINUS=>[:state, 119],
1988
+ :LBRK=>[:reduce, 85],
1989
+ :RBRK=>[:reduce, 85],
1990
+ :COMP=>[:reduce, 85],
1991
+ :NCMP=>[:reduce, 85],
1992
+ :LAND=>[:reduce, 85],
1993
+ :AMBER=>[:reduce, 85],
1994
+ :LOR=>[:reduce, 85],
1995
+ :BOR=>[:reduce, 85],
1996
+ :SEMICOLON=>[:reduce, 85],
1997
+ :RPAREN=>[:reduce, 85],
1998
+ :WHILE=>[:reduce, 85],
1999
+ :RBRACK=>[:reduce, 85],
2000
+ :COMMA=>[:reduce, 85],
2001
+ :ELSE=>[:reduce, 85]},
2002
+ {:LBRACK=>[:state, 109],
2003
+ :LPAREN=>[:state, 110],
2004
+ :PLUS=>[:reduce, 86],
2005
+ :MINUS=>[:reduce, 86],
2006
+ :STAR=>[:reduce, 86],
2007
+ :DIVIDE=>[:reduce, 86],
2008
+ :MOD=>[:reduce, 86],
2009
+ :LSHIFT=>[:reduce, 86],
2010
+ :RSHIFT=>[:reduce, 86],
2011
+ :DPLUS=>[:state, 118],
2012
+ :DMINUS=>[:state, 119],
2013
+ :LBRK=>[:reduce, 86],
2014
+ :RBRK=>[:reduce, 86],
2015
+ :COMP=>[:reduce, 86],
2016
+ :NCMP=>[:reduce, 86],
2017
+ :LAND=>[:reduce, 86],
2018
+ :AMBER=>[:reduce, 86],
2019
+ :LOR=>[:reduce, 86],
2020
+ :BOR=>[:reduce, 86],
2021
+ :SEMICOLON=>[:reduce, 86],
2022
+ :RPAREN=>[:reduce, 86],
2023
+ :WHILE=>[:reduce, 86],
2024
+ :RBRACK=>[:reduce, 86],
2025
+ :COMMA=>[:reduce, 86],
2026
+ :ELSE=>[:reduce, 86]},
2027
+ {:LBRACK=>[:state, 109],
2028
+ :LPAREN=>[:state, 110],
2029
+ :PLUS=>[:reduce, 87],
2030
+ :MINUS=>[:reduce, 87],
2031
+ :STAR=>[:reduce, 87],
2032
+ :DIVIDE=>[:reduce, 87],
2033
+ :MOD=>[:reduce, 87],
2034
+ :LSHIFT=>[:reduce, 87],
2035
+ :RSHIFT=>[:reduce, 87],
2036
+ :DPLUS=>[:state, 118],
2037
+ :DMINUS=>[:state, 119],
2038
+ :LBRK=>[:reduce, 87],
2039
+ :RBRK=>[:reduce, 87],
2040
+ :COMP=>[:reduce, 87],
2041
+ :NCMP=>[:reduce, 87],
2042
+ :LAND=>[:reduce, 87],
2043
+ :AMBER=>[:reduce, 87],
2044
+ :LOR=>[:reduce, 87],
2045
+ :BOR=>[:reduce, 87],
2046
+ :SEMICOLON=>[:reduce, 87],
2047
+ :RPAREN=>[:reduce, 87],
2048
+ :WHILE=>[:reduce, 87],
2049
+ :RBRACK=>[:reduce, 87],
2050
+ :COMMA=>[:reduce, 87],
2051
+ :ELSE=>[:reduce, 87]},
2052
+ {:SEMICOLON=>[:reduce, 100],
2053
+ :LBRACK=>[:reduce, 100],
2054
+ :LPAREN=>[:reduce, 100],
2055
+ :PLUS=>[:reduce, 100],
2056
+ :MINUS=>[:reduce, 100],
2057
+ :STAR=>[:reduce, 100],
2058
+ :DIVIDE=>[:reduce, 100],
2059
+ :MOD=>[:reduce, 100],
2060
+ :LSHIFT=>[:reduce, 100],
2061
+ :RSHIFT=>[:reduce, 100],
2062
+ :DPLUS=>[:reduce, 100],
2063
+ :DMINUS=>[:reduce, 100],
2064
+ :LBRK=>[:reduce, 100],
2065
+ :RBRK=>[:reduce, 100],
2066
+ :COMP=>[:reduce, 100],
2067
+ :NCMP=>[:reduce, 100],
2068
+ :LAND=>[:reduce, 100],
2069
+ :AMBER=>[:reduce, 100],
2070
+ :LOR=>[:reduce, 100],
2071
+ :BOR=>[:reduce, 100],
2072
+ :STRING=>[:reduce, 100],
2073
+ :RPAREN=>[:reduce, 100],
2074
+ :EQUALS=>[:reduce, 100],
2075
+ :WHILE=>[:reduce, 100],
2076
+ :RBRACK=>[:reduce, 100],
2077
+ :COMMA=>[:reduce, 100],
2078
+ :ELSE=>[:reduce, 100]},
2079
+ {:LBRACK=>[:state, 109],
2080
+ :LPAREN=>[:state, 110],
2081
+ :PLUS=>[:reduce, 102],
2082
+ :MINUS=>[:reduce, 102],
2083
+ :STAR=>[:reduce, 102],
2084
+ :DIVIDE=>[:reduce, 102],
2085
+ :MOD=>[:reduce, 102],
2086
+ :LSHIFT=>[:reduce, 102],
2087
+ :RSHIFT=>[:reduce, 102],
2088
+ :DPLUS=>[:state, 118],
2089
+ :DMINUS=>[:state, 119],
2090
+ :LBRK=>[:reduce, 102],
2091
+ :RBRK=>[:reduce, 102],
2092
+ :COMP=>[:reduce, 102],
2093
+ :NCMP=>[:reduce, 102],
2094
+ :LAND=>[:reduce, 102],
2095
+ :AMBER=>[:reduce, 102],
2096
+ :LOR=>[:reduce, 102],
2097
+ :BOR=>[:reduce, 102],
2098
+ :SEMICOLON=>[:reduce, 102],
2099
+ :RPAREN=>[:reduce, 102],
2100
+ :WHILE=>[:reduce, 102],
2101
+ :RBRACK=>[:reduce, 102],
2102
+ :COMMA=>[:reduce, 102],
2103
+ :ELSE=>[:reduce, 102]},
2104
+ {:LBRACK=>[:state, 109],
2105
+ :LPAREN=>[:state, 110],
2106
+ :PLUS=>[:reduce, 103],
2107
+ :MINUS=>[:reduce, 103],
2108
+ :STAR=>[:reduce, 103],
2109
+ :DIVIDE=>[:reduce, 103],
2110
+ :MOD=>[:reduce, 103],
2111
+ :LSHIFT=>[:reduce, 103],
2112
+ :RSHIFT=>[:reduce, 103],
2113
+ :DPLUS=>[:state, 118],
2114
+ :DMINUS=>[:state, 119],
2115
+ :LBRK=>[:reduce, 103],
2116
+ :RBRK=>[:reduce, 103],
2117
+ :COMP=>[:reduce, 103],
2118
+ :NCMP=>[:reduce, 103],
2119
+ :LAND=>[:reduce, 103],
2120
+ :AMBER=>[:reduce, 103],
2121
+ :LOR=>[:reduce, 103],
2122
+ :BOR=>[:reduce, 103],
2123
+ :SEMICOLON=>[:reduce, 103],
2124
+ :RPAREN=>[:reduce, 103],
2125
+ :WHILE=>[:reduce, 103],
2126
+ :RBRACK=>[:reduce, 103],
2127
+ :COMMA=>[:reduce, 103],
2128
+ :ELSE=>[:reduce, 103]},
2129
+ {:"function.body.expression"=>[:state, 198],
2130
+ :"function.body.assignment"=>[:state, 44],
2131
+ :"function.body.reference"=>[:state, 45],
2132
+ :"function.body.call"=>[:state, 46],
2133
+ :"function.body.math"=>[:state, 47],
2134
+ :"function.body.literal"=>[:state, 48],
2135
+ :"function.body.logic"=>[:state, 49],
2136
+ :LPAREN=>[:state, 50],
2137
+ :CARET=>[:state, 59],
2138
+ :AMBER=>[:state, 60],
2139
+ :IDENTIFIER=>[:state, 43],
2140
+ :DMINUS=>[:state, 61],
2141
+ :DPLUS=>[:state, 62],
2142
+ :PLUS=>[:state, 63],
2143
+ :MINUS=>[:state, 64],
2144
+ :NUMBER=>[:state, 65],
2145
+ :FLOAT=>[:state, 66],
2146
+ :DOUBLE=>[:state, 67],
2147
+ :UNUMBER=>[:state, 68],
2148
+ :SNUMBER=>[:state, 69],
2149
+ :USNUMBER=>[:state, 70],
2150
+ :LNUMBER=>[:state, 71],
2151
+ :ULNUMBER=>[:state, 72],
2152
+ :LLNUMBER=>[:state, 73],
2153
+ :ULLNUMBER=>[:state, 74],
2154
+ :CHARACTER=>[:state, 75],
2155
+ :"function.body.string"=>[:state, 76],
2156
+ :LNOT=>[:state, 77],
2157
+ :BNOT=>[:state, 78],
2158
+ :STRING=>[:state, 86]},
2159
+ {:"function.body.expression"=>[:state, 199],
2160
+ :"function.body.assignment"=>[:state, 44],
2161
+ :"function.body.reference"=>[:state, 45],
2162
+ :"function.body.call"=>[:state, 46],
2163
+ :"function.body.math"=>[:state, 47],
2164
+ :"function.body.literal"=>[:state, 48],
2165
+ :"function.body.logic"=>[:state, 49],
2166
+ :LPAREN=>[:state, 50],
2167
+ :CARET=>[:state, 59],
2168
+ :AMBER=>[:state, 60],
2169
+ :IDENTIFIER=>[:state, 43],
2170
+ :DMINUS=>[:state, 61],
2171
+ :DPLUS=>[:state, 62],
2172
+ :PLUS=>[:state, 63],
2173
+ :MINUS=>[:state, 64],
2174
+ :NUMBER=>[:state, 65],
2175
+ :FLOAT=>[:state, 66],
2176
+ :DOUBLE=>[:state, 67],
2177
+ :UNUMBER=>[:state, 68],
2178
+ :SNUMBER=>[:state, 69],
2179
+ :USNUMBER=>[:state, 70],
2180
+ :LNUMBER=>[:state, 71],
2181
+ :ULNUMBER=>[:state, 72],
2182
+ :LLNUMBER=>[:state, 73],
2183
+ :ULLNUMBER=>[:state, 74],
2184
+ :CHARACTER=>[:state, 75],
2185
+ :"function.body.string"=>[:state, 76],
2186
+ :LNOT=>[:state, 77],
2187
+ :BNOT=>[:state, 78],
2188
+ :STRING=>[:state, 86]},
2189
+ {:WHILE=>[:state, 200]},
2190
+ {:LBRACK=>[:state, 109],
2191
+ :LPAREN=>[:state, 110],
2192
+ :PLUS=>[:state, 111],
2193
+ :MINUS=>[:state, 112],
2194
+ :STAR=>[:state, 113],
2195
+ :DIVIDE=>[:state, 114],
2196
+ :MOD=>[:state, 115],
2197
+ :LSHIFT=>[:state, 116],
2198
+ :RSHIFT=>[:state, 117],
2199
+ :DPLUS=>[:state, 118],
2200
+ :DMINUS=>[:state, 119],
2201
+ :LBRK=>[:state, 120],
2202
+ :RBRK=>[:state, 121],
2203
+ :COMP=>[:state, 122],
2204
+ :NCMP=>[:state, 123],
2205
+ :LAND=>[:state, 124],
2206
+ :AMBER=>[:state, 125],
2207
+ :LOR=>[:state, 126],
2208
+ :BOR=>[:state, 127],
2209
+ :WHILE=>[:reduce, 138],
2210
+ :ELSE=>[:reduce, 138],
2211
+ :SEMICOLON=>[:reduce, 138]},
2212
+ {:"function.body"=>[:state, 201],
2213
+ :"function.body.parts.maybe"=>[:state, 36],
2214
+ :"function.body.parts"=>[:state, 37],
2215
+ :"function.body.part"=>[:state, 38],
2216
+ :"function.body.declare"=>[:state, 39],
2217
+ :"function.body.expression"=>[:state, 40],
2218
+ :"function.body.control"=>[:state, 41],
2219
+ :preprocessor=>[:state, 42],
2220
+ :IDENTIFIER=>[:state, 43],
2221
+ :"function.body.assignment"=>[:state, 44],
2222
+ :"function.body.reference"=>[:state, 45],
2223
+ :"function.body.call"=>[:state, 46],
2224
+ :"function.body.math"=>[:state, 47],
2225
+ :"function.body.literal"=>[:state, 48],
2226
+ :"function.body.logic"=>[:state, 49],
2227
+ :LPAREN=>[:state, 50],
2228
+ :"control.if"=>[:state, 51],
2229
+ :"control.while"=>[:state, 52],
2230
+ :"control.for"=>[:state, 53],
2231
+ :"control.goto"=>[:state, 54],
2232
+ :"control.label"=>[:state, 55],
2233
+ :"control.return"=>[:state, 56],
2234
+ :CONTINUE=>[:state, 57],
2235
+ :BREAK=>[:state, 58],
2236
+ :HASH=>[:state, 17],
2237
+ :CARET=>[:state, 59],
2238
+ :AMBER=>[:state, 60],
2239
+ :DMINUS=>[:state, 61],
2240
+ :DPLUS=>[:state, 62],
2241
+ :PLUS=>[:state, 63],
2242
+ :MINUS=>[:state, 64],
2243
+ :NUMBER=>[:state, 65],
2244
+ :FLOAT=>[:state, 66],
2245
+ :DOUBLE=>[:state, 67],
2246
+ :UNUMBER=>[:state, 68],
2247
+ :SNUMBER=>[:state, 69],
2248
+ :USNUMBER=>[:state, 70],
2249
+ :LNUMBER=>[:state, 71],
2250
+ :ULNUMBER=>[:state, 72],
2251
+ :LLNUMBER=>[:state, 73],
2252
+ :ULLNUMBER=>[:state, 74],
2253
+ :CHARACTER=>[:state, 75],
2254
+ :"function.body.string"=>[:state, 76],
2255
+ :LNOT=>[:state, 77],
2256
+ :BNOT=>[:state, 78],
2257
+ :IF=>[:state, 79],
2258
+ :WHILE=>[:state, 80],
2259
+ :DO=>[:state, 81],
2260
+ :FOR=>[:state, 82],
2261
+ :GOTO=>[:state, 83],
2262
+ :LABEL=>[:state, 84],
2263
+ :RETURN=>[:state, 85],
2264
+ :STRING=>[:state, 86],
2265
+ :RBRACE=>[:reduce, 53]},
2266
+ {:"control.for.compound"=>[:state, 202],
2267
+ :"function.body.expression"=>[:state, 203],
2268
+ :"function.body.assignment"=>[:state, 44],
2269
+ :"function.body.reference"=>[:state, 45],
2270
+ :"function.body.call"=>[:state, 46],
2271
+ :"function.body.math"=>[:state, 47],
2272
+ :"function.body.literal"=>[:state, 48],
2273
+ :"function.body.logic"=>[:state, 49],
2274
+ :LPAREN=>[:state, 50],
2275
+ :CARET=>[:state, 59],
2276
+ :AMBER=>[:state, 60],
2277
+ :IDENTIFIER=>[:state, 43],
2278
+ :DMINUS=>[:state, 61],
2279
+ :DPLUS=>[:state, 62],
2280
+ :PLUS=>[:state, 63],
2281
+ :MINUS=>[:state, 64],
2282
+ :NUMBER=>[:state, 65],
2283
+ :FLOAT=>[:state, 66],
2284
+ :DOUBLE=>[:state, 67],
2285
+ :UNUMBER=>[:state, 68],
2286
+ :SNUMBER=>[:state, 69],
2287
+ :USNUMBER=>[:state, 70],
2288
+ :LNUMBER=>[:state, 71],
2289
+ :ULNUMBER=>[:state, 72],
2290
+ :LLNUMBER=>[:state, 73],
2291
+ :ULLNUMBER=>[:state, 74],
2292
+ :CHARACTER=>[:state, 75],
2293
+ :"function.body.string"=>[:state, 76],
2294
+ :LNOT=>[:state, 77],
2295
+ :BNOT=>[:state, 78],
2296
+ :STRING=>[:state, 86]},
2297
+ {:SEMICOLON=>[:reduce, 134]},
2298
+ {:COLON=>[:state, 204]},
2299
+ {:LBRACK=>[:state, 109],
2300
+ :LPAREN=>[:state, 110],
2301
+ :PLUS=>[:state, 111],
2302
+ :MINUS=>[:state, 112],
2303
+ :STAR=>[:state, 113],
2304
+ :DIVIDE=>[:state, 114],
2305
+ :MOD=>[:state, 115],
2306
+ :LSHIFT=>[:state, 116],
2307
+ :RSHIFT=>[:state, 117],
2308
+ :DPLUS=>[:state, 118],
2309
+ :DMINUS=>[:state, 119],
2310
+ :LBRK=>[:state, 120],
2311
+ :RBRK=>[:state, 121],
2312
+ :COMP=>[:state, 122],
2313
+ :NCMP=>[:state, 123],
2314
+ :LAND=>[:state, 124],
2315
+ :AMBER=>[:state, 125],
2316
+ :LOR=>[:state, 126],
2317
+ :BOR=>[:state, 127],
2318
+ :SEMICOLON=>[:reduce, 136]},
2319
+ {:SEMICOLON=>[:reduce, 137]},
2320
+ {:RBRACE=>[:state, 205]},
2321
+ {:RBRACE=>[:reduce, 32]},
2322
+ {:"struct.part"=>[:state, 206],
2323
+ :"class.attribute"=>[:state, 155],
2324
+ :preprocessor=>[:state, 156],
2325
+ :IDENTIFIER=>[:state, 103],
2326
+ :HASH=>[:state, 17],
2327
+ :RBRACE=>[:reduce, 33]},
2328
+ {:RBRACE=>[:reduce, 36], :IDENTIFIER=>[:reduce, 36], :HASH=>[:reduce, 36]},
2329
+ {:RBRACE=>[:reduce, 37], :IDENTIFIER=>[:reduce, 37], :HASH=>[:reduce, 37]},
2330
+ {:RBRACE=>[:reduce, 38], :IDENTIFIER=>[:reduce, 38], :HASH=>[:reduce, 38]},
2331
+ {:RBRACE=>[:state, 207]},
2332
+ {:RBRACE=>[:reduce, 40]},
2333
+ {:"union.part"=>[:state, 208],
2334
+ :"class.attribute"=>[:state, 161],
2335
+ :preprocessor=>[:state, 162],
2336
+ :IDENTIFIER=>[:state, 103],
2337
+ :HASH=>[:state, 17],
2338
+ :RBRACE=>[:reduce, 41]},
2339
+ {:RBRACE=>[:reduce, 44], :IDENTIFIER=>[:reduce, 44], :HASH=>[:reduce, 44]},
2340
+ {:RBRACE=>[:reduce, 45], :IDENTIFIER=>[:reduce, 45], :HASH=>[:reduce, 45]},
2341
+ {:RBRACE=>[:reduce, 46], :IDENTIFIER=>[:reduce, 46], :HASH=>[:reduce, 46]},
2342
+ {:SEMICOLON=>[:state, 209], :CARET=>[:state, 24]},
2343
+ {:RPAREN=>[:state, 210]},
2344
+ {:"function.arguments.maybe"=>[:state, 211],
2345
+ :"function.arguments"=>[:state, 93],
2346
+ :"function.argument"=>[:state, 94],
2347
+ :IDENTIFIER=>[:state, 95],
2348
+ :RPAREN=>[:reduce, 14]},
2349
+ {:COLON=>[:state, 212]},
2350
+ {:"function.argument"=>[:state, 213], :IDENTIFIER=>[:state, 95]},
2351
+ {:type=>[:state, 214],
2352
+ :"class.name"=>[:state, 10],
2353
+ :struct=>[:state, 11],
2354
+ :union=>[:state, 12],
2355
+ :IDENTIFIER=>[:state, 18],
2356
+ :STRUCT=>[:state, 19],
2357
+ :UNION=>[:state, 20]},
2358
+ {:$end=>[:reduce, 18],
2359
+ :FUNCTION=>[:reduce, 18],
2360
+ :CLASS=>[:reduce, 18],
2361
+ :TYPEDEF=>[:reduce, 18],
2362
+ :HASH=>[:reduce, 18]},
2363
+ {:RBRACE=>[:reduce, 24],
2364
+ :IDENTIFIER=>[:reduce, 24],
2365
+ :FUNC=>[:reduce, 24],
2366
+ :HASH=>[:reduce, 24]},
2367
+ {:type=>[:state, 215],
2368
+ :"class.name"=>[:state, 10],
2369
+ :struct=>[:state, 11],
2370
+ :union=>[:state, 12],
2371
+ :IDENTIFIER=>[:state, 18],
2372
+ :STRUCT=>[:state, 19],
2373
+ :UNION=>[:state, 20]},
2374
+ {:LPAREN=>[:state, 216]},
2375
+ {:RBRACK=>[:state, 217],
2376
+ :LBRACK=>[:state, 109],
2377
+ :LPAREN=>[:state, 110],
2378
+ :PLUS=>[:state, 111],
2379
+ :MINUS=>[:state, 112],
2380
+ :STAR=>[:state, 113],
2381
+ :DIVIDE=>[:state, 114],
2382
+ :MOD=>[:state, 115],
2383
+ :LSHIFT=>[:state, 116],
2384
+ :RSHIFT=>[:state, 117],
2385
+ :DPLUS=>[:state, 118],
2386
+ :DMINUS=>[:state, 119],
2387
+ :LBRK=>[:state, 120],
2388
+ :RBRK=>[:state, 121],
2389
+ :COMP=>[:state, 122],
2390
+ :NCMP=>[:state, 123],
2391
+ :LAND=>[:state, 124],
2392
+ :AMBER=>[:state, 125],
2393
+ :LOR=>[:state, 126],
2394
+ :BOR=>[:state, 127]},
2395
+ {:RPAREN=>[:state, 218]},
2396
+ {:COMMA=>[:state, 219], :RPAREN=>[:reduce, 114]},
2397
+ {:RPAREN=>[:reduce, 117], :COMMA=>[:reduce, 117]},
2398
+ {:LBRACK=>[:state, 109],
2399
+ :LPAREN=>[:state, 110],
2400
+ :PLUS=>[:state, 111],
2401
+ :MINUS=>[:state, 112],
2402
+ :STAR=>[:state, 113],
2403
+ :DIVIDE=>[:state, 114],
2404
+ :MOD=>[:state, 115],
2405
+ :LSHIFT=>[:state, 116],
2406
+ :RSHIFT=>[:state, 117],
2407
+ :DPLUS=>[:state, 118],
2408
+ :DMINUS=>[:state, 119],
2409
+ :LBRK=>[:state, 120],
2410
+ :RBRK=>[:state, 121],
2411
+ :COMP=>[:state, 122],
2412
+ :NCMP=>[:state, 123],
2413
+ :LAND=>[:state, 124],
2414
+ :AMBER=>[:state, 125],
2415
+ :LOR=>[:state, 126],
2416
+ :BOR=>[:state, 127],
2417
+ :RPAREN=>[:reduce, 118],
2418
+ :COMMA=>[:reduce, 118]},
2419
+ {:LBRACK=>[:state, 109],
2420
+ :LPAREN=>[:state, 110],
2421
+ :PLUS=>[:reduce, 75],
2422
+ :MINUS=>[:reduce, 75],
2423
+ :STAR=>[:state, 113],
2424
+ :DIVIDE=>[:state, 114],
2425
+ :MOD=>[:state, 115],
2426
+ :LSHIFT=>[:reduce, 75],
2427
+ :RSHIFT=>[:reduce, 75],
2428
+ :DPLUS=>[:state, 118],
2429
+ :DMINUS=>[:state, 119],
2430
+ :LBRK=>[:reduce, 75],
2431
+ :RBRK=>[:reduce, 75],
2432
+ :COMP=>[:reduce, 75],
2433
+ :NCMP=>[:reduce, 75],
2434
+ :LAND=>[:reduce, 75],
2435
+ :AMBER=>[:reduce, 75],
2436
+ :LOR=>[:reduce, 75],
2437
+ :BOR=>[:reduce, 75],
2438
+ :SEMICOLON=>[:reduce, 75],
2439
+ :RPAREN=>[:reduce, 75],
2440
+ :WHILE=>[:reduce, 75],
2441
+ :RBRACK=>[:reduce, 75],
2442
+ :COMMA=>[:reduce, 75],
2443
+ :ELSE=>[:reduce, 75]},
2444
+ {:LBRACK=>[:state, 109],
2445
+ :LPAREN=>[:state, 110],
2446
+ :PLUS=>[:reduce, 76],
2447
+ :MINUS=>[:reduce, 76],
2448
+ :STAR=>[:state, 113],
2449
+ :DIVIDE=>[:state, 114],
2450
+ :MOD=>[:state, 115],
2451
+ :LSHIFT=>[:reduce, 76],
2452
+ :RSHIFT=>[:reduce, 76],
2453
+ :DPLUS=>[:state, 118],
2454
+ :DMINUS=>[:state, 119],
2455
+ :LBRK=>[:reduce, 76],
2456
+ :RBRK=>[:reduce, 76],
2457
+ :COMP=>[:reduce, 76],
2458
+ :NCMP=>[:reduce, 76],
2459
+ :LAND=>[:reduce, 76],
2460
+ :AMBER=>[:reduce, 76],
2461
+ :LOR=>[:reduce, 76],
2462
+ :BOR=>[:reduce, 76],
2463
+ :SEMICOLON=>[:reduce, 76],
2464
+ :RPAREN=>[:reduce, 76],
2465
+ :WHILE=>[:reduce, 76],
2466
+ :RBRACK=>[:reduce, 76],
2467
+ :COMMA=>[:reduce, 76],
2468
+ :ELSE=>[:reduce, 76]},
2469
+ {:LBRACK=>[:state, 109],
2470
+ :LPAREN=>[:state, 110],
2471
+ :PLUS=>[:reduce, 77],
2472
+ :MINUS=>[:reduce, 77],
2473
+ :STAR=>[:reduce, 77],
2474
+ :DIVIDE=>[:reduce, 77],
2475
+ :MOD=>[:reduce, 77],
2476
+ :LSHIFT=>[:reduce, 77],
2477
+ :RSHIFT=>[:reduce, 77],
2478
+ :DPLUS=>[:state, 118],
2479
+ :DMINUS=>[:state, 119],
2480
+ :LBRK=>[:reduce, 77],
2481
+ :RBRK=>[:reduce, 77],
2482
+ :COMP=>[:reduce, 77],
2483
+ :NCMP=>[:reduce, 77],
2484
+ :LAND=>[:reduce, 77],
2485
+ :AMBER=>[:reduce, 77],
2486
+ :LOR=>[:reduce, 77],
2487
+ :BOR=>[:reduce, 77],
2488
+ :SEMICOLON=>[:reduce, 77],
2489
+ :RPAREN=>[:reduce, 77],
2490
+ :WHILE=>[:reduce, 77],
2491
+ :RBRACK=>[:reduce, 77],
2492
+ :COMMA=>[:reduce, 77],
2493
+ :ELSE=>[:reduce, 77]},
2494
+ {:LBRACK=>[:state, 109],
2495
+ :LPAREN=>[:state, 110],
2496
+ :PLUS=>[:reduce, 78],
2497
+ :MINUS=>[:reduce, 78],
2498
+ :STAR=>[:reduce, 78],
2499
+ :DIVIDE=>[:reduce, 78],
2500
+ :MOD=>[:reduce, 78],
2501
+ :LSHIFT=>[:reduce, 78],
2502
+ :RSHIFT=>[:reduce, 78],
2503
+ :DPLUS=>[:state, 118],
2504
+ :DMINUS=>[:state, 119],
2505
+ :LBRK=>[:reduce, 78],
2506
+ :RBRK=>[:reduce, 78],
2507
+ :COMP=>[:reduce, 78],
2508
+ :NCMP=>[:reduce, 78],
2509
+ :LAND=>[:reduce, 78],
2510
+ :AMBER=>[:reduce, 78],
2511
+ :LOR=>[:reduce, 78],
2512
+ :BOR=>[:reduce, 78],
2513
+ :SEMICOLON=>[:reduce, 78],
2514
+ :RPAREN=>[:reduce, 78],
2515
+ :WHILE=>[:reduce, 78],
2516
+ :RBRACK=>[:reduce, 78],
2517
+ :COMMA=>[:reduce, 78],
2518
+ :ELSE=>[:reduce, 78]},
2519
+ {:LBRACK=>[:state, 109],
2520
+ :LPAREN=>[:state, 110],
2521
+ :PLUS=>[:reduce, 79],
2522
+ :MINUS=>[:reduce, 79],
2523
+ :STAR=>[:reduce, 79],
2524
+ :DIVIDE=>[:reduce, 79],
2525
+ :MOD=>[:reduce, 79],
2526
+ :LSHIFT=>[:reduce, 79],
2527
+ :RSHIFT=>[:reduce, 79],
2528
+ :DPLUS=>[:state, 118],
2529
+ :DMINUS=>[:state, 119],
2530
+ :LBRK=>[:reduce, 79],
2531
+ :RBRK=>[:reduce, 79],
2532
+ :COMP=>[:reduce, 79],
2533
+ :NCMP=>[:reduce, 79],
2534
+ :LAND=>[:reduce, 79],
2535
+ :AMBER=>[:reduce, 79],
2536
+ :LOR=>[:reduce, 79],
2537
+ :BOR=>[:reduce, 79],
2538
+ :SEMICOLON=>[:reduce, 79],
2539
+ :RPAREN=>[:reduce, 79],
2540
+ :WHILE=>[:reduce, 79],
2541
+ :RBRACK=>[:reduce, 79],
2542
+ :COMMA=>[:reduce, 79],
2543
+ :ELSE=>[:reduce, 79]},
2544
+ {:LBRACK=>[:state, 109],
2545
+ :LPAREN=>[:state, 110],
2546
+ :PLUS=>[:state, 111],
2547
+ :MINUS=>[:state, 112],
2548
+ :STAR=>[:state, 113],
2549
+ :DIVIDE=>[:state, 114],
2550
+ :MOD=>[:state, 115],
2551
+ :LSHIFT=>[:reduce, 80],
2552
+ :RSHIFT=>[:reduce, 80],
2553
+ :DPLUS=>[:state, 118],
2554
+ :DMINUS=>[:state, 119],
2555
+ :LBRK=>[:reduce, 80],
2556
+ :RBRK=>[:reduce, 80],
2557
+ :COMP=>[:reduce, 80],
2558
+ :NCMP=>[:reduce, 80],
2559
+ :LAND=>[:reduce, 80],
2560
+ :AMBER=>[:reduce, 80],
2561
+ :LOR=>[:reduce, 80],
2562
+ :BOR=>[:reduce, 80],
2563
+ :SEMICOLON=>[:reduce, 80],
2564
+ :RPAREN=>[:reduce, 80],
2565
+ :WHILE=>[:reduce, 80],
2566
+ :RBRACK=>[:reduce, 80],
2567
+ :COMMA=>[:reduce, 80],
2568
+ :ELSE=>[:reduce, 80]},
2569
+ {:LBRACK=>[:state, 109],
2570
+ :LPAREN=>[:state, 110],
2571
+ :PLUS=>[:state, 111],
2572
+ :MINUS=>[:state, 112],
2573
+ :STAR=>[:state, 113],
2574
+ :DIVIDE=>[:state, 114],
2575
+ :MOD=>[:state, 115],
2576
+ :LSHIFT=>[:reduce, 81],
2577
+ :RSHIFT=>[:reduce, 81],
2578
+ :DPLUS=>[:state, 118],
2579
+ :DMINUS=>[:state, 119],
2580
+ :LBRK=>[:reduce, 81],
2581
+ :RBRK=>[:reduce, 81],
2582
+ :COMP=>[:reduce, 81],
2583
+ :NCMP=>[:reduce, 81],
2584
+ :LAND=>[:reduce, 81],
2585
+ :AMBER=>[:reduce, 81],
2586
+ :LOR=>[:reduce, 81],
2587
+ :BOR=>[:reduce, 81],
2588
+ :SEMICOLON=>[:reduce, 81],
2589
+ :RPAREN=>[:reduce, 81],
2590
+ :WHILE=>[:reduce, 81],
2591
+ :RBRACK=>[:reduce, 81],
2592
+ :COMMA=>[:reduce, 81],
2593
+ :ELSE=>[:reduce, 81]},
2594
+ {:LBRACK=>[:state, 109],
2595
+ :LPAREN=>[:state, 110],
2596
+ :PLUS=>[:state, 111],
2597
+ :MINUS=>[:state, 112],
2598
+ :STAR=>[:state, 113],
2599
+ :DIVIDE=>[:state, 114],
2600
+ :MOD=>[:state, 115],
2601
+ :LSHIFT=>[:state, 116],
2602
+ :RSHIFT=>[:state, 117],
2603
+ :DPLUS=>[:state, 118],
2604
+ :DMINUS=>[:state, 119],
2605
+ :LBRK=>[:reduce, 104],
2606
+ :RBRK=>[:reduce, 104],
2607
+ :COMP=>[:reduce, 104],
2608
+ :NCMP=>[:reduce, 104],
2609
+ :LAND=>[:reduce, 104],
2610
+ :AMBER=>[:reduce, 104],
2611
+ :LOR=>[:reduce, 104],
2612
+ :BOR=>[:reduce, 104],
2613
+ :SEMICOLON=>[:reduce, 104],
2614
+ :RPAREN=>[:reduce, 104],
2615
+ :WHILE=>[:reduce, 104],
2616
+ :RBRACK=>[:reduce, 104],
2617
+ :COMMA=>[:reduce, 104],
2618
+ :ELSE=>[:reduce, 104]},
2619
+ {:"function.body.expression"=>[:state, 220],
2620
+ :"function.body.assignment"=>[:state, 44],
2621
+ :"function.body.reference"=>[:state, 45],
2622
+ :"function.body.call"=>[:state, 46],
2623
+ :"function.body.math"=>[:state, 47],
2624
+ :"function.body.literal"=>[:state, 48],
2625
+ :"function.body.logic"=>[:state, 49],
2626
+ :LPAREN=>[:state, 50],
2627
+ :CARET=>[:state, 59],
2628
+ :AMBER=>[:state, 60],
2629
+ :IDENTIFIER=>[:state, 43],
2630
+ :DMINUS=>[:state, 61],
2631
+ :DPLUS=>[:state, 62],
2632
+ :PLUS=>[:state, 63],
2633
+ :MINUS=>[:state, 64],
2634
+ :NUMBER=>[:state, 65],
2635
+ :FLOAT=>[:state, 66],
2636
+ :DOUBLE=>[:state, 67],
2637
+ :UNUMBER=>[:state, 68],
2638
+ :SNUMBER=>[:state, 69],
2639
+ :USNUMBER=>[:state, 70],
2640
+ :LNUMBER=>[:state, 71],
2641
+ :ULNUMBER=>[:state, 72],
2642
+ :LLNUMBER=>[:state, 73],
2643
+ :ULLNUMBER=>[:state, 74],
2644
+ :CHARACTER=>[:state, 75],
2645
+ :"function.body.string"=>[:state, 76],
2646
+ :LNOT=>[:state, 77],
2647
+ :BNOT=>[:state, 78],
2648
+ :STRING=>[:state, 86]},
2649
+ {:LBRACK=>[:state, 109],
2650
+ :LPAREN=>[:state, 110],
2651
+ :PLUS=>[:state, 111],
2652
+ :MINUS=>[:state, 112],
2653
+ :STAR=>[:state, 113],
2654
+ :DIVIDE=>[:state, 114],
2655
+ :MOD=>[:state, 115],
2656
+ :LSHIFT=>[:state, 116],
2657
+ :RSHIFT=>[:state, 117],
2658
+ :DPLUS=>[:state, 118],
2659
+ :DMINUS=>[:state, 119],
2660
+ :LBRK=>[:reduce, 105],
2661
+ :RBRK=>[:reduce, 105],
2662
+ :COMP=>[:reduce, 105],
2663
+ :NCMP=>[:reduce, 105],
2664
+ :LAND=>[:reduce, 105],
2665
+ :AMBER=>[:reduce, 105],
2666
+ :LOR=>[:reduce, 105],
2667
+ :BOR=>[:reduce, 105],
2668
+ :SEMICOLON=>[:reduce, 105],
2669
+ :RPAREN=>[:reduce, 105],
2670
+ :WHILE=>[:reduce, 105],
2671
+ :RBRACK=>[:reduce, 105],
2672
+ :COMMA=>[:reduce, 105],
2673
+ :ELSE=>[:reduce, 105]},
2674
+ {:"function.body.expression"=>[:state, 221],
2675
+ :"function.body.assignment"=>[:state, 44],
2676
+ :"function.body.reference"=>[:state, 45],
2677
+ :"function.body.call"=>[:state, 46],
2678
+ :"function.body.math"=>[:state, 47],
2679
+ :"function.body.literal"=>[:state, 48],
2680
+ :"function.body.logic"=>[:state, 49],
2681
+ :LPAREN=>[:state, 50],
2682
+ :CARET=>[:state, 59],
2683
+ :AMBER=>[:state, 60],
2684
+ :IDENTIFIER=>[:state, 43],
2685
+ :DMINUS=>[:state, 61],
2686
+ :DPLUS=>[:state, 62],
2687
+ :PLUS=>[:state, 63],
2688
+ :MINUS=>[:state, 64],
2689
+ :NUMBER=>[:state, 65],
2690
+ :FLOAT=>[:state, 66],
2691
+ :DOUBLE=>[:state, 67],
2692
+ :UNUMBER=>[:state, 68],
2693
+ :SNUMBER=>[:state, 69],
2694
+ :USNUMBER=>[:state, 70],
2695
+ :LNUMBER=>[:state, 71],
2696
+ :ULNUMBER=>[:state, 72],
2697
+ :LLNUMBER=>[:state, 73],
2698
+ :ULLNUMBER=>[:state, 74],
2699
+ :CHARACTER=>[:state, 75],
2700
+ :"function.body.string"=>[:state, 76],
2701
+ :LNOT=>[:state, 77],
2702
+ :BNOT=>[:state, 78],
2703
+ :STRING=>[:state, 86]},
2704
+ {:LBRACK=>[:state, 109],
2705
+ :LPAREN=>[:state, 110],
2706
+ :PLUS=>[:state, 111],
2707
+ :MINUS=>[:state, 112],
2708
+ :STAR=>[:state, 113],
2709
+ :DIVIDE=>[:state, 114],
2710
+ :MOD=>[:state, 115],
2711
+ :LSHIFT=>[:state, 116],
2712
+ :RSHIFT=>[:state, 117],
2713
+ :DPLUS=>[:state, 118],
2714
+ :DMINUS=>[:state, 119],
2715
+ :LBRK=>[:state, 120],
2716
+ :RBRK=>[:state, 121],
2717
+ :COMP=>[:reduce, 108],
2718
+ :NCMP=>[:reduce, 108],
2719
+ :LAND=>[:reduce, 108],
2720
+ :AMBER=>[:reduce, 108],
2721
+ :LOR=>[:reduce, 108],
2722
+ :BOR=>[:reduce, 108],
2723
+ :SEMICOLON=>[:reduce, 108],
2724
+ :RPAREN=>[:reduce, 108],
2725
+ :WHILE=>[:reduce, 108],
2726
+ :RBRACK=>[:reduce, 108],
2727
+ :COMMA=>[:reduce, 108],
2728
+ :ELSE=>[:reduce, 108]},
2729
+ {:LBRACK=>[:state, 109],
2730
+ :LPAREN=>[:state, 110],
2731
+ :PLUS=>[:state, 111],
2732
+ :MINUS=>[:state, 112],
2733
+ :STAR=>[:state, 113],
2734
+ :DIVIDE=>[:state, 114],
2735
+ :MOD=>[:state, 115],
2736
+ :LSHIFT=>[:state, 116],
2737
+ :RSHIFT=>[:state, 117],
2738
+ :DPLUS=>[:state, 118],
2739
+ :DMINUS=>[:state, 119],
2740
+ :LBRK=>[:state, 120],
2741
+ :RBRK=>[:state, 121],
2742
+ :COMP=>[:reduce, 109],
2743
+ :NCMP=>[:reduce, 109],
2744
+ :LAND=>[:reduce, 109],
2745
+ :AMBER=>[:reduce, 109],
2746
+ :LOR=>[:reduce, 109],
2747
+ :BOR=>[:reduce, 109],
2748
+ :SEMICOLON=>[:reduce, 109],
2749
+ :RPAREN=>[:reduce, 109],
2750
+ :WHILE=>[:reduce, 109],
2751
+ :RBRACK=>[:reduce, 109],
2752
+ :COMMA=>[:reduce, 109],
2753
+ :ELSE=>[:reduce, 109]},
2754
+ {:LBRACK=>[:state, 109],
2755
+ :LPAREN=>[:state, 110],
2756
+ :PLUS=>[:state, 111],
2757
+ :MINUS=>[:state, 112],
2758
+ :STAR=>[:state, 113],
2759
+ :DIVIDE=>[:state, 114],
2760
+ :MOD=>[:state, 115],
2761
+ :LSHIFT=>[:state, 116],
2762
+ :RSHIFT=>[:state, 117],
2763
+ :DPLUS=>[:state, 118],
2764
+ :DMINUS=>[:state, 119],
2765
+ :LBRK=>[:state, 120],
2766
+ :RBRK=>[:state, 121],
2767
+ :COMP=>[:state, 122],
2768
+ :NCMP=>[:state, 123],
2769
+ :LAND=>[:reduce, 110],
2770
+ :AMBER=>[:state, 125],
2771
+ :LOR=>[:reduce, 110],
2772
+ :BOR=>[:state, 127],
2773
+ :SEMICOLON=>[:reduce, 110],
2774
+ :RPAREN=>[:reduce, 110],
2775
+ :WHILE=>[:reduce, 110],
2776
+ :RBRACK=>[:reduce, 110],
2777
+ :COMMA=>[:reduce, 110],
2778
+ :ELSE=>[:reduce, 110]},
2779
+ {:LBRACK=>[:state, 109],
2780
+ :LPAREN=>[:state, 110],
2781
+ :PLUS=>[:state, 111],
2782
+ :MINUS=>[:state, 112],
2783
+ :STAR=>[:state, 113],
2784
+ :DIVIDE=>[:state, 114],
2785
+ :MOD=>[:state, 115],
2786
+ :LSHIFT=>[:state, 116],
2787
+ :RSHIFT=>[:state, 117],
2788
+ :DPLUS=>[:state, 118],
2789
+ :DMINUS=>[:state, 119],
2790
+ :LBRK=>[:state, 120],
2791
+ :RBRK=>[:state, 121],
2792
+ :COMP=>[:state, 122],
2793
+ :NCMP=>[:state, 123],
2794
+ :LAND=>[:reduce, 111],
2795
+ :AMBER=>[:reduce, 111],
2796
+ :LOR=>[:reduce, 111],
2797
+ :BOR=>[:reduce, 111],
2798
+ :SEMICOLON=>[:reduce, 111],
2799
+ :RPAREN=>[:reduce, 111],
2800
+ :WHILE=>[:reduce, 111],
2801
+ :RBRACK=>[:reduce, 111],
2802
+ :COMMA=>[:reduce, 111],
2803
+ :ELSE=>[:reduce, 111]},
2804
+ {:LBRACK=>[:state, 109],
2805
+ :LPAREN=>[:state, 110],
2806
+ :PLUS=>[:state, 111],
2807
+ :MINUS=>[:state, 112],
2808
+ :STAR=>[:state, 113],
2809
+ :DIVIDE=>[:state, 114],
2810
+ :MOD=>[:state, 115],
2811
+ :LSHIFT=>[:state, 116],
2812
+ :RSHIFT=>[:state, 117],
2813
+ :DPLUS=>[:state, 118],
2814
+ :DMINUS=>[:state, 119],
2815
+ :LBRK=>[:state, 120],
2816
+ :RBRK=>[:state, 121],
2817
+ :COMP=>[:state, 122],
2818
+ :NCMP=>[:state, 123],
2819
+ :LAND=>[:state, 124],
2820
+ :AMBER=>[:state, 125],
2821
+ :LOR=>[:reduce, 112],
2822
+ :BOR=>[:state, 127],
2823
+ :SEMICOLON=>[:reduce, 112],
2824
+ :RPAREN=>[:reduce, 112],
2825
+ :WHILE=>[:reduce, 112],
2826
+ :RBRACK=>[:reduce, 112],
2827
+ :COMMA=>[:reduce, 112],
2828
+ :ELSE=>[:reduce, 112]},
2829
+ {:LBRACK=>[:state, 109],
2830
+ :LPAREN=>[:state, 110],
2831
+ :PLUS=>[:state, 111],
2832
+ :MINUS=>[:state, 112],
2833
+ :STAR=>[:state, 113],
2834
+ :DIVIDE=>[:state, 114],
2835
+ :MOD=>[:state, 115],
2836
+ :LSHIFT=>[:state, 116],
2837
+ :RSHIFT=>[:state, 117],
2838
+ :DPLUS=>[:state, 118],
2839
+ :DMINUS=>[:state, 119],
2840
+ :LBRK=>[:state, 120],
2841
+ :RBRK=>[:state, 121],
2842
+ :COMP=>[:state, 122],
2843
+ :NCMP=>[:state, 123],
2844
+ :LAND=>[:reduce, 113],
2845
+ :AMBER=>[:state, 125],
2846
+ :LOR=>[:reduce, 113],
2847
+ :BOR=>[:reduce, 113],
2848
+ :SEMICOLON=>[:reduce, 113],
2849
+ :RPAREN=>[:reduce, 113],
2850
+ :WHILE=>[:reduce, 113],
2851
+ :RBRACK=>[:reduce, 113],
2852
+ :COMMA=>[:reduce, 113],
2853
+ :ELSE=>[:reduce, 113]},
2854
+ {:EQUALS=>[:state, 222], :CARET=>[:state, 24], :SEMICOLON=>[:reduce, 67]},
2855
+ {:LBRACK=>[:state, 109],
2856
+ :LPAREN=>[:state, 110],
2857
+ :PLUS=>[:state, 111],
2858
+ :MINUS=>[:state, 112],
2859
+ :STAR=>[:state, 113],
2860
+ :DIVIDE=>[:state, 114],
2861
+ :MOD=>[:state, 115],
2862
+ :LSHIFT=>[:state, 116],
2863
+ :RSHIFT=>[:state, 117],
2864
+ :DPLUS=>[:state, 118],
2865
+ :DMINUS=>[:state, 119],
2866
+ :LBRK=>[:state, 120],
2867
+ :RBRK=>[:state, 121],
2868
+ :COMP=>[:state, 122],
2869
+ :NCMP=>[:state, 123],
2870
+ :LAND=>[:state, 124],
2871
+ :AMBER=>[:state, 125],
2872
+ :LOR=>[:state, 126],
2873
+ :BOR=>[:state, 127],
2874
+ :SEMICOLON=>[:reduce, 69],
2875
+ :RPAREN=>[:reduce, 69],
2876
+ :WHILE=>[:reduce, 69],
2877
+ :RBRACK=>[:reduce, 69],
2878
+ :COMMA=>[:reduce, 69],
2879
+ :ELSE=>[:reduce, 69]},
2880
+ {:SEMICOLON=>[:reduce, 66],
2881
+ :LBRACK=>[:reduce, 66],
2882
+ :LPAREN=>[:reduce, 66],
2883
+ :PLUS=>[:reduce, 66],
2884
+ :MINUS=>[:reduce, 66],
2885
+ :STAR=>[:reduce, 66],
2886
+ :DIVIDE=>[:reduce, 66],
2887
+ :MOD=>[:reduce, 66],
2888
+ :LSHIFT=>[:reduce, 66],
2889
+ :RSHIFT=>[:reduce, 66],
2890
+ :DPLUS=>[:reduce, 66],
2891
+ :DMINUS=>[:reduce, 66],
2892
+ :LBRK=>[:reduce, 66],
2893
+ :RBRK=>[:reduce, 66],
2894
+ :COMP=>[:reduce, 66],
2895
+ :NCMP=>[:reduce, 66],
2896
+ :LAND=>[:reduce, 66],
2897
+ :AMBER=>[:reduce, 66],
2898
+ :LOR=>[:reduce, 66],
2899
+ :BOR=>[:reduce, 66],
2900
+ :RPAREN=>[:reduce, 66],
2901
+ :EQUALS=>[:reduce, 66],
2902
+ :WHILE=>[:reduce, 66],
2903
+ :RBRACK=>[:reduce, 66],
2904
+ :COMMA=>[:reduce, 66],
2905
+ :ELSE=>[:reduce, 66]},
2906
+ {:RPAREN=>[:state, 223],
2907
+ :LBRACK=>[:state, 109],
2908
+ :LPAREN=>[:state, 110],
2909
+ :PLUS=>[:state, 111],
2910
+ :MINUS=>[:state, 112],
2911
+ :STAR=>[:state, 113],
2912
+ :DIVIDE=>[:state, 114],
2913
+ :MOD=>[:state, 115],
2914
+ :LSHIFT=>[:state, 116],
2915
+ :RSHIFT=>[:state, 117],
2916
+ :DPLUS=>[:state, 118],
2917
+ :DMINUS=>[:state, 119],
2918
+ :LBRK=>[:state, 120],
2919
+ :RBRK=>[:state, 121],
2920
+ :COMP=>[:state, 122],
2921
+ :NCMP=>[:state, 123],
2922
+ :LAND=>[:state, 124],
2923
+ :AMBER=>[:state, 125],
2924
+ :LOR=>[:state, 126],
2925
+ :BOR=>[:state, 127]},
2926
+ {:RPAREN=>[:state, 224],
2927
+ :LBRACK=>[:state, 109],
2928
+ :LPAREN=>[:state, 110],
2929
+ :PLUS=>[:state, 111],
2930
+ :MINUS=>[:state, 112],
2931
+ :STAR=>[:state, 113],
2932
+ :DIVIDE=>[:state, 114],
2933
+ :MOD=>[:state, 115],
2934
+ :LSHIFT=>[:state, 116],
2935
+ :RSHIFT=>[:state, 117],
2936
+ :DPLUS=>[:state, 118],
2937
+ :DMINUS=>[:state, 119],
2938
+ :LBRK=>[:state, 120],
2939
+ :RBRK=>[:state, 121],
2940
+ :COMP=>[:state, 122],
2941
+ :NCMP=>[:state, 123],
2942
+ :LAND=>[:state, 124],
2943
+ :AMBER=>[:state, 125],
2944
+ :LOR=>[:state, 126],
2945
+ :BOR=>[:state, 127]},
2946
+ {:LPAREN=>[:state, 225]},
2947
+ {:RBRACE=>[:state, 226]},
2948
+ {:SEMICOLON=>[:state, 227]},
2949
+ {:LBRACK=>[:state, 109],
2950
+ :LPAREN=>[:state, 110],
2951
+ :PLUS=>[:state, 111],
2952
+ :MINUS=>[:state, 112],
2953
+ :STAR=>[:state, 113],
2954
+ :DIVIDE=>[:state, 114],
2955
+ :MOD=>[:state, 115],
2956
+ :LSHIFT=>[:state, 116],
2957
+ :RSHIFT=>[:state, 117],
2958
+ :DPLUS=>[:state, 118],
2959
+ :DMINUS=>[:state, 119],
2960
+ :LBRK=>[:state, 120],
2961
+ :RBRK=>[:state, 121],
2962
+ :COMP=>[:state, 122],
2963
+ :NCMP=>[:state, 123],
2964
+ :LAND=>[:state, 124],
2965
+ :AMBER=>[:state, 125],
2966
+ :LOR=>[:state, 126],
2967
+ :BOR=>[:state, 127],
2968
+ :SEMICOLON=>[:reduce, 133],
2969
+ :RPAREN=>[:reduce, 133]},
2970
+ {:"function.body.expression"=>[:state, 228],
2971
+ :"function.body.assignment"=>[:state, 44],
2972
+ :"function.body.reference"=>[:state, 45],
2973
+ :"function.body.call"=>[:state, 46],
2974
+ :"function.body.math"=>[:state, 47],
2975
+ :"function.body.literal"=>[:state, 48],
2976
+ :"function.body.logic"=>[:state, 49],
2977
+ :LPAREN=>[:state, 50],
2978
+ :CARET=>[:state, 59],
2979
+ :AMBER=>[:state, 60],
2980
+ :IDENTIFIER=>[:state, 43],
2981
+ :DMINUS=>[:state, 61],
2982
+ :DPLUS=>[:state, 62],
2983
+ :PLUS=>[:state, 63],
2984
+ :MINUS=>[:state, 64],
2985
+ :NUMBER=>[:state, 65],
2986
+ :FLOAT=>[:state, 66],
2987
+ :DOUBLE=>[:state, 67],
2988
+ :UNUMBER=>[:state, 68],
2989
+ :SNUMBER=>[:state, 69],
2990
+ :USNUMBER=>[:state, 70],
2991
+ :LNUMBER=>[:state, 71],
2992
+ :ULNUMBER=>[:state, 72],
2993
+ :LLNUMBER=>[:state, 73],
2994
+ :ULLNUMBER=>[:state, 74],
2995
+ :CHARACTER=>[:state, 75],
2996
+ :"function.body.string"=>[:state, 76],
2997
+ :LNOT=>[:state, 77],
2998
+ :BNOT=>[:state, 78],
2999
+ :STRING=>[:state, 86]},
3000
+ {:$end=>[:reduce, 31],
3001
+ :FUNCTION=>[:reduce, 31],
3002
+ :CLASS=>[:reduce, 31],
3003
+ :TYPEDEF=>[:reduce, 31],
3004
+ :HASH=>[:reduce, 31],
3005
+ :CARET=>[:reduce, 31],
3006
+ :SEMICOLON=>[:reduce, 31],
3007
+ :EQUALS=>[:reduce, 31],
3008
+ :RPAREN=>[:reduce, 31],
3009
+ :COMMA=>[:reduce, 31],
3010
+ :LBRACE=>[:reduce, 31]},
3011
+ {:RBRACE=>[:reduce, 35], :IDENTIFIER=>[:reduce, 35], :HASH=>[:reduce, 35]},
3012
+ {:$end=>[:reduce, 39],
3013
+ :FUNCTION=>[:reduce, 39],
3014
+ :CLASS=>[:reduce, 39],
3015
+ :TYPEDEF=>[:reduce, 39],
3016
+ :HASH=>[:reduce, 39],
3017
+ :CARET=>[:reduce, 39],
3018
+ :SEMICOLON=>[:reduce, 39],
3019
+ :EQUALS=>[:reduce, 39],
3020
+ :RPAREN=>[:reduce, 39],
3021
+ :COMMA=>[:reduce, 39],
3022
+ :LBRACE=>[:reduce, 39]},
3023
+ {:RBRACE=>[:reduce, 43], :IDENTIFIER=>[:reduce, 43], :HASH=>[:reduce, 43]},
3024
+ {:$end=>[:reduce, 142],
3025
+ :FUNCTION=>[:reduce, 142],
3026
+ :CLASS=>[:reduce, 142],
3027
+ :TYPEDEF=>[:reduce, 142],
3028
+ :HASH=>[:reduce, 142]},
3029
+ {:COLON=>[:state, 229]},
3030
+ {:RPAREN=>[:state, 230]},
3031
+ {:type=>[:state, 231],
3032
+ :"class.name"=>[:state, 10],
3033
+ :struct=>[:state, 11],
3034
+ :union=>[:state, 12],
3035
+ :IDENTIFIER=>[:state, 18],
3036
+ :STRUCT=>[:state, 19],
3037
+ :UNION=>[:state, 20]},
3038
+ {:RPAREN=>[:reduce, 15], :COMMA=>[:reduce, 15]},
3039
+ {:CARET=>[:state, 24], :RPAREN=>[:reduce, 17], :COMMA=>[:reduce, 17]},
3040
+ {:SEMICOLON=>[:state, 232], :CARET=>[:state, 24]},
3041
+ {:"function.arguments.maybe"=>[:state, 233],
3042
+ :"function.arguments"=>[:state, 93],
3043
+ :"function.argument"=>[:state, 94],
3044
+ :IDENTIFIER=>[:state, 95],
3045
+ :RPAREN=>[:reduce, 14]},
3046
+ {:SEMICOLON=>[:reduce, 72],
3047
+ :LBRACK=>[:reduce, 72],
3048
+ :LPAREN=>[:reduce, 72],
3049
+ :PLUS=>[:reduce, 72],
3050
+ :MINUS=>[:reduce, 72],
3051
+ :STAR=>[:reduce, 72],
3052
+ :DIVIDE=>[:reduce, 72],
3053
+ :MOD=>[:reduce, 72],
3054
+ :LSHIFT=>[:reduce, 72],
3055
+ :RSHIFT=>[:reduce, 72],
3056
+ :DPLUS=>[:reduce, 72],
3057
+ :DMINUS=>[:reduce, 72],
3058
+ :LBRK=>[:reduce, 72],
3059
+ :RBRK=>[:reduce, 72],
3060
+ :COMP=>[:reduce, 72],
3061
+ :NCMP=>[:reduce, 72],
3062
+ :LAND=>[:reduce, 72],
3063
+ :AMBER=>[:reduce, 72],
3064
+ :LOR=>[:reduce, 72],
3065
+ :BOR=>[:reduce, 72],
3066
+ :EQUALS=>[:reduce, 72],
3067
+ :RPAREN=>[:reduce, 72],
3068
+ :WHILE=>[:reduce, 72],
3069
+ :RBRACK=>[:reduce, 72],
3070
+ :COMMA=>[:reduce, 72],
3071
+ :ELSE=>[:reduce, 72]},
3072
+ {:SEMICOLON=>[:reduce, 74],
3073
+ :LBRACK=>[:reduce, 74],
3074
+ :LPAREN=>[:reduce, 74],
3075
+ :PLUS=>[:reduce, 74],
3076
+ :MINUS=>[:reduce, 74],
3077
+ :STAR=>[:reduce, 74],
3078
+ :DIVIDE=>[:reduce, 74],
3079
+ :MOD=>[:reduce, 74],
3080
+ :LSHIFT=>[:reduce, 74],
3081
+ :RSHIFT=>[:reduce, 74],
3082
+ :DPLUS=>[:reduce, 74],
3083
+ :DMINUS=>[:reduce, 74],
3084
+ :LBRK=>[:reduce, 74],
3085
+ :RBRK=>[:reduce, 74],
3086
+ :COMP=>[:reduce, 74],
3087
+ :NCMP=>[:reduce, 74],
3088
+ :LAND=>[:reduce, 74],
3089
+ :AMBER=>[:reduce, 74],
3090
+ :LOR=>[:reduce, 74],
3091
+ :BOR=>[:reduce, 74],
3092
+ :RPAREN=>[:reduce, 74],
3093
+ :EQUALS=>[:reduce, 74],
3094
+ :WHILE=>[:reduce, 74],
3095
+ :RBRACK=>[:reduce, 74],
3096
+ :COMMA=>[:reduce, 74],
3097
+ :ELSE=>[:reduce, 74]},
3098
+ {:"function.body.call.argument"=>[:state, 234],
3099
+ :"function.body.expression"=>[:state, 177],
3100
+ :"function.body.assignment"=>[:state, 44],
3101
+ :"function.body.reference"=>[:state, 45],
3102
+ :"function.body.call"=>[:state, 46],
3103
+ :"function.body.math"=>[:state, 47],
3104
+ :"function.body.literal"=>[:state, 48],
3105
+ :"function.body.logic"=>[:state, 49],
3106
+ :LPAREN=>[:state, 50],
3107
+ :CARET=>[:state, 59],
3108
+ :AMBER=>[:state, 60],
3109
+ :IDENTIFIER=>[:state, 43],
3110
+ :DMINUS=>[:state, 61],
3111
+ :DPLUS=>[:state, 62],
3112
+ :PLUS=>[:state, 63],
3113
+ :MINUS=>[:state, 64],
3114
+ :NUMBER=>[:state, 65],
3115
+ :FLOAT=>[:state, 66],
3116
+ :DOUBLE=>[:state, 67],
3117
+ :UNUMBER=>[:state, 68],
3118
+ :SNUMBER=>[:state, 69],
3119
+ :USNUMBER=>[:state, 70],
3120
+ :LNUMBER=>[:state, 71],
3121
+ :ULNUMBER=>[:state, 72],
3122
+ :LLNUMBER=>[:state, 73],
3123
+ :ULLNUMBER=>[:state, 74],
3124
+ :CHARACTER=>[:state, 75],
3125
+ :"function.body.string"=>[:state, 76],
3126
+ :LNOT=>[:state, 77],
3127
+ :BNOT=>[:state, 78],
3128
+ :STRING=>[:state, 86]},
3129
+ {:LBRACK=>[:state, 109],
3130
+ :LPAREN=>[:state, 110],
3131
+ :PLUS=>[:state, 111],
3132
+ :MINUS=>[:state, 112],
3133
+ :STAR=>[:state, 113],
3134
+ :DIVIDE=>[:state, 114],
3135
+ :MOD=>[:state, 115],
3136
+ :LSHIFT=>[:state, 116],
3137
+ :RSHIFT=>[:state, 117],
3138
+ :DPLUS=>[:state, 118],
3139
+ :DMINUS=>[:state, 119],
3140
+ :LBRK=>[:reduce, 106],
3141
+ :RBRK=>[:reduce, 106],
3142
+ :COMP=>[:reduce, 106],
3143
+ :NCMP=>[:reduce, 106],
3144
+ :LAND=>[:reduce, 106],
3145
+ :AMBER=>[:reduce, 106],
3146
+ :LOR=>[:reduce, 106],
3147
+ :BOR=>[:reduce, 106],
3148
+ :SEMICOLON=>[:reduce, 106],
3149
+ :RPAREN=>[:reduce, 106],
3150
+ :WHILE=>[:reduce, 106],
3151
+ :RBRACK=>[:reduce, 106],
3152
+ :COMMA=>[:reduce, 106],
3153
+ :ELSE=>[:reduce, 106]},
3154
+ {:LBRACK=>[:state, 109],
3155
+ :LPAREN=>[:state, 110],
3156
+ :PLUS=>[:state, 111],
3157
+ :MINUS=>[:state, 112],
3158
+ :STAR=>[:state, 113],
3159
+ :DIVIDE=>[:state, 114],
3160
+ :MOD=>[:state, 115],
3161
+ :LSHIFT=>[:state, 116],
3162
+ :RSHIFT=>[:state, 117],
3163
+ :DPLUS=>[:state, 118],
3164
+ :DMINUS=>[:state, 119],
3165
+ :LBRK=>[:reduce, 107],
3166
+ :RBRK=>[:reduce, 107],
3167
+ :COMP=>[:reduce, 107],
3168
+ :NCMP=>[:reduce, 107],
3169
+ :LAND=>[:reduce, 107],
3170
+ :AMBER=>[:reduce, 107],
3171
+ :LOR=>[:reduce, 107],
3172
+ :BOR=>[:reduce, 107],
3173
+ :SEMICOLON=>[:reduce, 107],
3174
+ :RPAREN=>[:reduce, 107],
3175
+ :WHILE=>[:reduce, 107],
3176
+ :RBRACK=>[:reduce, 107],
3177
+ :COMMA=>[:reduce, 107],
3178
+ :ELSE=>[:reduce, 107]},
3179
+ {:"function.body.expression"=>[:state, 235],
3180
+ :"function.body.assignment"=>[:state, 44],
3181
+ :"function.body.reference"=>[:state, 45],
3182
+ :"function.body.call"=>[:state, 46],
3183
+ :"function.body.math"=>[:state, 47],
3184
+ :"function.body.literal"=>[:state, 48],
3185
+ :"function.body.logic"=>[:state, 49],
3186
+ :LPAREN=>[:state, 50],
3187
+ :CARET=>[:state, 59],
3188
+ :AMBER=>[:state, 60],
3189
+ :IDENTIFIER=>[:state, 43],
3190
+ :DMINUS=>[:state, 61],
3191
+ :DPLUS=>[:state, 62],
3192
+ :PLUS=>[:state, 63],
3193
+ :MINUS=>[:state, 64],
3194
+ :NUMBER=>[:state, 65],
3195
+ :FLOAT=>[:state, 66],
3196
+ :DOUBLE=>[:state, 67],
3197
+ :UNUMBER=>[:state, 68],
3198
+ :SNUMBER=>[:state, 69],
3199
+ :USNUMBER=>[:state, 70],
3200
+ :LNUMBER=>[:state, 71],
3201
+ :ULNUMBER=>[:state, 72],
3202
+ :LLNUMBER=>[:state, 73],
3203
+ :ULLNUMBER=>[:state, 74],
3204
+ :CHARACTER=>[:state, 75],
3205
+ :"function.body.string"=>[:state, 76],
3206
+ :LNOT=>[:state, 77],
3207
+ :BNOT=>[:state, 78],
3208
+ :STRING=>[:state, 86]},
3209
+ {:"control.block"=>[:state, 236],
3210
+ :"function.body.expression"=>[:state, 144],
3211
+ :LBRACE=>[:state, 145],
3212
+ :"function.body.assignment"=>[:state, 44],
3213
+ :"function.body.reference"=>[:state, 45],
3214
+ :"function.body.call"=>[:state, 46],
3215
+ :"function.body.math"=>[:state, 47],
3216
+ :"function.body.literal"=>[:state, 48],
3217
+ :"function.body.logic"=>[:state, 49],
3218
+ :LPAREN=>[:state, 50],
3219
+ :CARET=>[:state, 59],
3220
+ :AMBER=>[:state, 60],
3221
+ :IDENTIFIER=>[:state, 43],
3222
+ :DMINUS=>[:state, 61],
3223
+ :DPLUS=>[:state, 62],
3224
+ :PLUS=>[:state, 63],
3225
+ :MINUS=>[:state, 64],
3226
+ :NUMBER=>[:state, 65],
3227
+ :FLOAT=>[:state, 66],
3228
+ :DOUBLE=>[:state, 67],
3229
+ :UNUMBER=>[:state, 68],
3230
+ :SNUMBER=>[:state, 69],
3231
+ :USNUMBER=>[:state, 70],
3232
+ :LNUMBER=>[:state, 71],
3233
+ :ULNUMBER=>[:state, 72],
3234
+ :LLNUMBER=>[:state, 73],
3235
+ :ULLNUMBER=>[:state, 74],
3236
+ :CHARACTER=>[:state, 75],
3237
+ :"function.body.string"=>[:state, 76],
3238
+ :LNOT=>[:state, 77],
3239
+ :BNOT=>[:state, 78],
3240
+ :STRING=>[:state, 86]},
3241
+ {:"control.block"=>[:state, 237],
3242
+ :"function.body.expression"=>[:state, 144],
3243
+ :LBRACE=>[:state, 145],
3244
+ :"function.body.assignment"=>[:state, 44],
3245
+ :"function.body.reference"=>[:state, 45],
3246
+ :"function.body.call"=>[:state, 46],
3247
+ :"function.body.math"=>[:state, 47],
3248
+ :"function.body.literal"=>[:state, 48],
3249
+ :"function.body.logic"=>[:state, 49],
3250
+ :LPAREN=>[:state, 50],
3251
+ :CARET=>[:state, 59],
3252
+ :AMBER=>[:state, 60],
3253
+ :IDENTIFIER=>[:state, 43],
3254
+ :DMINUS=>[:state, 61],
3255
+ :DPLUS=>[:state, 62],
3256
+ :PLUS=>[:state, 63],
3257
+ :MINUS=>[:state, 64],
3258
+ :NUMBER=>[:state, 65],
3259
+ :FLOAT=>[:state, 66],
3260
+ :DOUBLE=>[:state, 67],
3261
+ :UNUMBER=>[:state, 68],
3262
+ :SNUMBER=>[:state, 69],
3263
+ :USNUMBER=>[:state, 70],
3264
+ :LNUMBER=>[:state, 71],
3265
+ :ULNUMBER=>[:state, 72],
3266
+ :LLNUMBER=>[:state, 73],
3267
+ :ULLNUMBER=>[:state, 74],
3268
+ :CHARACTER=>[:state, 75],
3269
+ :"function.body.string"=>[:state, 76],
3270
+ :LNOT=>[:state, 77],
3271
+ :BNOT=>[:state, 78],
3272
+ :STRING=>[:state, 86]},
3273
+ {:"function.body.expression"=>[:state, 238],
3274
+ :"function.body.assignment"=>[:state, 44],
3275
+ :"function.body.reference"=>[:state, 45],
3276
+ :"function.body.call"=>[:state, 46],
3277
+ :"function.body.math"=>[:state, 47],
3278
+ :"function.body.literal"=>[:state, 48],
3279
+ :"function.body.logic"=>[:state, 49],
3280
+ :LPAREN=>[:state, 50],
3281
+ :CARET=>[:state, 59],
3282
+ :AMBER=>[:state, 60],
3283
+ :IDENTIFIER=>[:state, 43],
3284
+ :DMINUS=>[:state, 61],
3285
+ :DPLUS=>[:state, 62],
3286
+ :PLUS=>[:state, 63],
3287
+ :MINUS=>[:state, 64],
3288
+ :NUMBER=>[:state, 65],
3289
+ :FLOAT=>[:state, 66],
3290
+ :DOUBLE=>[:state, 67],
3291
+ :UNUMBER=>[:state, 68],
3292
+ :SNUMBER=>[:state, 69],
3293
+ :USNUMBER=>[:state, 70],
3294
+ :LNUMBER=>[:state, 71],
3295
+ :ULNUMBER=>[:state, 72],
3296
+ :LLNUMBER=>[:state, 73],
3297
+ :ULLNUMBER=>[:state, 74],
3298
+ :CHARACTER=>[:state, 75],
3299
+ :"function.body.string"=>[:state, 76],
3300
+ :LNOT=>[:state, 77],
3301
+ :BNOT=>[:state, 78],
3302
+ :STRING=>[:state, 86]},
3303
+ {:WHILE=>[:reduce, 139], :ELSE=>[:reduce, 139], :SEMICOLON=>[:reduce, 139]},
3304
+ {:"function.body.expression"=>[:state, 239],
3305
+ :"function.body.assignment"=>[:state, 44],
3306
+ :"function.body.reference"=>[:state, 45],
3307
+ :"function.body.call"=>[:state, 46],
3308
+ :"function.body.math"=>[:state, 47],
3309
+ :"function.body.literal"=>[:state, 48],
3310
+ :"function.body.logic"=>[:state, 49],
3311
+ :LPAREN=>[:state, 50],
3312
+ :CARET=>[:state, 59],
3313
+ :AMBER=>[:state, 60],
3314
+ :IDENTIFIER=>[:state, 43],
3315
+ :DMINUS=>[:state, 61],
3316
+ :DPLUS=>[:state, 62],
3317
+ :PLUS=>[:state, 63],
3318
+ :MINUS=>[:state, 64],
3319
+ :NUMBER=>[:state, 65],
3320
+ :FLOAT=>[:state, 66],
3321
+ :DOUBLE=>[:state, 67],
3322
+ :UNUMBER=>[:state, 68],
3323
+ :SNUMBER=>[:state, 69],
3324
+ :USNUMBER=>[:state, 70],
3325
+ :LNUMBER=>[:state, 71],
3326
+ :ULNUMBER=>[:state, 72],
3327
+ :LLNUMBER=>[:state, 73],
3328
+ :ULLNUMBER=>[:state, 74],
3329
+ :CHARACTER=>[:state, 75],
3330
+ :"function.body.string"=>[:state, 76],
3331
+ :LNOT=>[:state, 77],
3332
+ :BNOT=>[:state, 78],
3333
+ :STRING=>[:state, 86]},
3334
+ {:LBRACK=>[:state, 109],
3335
+ :LPAREN=>[:state, 110],
3336
+ :PLUS=>[:state, 111],
3337
+ :MINUS=>[:state, 112],
3338
+ :STAR=>[:state, 113],
3339
+ :DIVIDE=>[:state, 114],
3340
+ :MOD=>[:state, 115],
3341
+ :LSHIFT=>[:state, 116],
3342
+ :RSHIFT=>[:state, 117],
3343
+ :DPLUS=>[:state, 118],
3344
+ :DMINUS=>[:state, 119],
3345
+ :LBRK=>[:state, 120],
3346
+ :RBRK=>[:state, 121],
3347
+ :COMP=>[:state, 122],
3348
+ :NCMP=>[:state, 123],
3349
+ :LAND=>[:state, 124],
3350
+ :AMBER=>[:state, 125],
3351
+ :LOR=>[:state, 126],
3352
+ :BOR=>[:state, 127],
3353
+ :SEMICOLON=>[:reduce, 135]},
3354
+ {:type=>[:state, 240],
3355
+ :"class.name"=>[:state, 10],
3356
+ :struct=>[:state, 11],
3357
+ :union=>[:state, 12],
3358
+ :IDENTIFIER=>[:state, 18],
3359
+ :STRUCT=>[:state, 19],
3360
+ :UNION=>[:state, 20]},
3361
+ {:COLON=>[:state, 241]},
3362
+ {:LBRACE=>[:state, 242], :CARET=>[:state, 24]},
3363
+ {:RBRACE=>[:reduce, 29],
3364
+ :IDENTIFIER=>[:reduce, 29],
3365
+ :FUNC=>[:reduce, 29],
3366
+ :HASH=>[:reduce, 29]},
3367
+ {:RPAREN=>[:state, 243]},
3368
+ {:RPAREN=>[:reduce, 116], :COMMA=>[:reduce, 116]},
3369
+ {:LBRACK=>[:state, 109],
3370
+ :LPAREN=>[:state, 110],
3371
+ :PLUS=>[:state, 111],
3372
+ :MINUS=>[:state, 112],
3373
+ :STAR=>[:state, 113],
3374
+ :DIVIDE=>[:state, 114],
3375
+ :MOD=>[:state, 115],
3376
+ :LSHIFT=>[:state, 116],
3377
+ :RSHIFT=>[:state, 117],
3378
+ :DPLUS=>[:state, 118],
3379
+ :DMINUS=>[:state, 119],
3380
+ :LBRK=>[:state, 120],
3381
+ :RBRK=>[:state, 121],
3382
+ :COMP=>[:state, 122],
3383
+ :NCMP=>[:state, 123],
3384
+ :LAND=>[:state, 124],
3385
+ :AMBER=>[:state, 125],
3386
+ :LOR=>[:state, 126],
3387
+ :BOR=>[:state, 127],
3388
+ :SEMICOLON=>[:reduce, 68]},
3389
+ {:"control.if.cont"=>[:state, 244], :ELSE=>[:state, 245]},
3390
+ {:SEMICOLON=>[:reduce, 130]},
3391
+ {:LBRACK=>[:state, 109],
3392
+ :LPAREN=>[:state, 110],
3393
+ :PLUS=>[:state, 111],
3394
+ :MINUS=>[:state, 112],
3395
+ :STAR=>[:state, 113],
3396
+ :DIVIDE=>[:state, 114],
3397
+ :MOD=>[:state, 115],
3398
+ :LSHIFT=>[:state, 116],
3399
+ :RSHIFT=>[:state, 117],
3400
+ :DPLUS=>[:state, 118],
3401
+ :DMINUS=>[:state, 119],
3402
+ :LBRK=>[:state, 120],
3403
+ :RBRK=>[:state, 121],
3404
+ :COMP=>[:state, 122],
3405
+ :NCMP=>[:state, 123],
3406
+ :LAND=>[:state, 124],
3407
+ :AMBER=>[:state, 125],
3408
+ :LOR=>[:state, 126],
3409
+ :BOR=>[:state, 127],
3410
+ :SEMICOLON=>[:reduce, 131]},
3411
+ {:SEMICOLON=>[:state, 246],
3412
+ :LBRACK=>[:state, 109],
3413
+ :LPAREN=>[:state, 110],
3414
+ :PLUS=>[:state, 111],
3415
+ :MINUS=>[:state, 112],
3416
+ :STAR=>[:state, 113],
3417
+ :DIVIDE=>[:state, 114],
3418
+ :MOD=>[:state, 115],
3419
+ :LSHIFT=>[:state, 116],
3420
+ :RSHIFT=>[:state, 117],
3421
+ :DPLUS=>[:state, 118],
3422
+ :DMINUS=>[:state, 119],
3423
+ :LBRK=>[:state, 120],
3424
+ :RBRK=>[:state, 121],
3425
+ :COMP=>[:state, 122],
3426
+ :NCMP=>[:state, 123],
3427
+ :LAND=>[:state, 124],
3428
+ :AMBER=>[:state, 125],
3429
+ :LOR=>[:state, 126],
3430
+ :BOR=>[:state, 127]},
3431
+ {:SEMICOLON=>[:state, 247], :CARET=>[:state, 24]},
3432
+ {:type=>[:state, 248],
3433
+ :"class.name"=>[:state, 10],
3434
+ :struct=>[:state, 11],
3435
+ :union=>[:state, 12],
3436
+ :IDENTIFIER=>[:state, 18],
3437
+ :STRUCT=>[:state, 19],
3438
+ :UNION=>[:state, 20]},
3439
+ {:"function.body"=>[:state, 249],
3440
+ :"function.body.parts.maybe"=>[:state, 36],
3441
+ :"function.body.parts"=>[:state, 37],
3442
+ :"function.body.part"=>[:state, 38],
3443
+ :"function.body.declare"=>[:state, 39],
3444
+ :"function.body.expression"=>[:state, 40],
3445
+ :"function.body.control"=>[:state, 41],
3446
+ :preprocessor=>[:state, 42],
3447
+ :IDENTIFIER=>[:state, 43],
3448
+ :"function.body.assignment"=>[:state, 44],
3449
+ :"function.body.reference"=>[:state, 45],
3450
+ :"function.body.call"=>[:state, 46],
3451
+ :"function.body.math"=>[:state, 47],
3452
+ :"function.body.literal"=>[:state, 48],
3453
+ :"function.body.logic"=>[:state, 49],
3454
+ :LPAREN=>[:state, 50],
3455
+ :"control.if"=>[:state, 51],
3456
+ :"control.while"=>[:state, 52],
3457
+ :"control.for"=>[:state, 53],
3458
+ :"control.goto"=>[:state, 54],
3459
+ :"control.label"=>[:state, 55],
3460
+ :"control.return"=>[:state, 56],
3461
+ :CONTINUE=>[:state, 57],
3462
+ :BREAK=>[:state, 58],
3463
+ :HASH=>[:state, 17],
3464
+ :CARET=>[:state, 59],
3465
+ :AMBER=>[:state, 60],
3466
+ :DMINUS=>[:state, 61],
3467
+ :DPLUS=>[:state, 62],
3468
+ :PLUS=>[:state, 63],
3469
+ :MINUS=>[:state, 64],
3470
+ :NUMBER=>[:state, 65],
3471
+ :FLOAT=>[:state, 66],
3472
+ :DOUBLE=>[:state, 67],
3473
+ :UNUMBER=>[:state, 68],
3474
+ :SNUMBER=>[:state, 69],
3475
+ :USNUMBER=>[:state, 70],
3476
+ :LNUMBER=>[:state, 71],
3477
+ :ULNUMBER=>[:state, 72],
3478
+ :LLNUMBER=>[:state, 73],
3479
+ :ULLNUMBER=>[:state, 74],
3480
+ :CHARACTER=>[:state, 75],
3481
+ :"function.body.string"=>[:state, 76],
3482
+ :LNOT=>[:state, 77],
3483
+ :BNOT=>[:state, 78],
3484
+ :IF=>[:state, 79],
3485
+ :WHILE=>[:state, 80],
3486
+ :DO=>[:state, 81],
3487
+ :FOR=>[:state, 82],
3488
+ :GOTO=>[:state, 83],
3489
+ :LABEL=>[:state, 84],
3490
+ :RETURN=>[:state, 85],
3491
+ :STRING=>[:state, 86],
3492
+ :RBRACE=>[:reduce, 53]},
3493
+ {:COLON=>[:state, 250]},
3494
+ {:SEMICOLON=>[:reduce, 127]},
3495
+ {:IF=>[:state, 251],
3496
+ :"control.block"=>[:state, 252],
3497
+ :"function.body.expression"=>[:state, 144],
3498
+ :LBRACE=>[:state, 145],
3499
+ :"function.body.assignment"=>[:state, 44],
3500
+ :"function.body.reference"=>[:state, 45],
3501
+ :"function.body.call"=>[:state, 46],
3502
+ :"function.body.math"=>[:state, 47],
3503
+ :"function.body.literal"=>[:state, 48],
3504
+ :"function.body.logic"=>[:state, 49],
3505
+ :LPAREN=>[:state, 50],
3506
+ :CARET=>[:state, 59],
3507
+ :AMBER=>[:state, 60],
3508
+ :IDENTIFIER=>[:state, 43],
3509
+ :DMINUS=>[:state, 61],
3510
+ :DPLUS=>[:state, 62],
3511
+ :PLUS=>[:state, 63],
3512
+ :MINUS=>[:state, 64],
3513
+ :NUMBER=>[:state, 65],
3514
+ :FLOAT=>[:state, 66],
3515
+ :DOUBLE=>[:state, 67],
3516
+ :UNUMBER=>[:state, 68],
3517
+ :SNUMBER=>[:state, 69],
3518
+ :USNUMBER=>[:state, 70],
3519
+ :LNUMBER=>[:state, 71],
3520
+ :ULNUMBER=>[:state, 72],
3521
+ :LLNUMBER=>[:state, 73],
3522
+ :ULLNUMBER=>[:state, 74],
3523
+ :CHARACTER=>[:state, 75],
3524
+ :"function.body.string"=>[:state, 76],
3525
+ :LNOT=>[:state, 77],
3526
+ :BNOT=>[:state, 78],
3527
+ :STRING=>[:state, 86]},
3528
+ {:"control.for.compound"=>[:state, 253],
3529
+ :"function.body.expression"=>[:state, 203],
3530
+ :"function.body.assignment"=>[:state, 44],
3531
+ :"function.body.reference"=>[:state, 45],
3532
+ :"function.body.call"=>[:state, 46],
3533
+ :"function.body.math"=>[:state, 47],
3534
+ :"function.body.literal"=>[:state, 48],
3535
+ :"function.body.logic"=>[:state, 49],
3536
+ :LPAREN=>[:state, 50],
3537
+ :CARET=>[:state, 59],
3538
+ :AMBER=>[:state, 60],
3539
+ :IDENTIFIER=>[:state, 43],
3540
+ :DMINUS=>[:state, 61],
3541
+ :DPLUS=>[:state, 62],
3542
+ :PLUS=>[:state, 63],
3543
+ :MINUS=>[:state, 64],
3544
+ :NUMBER=>[:state, 65],
3545
+ :FLOAT=>[:state, 66],
3546
+ :DOUBLE=>[:state, 67],
3547
+ :UNUMBER=>[:state, 68],
3548
+ :SNUMBER=>[:state, 69],
3549
+ :USNUMBER=>[:state, 70],
3550
+ :LNUMBER=>[:state, 71],
3551
+ :ULNUMBER=>[:state, 72],
3552
+ :LLNUMBER=>[:state, 73],
3553
+ :ULLNUMBER=>[:state, 74],
3554
+ :CHARACTER=>[:state, 75],
3555
+ :"function.body.string"=>[:state, 76],
3556
+ :LNOT=>[:state, 77],
3557
+ :BNOT=>[:state, 78],
3558
+ :STRING=>[:state, 86]},
3559
+ {:$end=>[:reduce, 143],
3560
+ :FUNCTION=>[:reduce, 143],
3561
+ :CLASS=>[:reduce, 143],
3562
+ :TYPEDEF=>[:reduce, 143],
3563
+ :HASH=>[:reduce, 143]},
3564
+ {:SEMICOLON=>[:state, 254], :CARET=>[:state, 24]},
3565
+ {:RBRACE=>[:state, 255]},
3566
+ {:type=>[:state, 256],
3567
+ :"class.name"=>[:state, 10],
3568
+ :struct=>[:state, 11],
3569
+ :union=>[:state, 12],
3570
+ :IDENTIFIER=>[:state, 18],
3571
+ :STRUCT=>[:state, 19],
3572
+ :UNION=>[:state, 20]},
3573
+ {:LPAREN=>[:state, 257]},
3574
+ {:SEMICOLON=>[:reduce, 129]},
3575
+ {:RPAREN=>[:state, 258]},
3576
+ {:$end=>[:reduce, 144],
3577
+ :FUNCTION=>[:reduce, 144],
3578
+ :CLASS=>[:reduce, 144],
3579
+ :TYPEDEF=>[:reduce, 144],
3580
+ :HASH=>[:reduce, 144]},
3581
+ {:$end=>[:reduce, 12],
3582
+ :FUNCTION=>[:reduce, 12],
3583
+ :CLASS=>[:reduce, 12],
3584
+ :TYPEDEF=>[:reduce, 12],
3585
+ :HASH=>[:reduce, 12]},
3586
+ {:LBRACE=>[:state, 259], :CARET=>[:state, 24]},
3587
+ {:"function.body.expression"=>[:state, 260],
3588
+ :"function.body.assignment"=>[:state, 44],
3589
+ :"function.body.reference"=>[:state, 45],
3590
+ :"function.body.call"=>[:state, 46],
3591
+ :"function.body.math"=>[:state, 47],
3592
+ :"function.body.literal"=>[:state, 48],
3593
+ :"function.body.logic"=>[:state, 49],
3594
+ :LPAREN=>[:state, 50],
3595
+ :CARET=>[:state, 59],
3596
+ :AMBER=>[:state, 60],
3597
+ :IDENTIFIER=>[:state, 43],
3598
+ :DMINUS=>[:state, 61],
3599
+ :DPLUS=>[:state, 62],
3600
+ :PLUS=>[:state, 63],
3601
+ :MINUS=>[:state, 64],
3602
+ :NUMBER=>[:state, 65],
3603
+ :FLOAT=>[:state, 66],
3604
+ :DOUBLE=>[:state, 67],
3605
+ :UNUMBER=>[:state, 68],
3606
+ :SNUMBER=>[:state, 69],
3607
+ :USNUMBER=>[:state, 70],
3608
+ :LNUMBER=>[:state, 71],
3609
+ :ULNUMBER=>[:state, 72],
3610
+ :LLNUMBER=>[:state, 73],
3611
+ :ULLNUMBER=>[:state, 74],
3612
+ :CHARACTER=>[:state, 75],
3613
+ :"function.body.string"=>[:state, 76],
3614
+ :LNOT=>[:state, 77],
3615
+ :BNOT=>[:state, 78],
3616
+ :STRING=>[:state, 86]},
3617
+ {:"control.block"=>[:state, 261],
3618
+ :"function.body.expression"=>[:state, 144],
3619
+ :LBRACE=>[:state, 145],
3620
+ :"function.body.assignment"=>[:state, 44],
3621
+ :"function.body.reference"=>[:state, 45],
3622
+ :"function.body.call"=>[:state, 46],
3623
+ :"function.body.math"=>[:state, 47],
3624
+ :"function.body.literal"=>[:state, 48],
3625
+ :"function.body.logic"=>[:state, 49],
3626
+ :LPAREN=>[:state, 50],
3627
+ :CARET=>[:state, 59],
3628
+ :AMBER=>[:state, 60],
3629
+ :IDENTIFIER=>[:state, 43],
3630
+ :DMINUS=>[:state, 61],
3631
+ :DPLUS=>[:state, 62],
3632
+ :PLUS=>[:state, 63],
3633
+ :MINUS=>[:state, 64],
3634
+ :NUMBER=>[:state, 65],
3635
+ :FLOAT=>[:state, 66],
3636
+ :DOUBLE=>[:state, 67],
3637
+ :UNUMBER=>[:state, 68],
3638
+ :SNUMBER=>[:state, 69],
3639
+ :USNUMBER=>[:state, 70],
3640
+ :LNUMBER=>[:state, 71],
3641
+ :ULNUMBER=>[:state, 72],
3642
+ :LLNUMBER=>[:state, 73],
3643
+ :ULLNUMBER=>[:state, 74],
3644
+ :CHARACTER=>[:state, 75],
3645
+ :"function.body.string"=>[:state, 76],
3646
+ :LNOT=>[:state, 77],
3647
+ :BNOT=>[:state, 78],
3648
+ :STRING=>[:state, 86]},
3649
+ {:"function.body"=>[:state, 262],
3650
+ :"function.body.parts.maybe"=>[:state, 36],
3651
+ :"function.body.parts"=>[:state, 37],
3652
+ :"function.body.part"=>[:state, 38],
3653
+ :"function.body.declare"=>[:state, 39],
3654
+ :"function.body.expression"=>[:state, 40],
3655
+ :"function.body.control"=>[:state, 41],
3656
+ :preprocessor=>[:state, 42],
3657
+ :IDENTIFIER=>[:state, 43],
3658
+ :"function.body.assignment"=>[:state, 44],
3659
+ :"function.body.reference"=>[:state, 45],
3660
+ :"function.body.call"=>[:state, 46],
3661
+ :"function.body.math"=>[:state, 47],
3662
+ :"function.body.literal"=>[:state, 48],
3663
+ :"function.body.logic"=>[:state, 49],
3664
+ :LPAREN=>[:state, 50],
3665
+ :"control.if"=>[:state, 51],
3666
+ :"control.while"=>[:state, 52],
3667
+ :"control.for"=>[:state, 53],
3668
+ :"control.goto"=>[:state, 54],
3669
+ :"control.label"=>[:state, 55],
3670
+ :"control.return"=>[:state, 56],
3671
+ :CONTINUE=>[:state, 57],
3672
+ :BREAK=>[:state, 58],
3673
+ :HASH=>[:state, 17],
3674
+ :CARET=>[:state, 59],
3675
+ :AMBER=>[:state, 60],
3676
+ :DMINUS=>[:state, 61],
3677
+ :DPLUS=>[:state, 62],
3678
+ :PLUS=>[:state, 63],
3679
+ :MINUS=>[:state, 64],
3680
+ :NUMBER=>[:state, 65],
3681
+ :FLOAT=>[:state, 66],
3682
+ :DOUBLE=>[:state, 67],
3683
+ :UNUMBER=>[:state, 68],
3684
+ :SNUMBER=>[:state, 69],
3685
+ :USNUMBER=>[:state, 70],
3686
+ :LNUMBER=>[:state, 71],
3687
+ :ULNUMBER=>[:state, 72],
3688
+ :LLNUMBER=>[:state, 73],
3689
+ :ULLNUMBER=>[:state, 74],
3690
+ :CHARACTER=>[:state, 75],
3691
+ :"function.body.string"=>[:state, 76],
3692
+ :LNOT=>[:state, 77],
3693
+ :BNOT=>[:state, 78],
3694
+ :IF=>[:state, 79],
3695
+ :WHILE=>[:state, 80],
3696
+ :DO=>[:state, 81],
3697
+ :FOR=>[:state, 82],
3698
+ :GOTO=>[:state, 83],
3699
+ :LABEL=>[:state, 84],
3700
+ :RETURN=>[:state, 85],
3701
+ :STRING=>[:state, 86],
3702
+ :RBRACE=>[:reduce, 53]},
3703
+ {:RPAREN=>[:state, 263],
3704
+ :LBRACK=>[:state, 109],
3705
+ :LPAREN=>[:state, 110],
3706
+ :PLUS=>[:state, 111],
3707
+ :MINUS=>[:state, 112],
3708
+ :STAR=>[:state, 113],
3709
+ :DIVIDE=>[:state, 114],
3710
+ :MOD=>[:state, 115],
3711
+ :LSHIFT=>[:state, 116],
3712
+ :RSHIFT=>[:state, 117],
3713
+ :DPLUS=>[:state, 118],
3714
+ :DMINUS=>[:state, 119],
3715
+ :LBRK=>[:state, 120],
3716
+ :RBRK=>[:state, 121],
3717
+ :COMP=>[:state, 122],
3718
+ :NCMP=>[:state, 123],
3719
+ :LAND=>[:state, 124],
3720
+ :AMBER=>[:state, 125],
3721
+ :LOR=>[:state, 126],
3722
+ :BOR=>[:state, 127]},
3723
+ {:SEMICOLON=>[:reduce, 132]},
3724
+ {:RBRACE=>[:state, 264]},
3725
+ {:"control.block"=>[:state, 265],
3726
+ :"function.body.expression"=>[:state, 144],
3727
+ :LBRACE=>[:state, 145],
3728
+ :"function.body.assignment"=>[:state, 44],
3729
+ :"function.body.reference"=>[:state, 45],
3730
+ :"function.body.call"=>[:state, 46],
3731
+ :"function.body.math"=>[:state, 47],
3732
+ :"function.body.literal"=>[:state, 48],
3733
+ :"function.body.logic"=>[:state, 49],
3734
+ :LPAREN=>[:state, 50],
3735
+ :CARET=>[:state, 59],
3736
+ :AMBER=>[:state, 60],
3737
+ :IDENTIFIER=>[:state, 43],
3738
+ :DMINUS=>[:state, 61],
3739
+ :DPLUS=>[:state, 62],
3740
+ :PLUS=>[:state, 63],
3741
+ :MINUS=>[:state, 64],
3742
+ :NUMBER=>[:state, 65],
3743
+ :FLOAT=>[:state, 66],
3744
+ :DOUBLE=>[:state, 67],
3745
+ :UNUMBER=>[:state, 68],
3746
+ :SNUMBER=>[:state, 69],
3747
+ :USNUMBER=>[:state, 70],
3748
+ :LNUMBER=>[:state, 71],
3749
+ :ULNUMBER=>[:state, 72],
3750
+ :LLNUMBER=>[:state, 73],
3751
+ :ULLNUMBER=>[:state, 74],
3752
+ :CHARACTER=>[:state, 75],
3753
+ :"function.body.string"=>[:state, 76],
3754
+ :LNOT=>[:state, 77],
3755
+ :BNOT=>[:state, 78],
3756
+ :STRING=>[:state, 86]},
3757
+ {:RBRACE=>[:reduce, 30],
3758
+ :IDENTIFIER=>[:reduce, 30],
3759
+ :FUNC=>[:reduce, 30],
3760
+ :HASH=>[:reduce, 30]},
3761
+ {:"control.if.cont"=>[:state, 266], :ELSE=>[:state, 245]},
3762
+ {:SEMICOLON=>[:reduce, 128]}]
3763
+ .freeze
3764
+
3765
+ # The default action that is taken for most reductions.
3766
+ #
3767
+ # @return [Proc]
3768
+ DEFAULT_PROC = proc { |_| _ }
3769
+ # A list of all of the productions. Only includes the left-hand side,
3770
+ # the number of tokens on the right-hand side, and the block to call
3771
+ # on reduction.
3772
+ #
3773
+ # @return [Array<Array<(Symbol, Numeric, Proc)>>]
3774
+ PRODUCTIONS = [[:$start, 2, DEFAULT_PROC],
3775
+ [:body, 1, proc { |a| [:root, a] }],
3776
+ [:preprocessor, 4, proc { |_, a, b, _| [:pre, a, b] }],
3777
+ [:"parts.maybe", 1, DEFAULT_PROC],
3778
+ [:"parts.maybe", 0, DEFAULT_PROC],
3779
+ [:parts, 2, proc { |a, b| a << b }],
3780
+ [:parts, 1, proc { |a| [a] }],
3781
+ [:parts, 1, proc { |a| [a] }],
3782
+ [:part, 1, DEFAULT_PROC],
3783
+ [:part, 1, DEFAULT_PROC],
3784
+ [:part, 1, DEFAULT_PROC],
3785
+ [:part, 1, DEFAULT_PROC],
3786
+ [:function, 10, proc { |_, a, _, b, _, _, c, _, d, _| [:func, a, b, c, d] }],
3787
+ [:"function.arguments.maybe", 1, DEFAULT_PROC],
3788
+ [:"function.arguments.maybe", 0, DEFAULT_PROC],
3789
+ [:"function.arguments", 3, proc { |a, _, b| a << b }],
3790
+ [:"function.arguments", 1, DEFAULT_PROC],
3791
+ [:"function.argument", 3, proc { |a, _, b| [:fnarg, a, b] }],
3792
+ [:class, 5, proc { |_, a, _, b, _| [:class, a, b] }],
3793
+ [:"class.name", 3, proc { |a, _, b| a << b }],
3794
+ [:"class.name", 1, proc { |a| [:clname, a] }],
3795
+ [:"class.body", 1, DEFAULT_PROC],
3796
+ [:"class.parts.maybe", 1, DEFAULT_PROC],
3797
+ [:"class.parts.maybe", 0, DEFAULT_PROC],
3798
+ [:"class.parts", 2, proc { |a, b| a << b }],
3799
+ [:"class.parts", 1, proc { |a| [a] }],
3800
+ [:"class.part", 1, DEFAULT_PROC],
3801
+ [:"class.part", 1, DEFAULT_PROC],
3802
+ [:"class.part", 1, DEFAULT_PROC],
3803
+ [:"class.attribute", 4, proc { |a, _, b| [:clattr, a, b] }],
3804
+ [:"class.function", 10, proc { |_, a, _, b, _, _, c, _, d, _| [:clfunc, a, b, c, d] }],
3805
+ [:struct, 5, proc { |_, a, _, b, _| [:struct, a, b] }],
3806
+ [:"struct.body", 1, DEFAULT_PROC],
3807
+ [:"struct.parts.maybe", 1, DEFAULT_PROC],
3808
+ [:"struct.parts.maybe", 0, DEFAULT_PROC],
3809
+ [:"struct.parts", 2, proc { |a, b| a << b }],
3810
+ [:"struct.parts", 1, proc { |a| [a] }],
3811
+ [:"struct.part", 1, DEFAULT_PROC],
3812
+ [:"struct.part", 1, DEFAULT_PROC],
3813
+ [:union, 5, proc { |_, a, _, b, _| [:union, a, b] }],
3814
+ [:"union.body", 1, DEFAULT_PROC],
3815
+ [:"union.parts.maybe", 1, DEFAULT_PROC],
3816
+ [:"union.parts.maybe", 0, DEFAULT_PROC],
3817
+ [:"union.parts", 2, proc { |a, b| a << b }],
3818
+ [:"union.parts", 1, proc { |a| [a] }],
3819
+ [:"union.part", 1, DEFAULT_PROC],
3820
+ [:"union.part", 1, DEFAULT_PROC],
3821
+ [:type, 2, proc { |a| [:pointer, a] }],
3822
+ [:type, 1, DEFAULT_PROC],
3823
+ [:type, 1, DEFAULT_PROC],
3824
+ [:type, 1, DEFAULT_PROC],
3825
+ [:"function.body", 1, DEFAULT_PROC],
3826
+ [:"function.body.parts.maybe", 1, DEFAULT_PROC],
3827
+ [:"function.body.parts.maybe", 0, DEFAULT_PROC],
3828
+ [:"function.body.parts", 2, proc { |a, b| a << b }],
3829
+ [:"function.body.parts", 1, proc { |a| [a] }],
3830
+ [:"function.body.part", 2, DEFAULT_PROC],
3831
+ [:"function.body.part", 2, DEFAULT_PROC],
3832
+ [:"function.body.part", 2, DEFAULT_PROC],
3833
+ [:"function.body.part", 1, DEFAULT_PROC],
3834
+ [:"function.body.expression", 1, DEFAULT_PROC],
3835
+ [:"function.body.expression", 1, DEFAULT_PROC],
3836
+ [:"function.body.expression", 1, DEFAULT_PROC],
3837
+ [:"function.body.expression", 1, DEFAULT_PROC],
3838
+ [:"function.body.expression", 1, DEFAULT_PROC],
3839
+ [:"function.body.expression", 1, DEFAULT_PROC],
3840
+ [:"function.body.expression", 3, proc { |_, a, _| a }],
3841
+ [:"function.body.declare", 3, proc { |a, _, b| [:variable, a, b] }],
3842
+ [:"function.body.declare", 5, proc { |a, _, b, _, c| [:variable, a, b, c] }],
3843
+ [:"function.body.assignment", 3, proc { |a, _, b| [:assign, a, b] }],
3844
+ [:"function.body.reference", 2, proc { |_, a| [:deref, a] }],
3845
+ [:"function.body.reference", 2, proc { |_, a| [:ref, a] }],
3846
+ [:"function.body.reference", 4, proc { |a, _, b, _| [:brack, a, b] }],
3847
+ [:"function.body.reference", 1, DEFAULT_PROC],
3848
+ [:"function.body.call", 4, proc { |a, _, b, _| [:call, a, b] }],
3849
+ [:"function.body.math", 3, proc { |a, _, b| [:add, a, b] }],
3850
+ [:"function.body.math", 3, proc { |a, _, b| [:sub, a, b] }],
3851
+ [:"function.body.math", 3, proc { |a, _, b| [:mult, a, b] }],
3852
+ [:"function.body.math", 3, proc { |a, _, b| [:div, a, b] }],
3853
+ [:"function.body.math", 3, proc { |a, _, b| [:mod, a, b] }],
3854
+ [:"function.body.math", 3, proc { |a, _, b| [:lshift, a, b] }],
3855
+ [:"function.body.math", 3, proc { |a, _, b| [:rshift, a, b] }],
3856
+ [:"function.body.math", 2, proc { |a, _| [:sinc, a] }],
3857
+ [:"function.body.math", 2, proc { |a, _| [:sdec, a] }],
3858
+ [:"function.body.math", 2, proc { |_, a| [:pinc, a] }],
3859
+ [:"function.body.math", 2, proc { |_, a| [:pdec, a] }],
3860
+ [:"function.body.math", 2, proc { |_, a| [:uplus, a] }],
3861
+ [:"function.body.math", 2, proc { |_, a| [:uminus, a] }],
3862
+ [:"function.body.literal", 1, DEFAULT_PROC],
3863
+ [:"function.body.literal", 1, DEFAULT_PROC],
3864
+ [:"function.body.literal", 1, DEFAULT_PROC],
3865
+ [:"function.body.literal", 1, DEFAULT_PROC],
3866
+ [:"function.body.literal", 1, DEFAULT_PROC],
3867
+ [:"function.body.literal", 1, DEFAULT_PROC],
3868
+ [:"function.body.literal", 1, DEFAULT_PROC],
3869
+ [:"function.body.literal", 1, DEFAULT_PROC],
3870
+ [:"function.body.literal", 1, DEFAULT_PROC],
3871
+ [:"function.body.literal", 1, DEFAULT_PROC],
3872
+ [:"function.body.literal", 1, DEFAULT_PROC],
3873
+ [:"function.body.literal", 1, DEFAULT_PROC],
3874
+ [:"function.body.string", 2, proc { |a, b| a << b }],
3875
+ [:"function.body.string", 1, proc { |a| [:strlist, a] }],
3876
+ [:"function.body.logic", 2, proc { |_, a| [:lnot, a] }],
3877
+ [:"function.body.logic", 2, proc { |_, a| [:bnot, a] }],
3878
+ [:"function.body.logic", 3, proc { |a, _, b| [:lt, a, b] }],
3879
+ [:"function.body.logic", 3, proc { |a, _, b| [:gt, a, b] }],
3880
+ [:"function.body.logic", 4, proc { |a, _, b| [:lte, a, b] }],
3881
+ [:"function.body.logic", 4, proc { |a, _, b| [:gte, a, b] }],
3882
+ [:"function.body.logic", 3, proc { |a, _, b| [:comp, a, b] }],
3883
+ [:"function.body.logic", 3, proc { |a, _, b| [:ncmp, a, b] }],
3884
+ [:"function.body.logic", 3, proc { |a, _, b| [:land, a, b] }],
3885
+ [:"function.body.logic", 3, proc { |a, _, b| [:band, a, b] }],
3886
+ [:"function.body.logic", 3, proc { |a, _, b| [:lor, a, b] }],
3887
+ [:"function.body.logic", 3, proc { |a, _, b| [:bor, a, b] }],
3888
+ [:"function.body.call.arguments.maybe", 1, DEFAULT_PROC],
3889
+ [:"function.body.call.arguments.maybe", 0, DEFAULT_PROC],
3890
+ [:"function.body.call.arguments", 3, proc { |a, _, b| a << b }],
3891
+ [:"function.body.call.arguments", 1, proc { |a| [a] }],
3892
+ [:"function.body.call.argument", 1, DEFAULT_PROC],
3893
+ [:"function.body.control", 1, DEFAULT_PROC],
3894
+ [:"function.body.control", 1, DEFAULT_PROC],
3895
+ [:"function.body.control", 1, DEFAULT_PROC],
3896
+ [:"function.body.control", 1, DEFAULT_PROC],
3897
+ [:"function.body.control", 1, DEFAULT_PROC],
3898
+ [:"function.body.control", 1, DEFAULT_PROC],
3899
+ [:"function.body.control", 1, proc { [:continue] }],
3900
+ [:"function.body.control", 1, proc { [:break] }],
3901
+ [:"control.if", 6, proc { |_, _, a, _, b, c| [:if, a, b, c] }],
3902
+ [:"control.if.cont", 7, proc { |_, _, _, a, _, b, c| [:elif, a, b, c] }],
3903
+ [:"control.if.cont", 2, proc { |_, a| [:else, a] }],
3904
+ [:"control.while", 5, proc { |_, _, a, _, b| [:while, a, b] }],
3905
+ [:"control.while", 5, proc { |_, b, _, _, a| [:rwhile, a, b] }],
3906
+ [:"control.for", 9, proc { |_, _, a, _, b, _, c, _, d| [:for, a, b, c, d] }],
3907
+ [:"control.for.compound", 1, DEFAULT_PROC],
3908
+ [:"control.goto", 2, proc { |_, a| [:goto, a] }],
3909
+ [:"control.label", 4, proc { |_, a, _, b| [:label, a, b] }],
3910
+ [:"control.return", 2, proc { |_, a| [:return, a] }],
3911
+ [:"control.return", 2, proc { [:return] }],
3912
+ [:"control.block", 1, DEFAULT_PROC],
3913
+ [:"control.block", 3, DEFAULT_PROC],
3914
+ [:typedef, 1, DEFAULT_PROC],
3915
+ [:typedef, 1, DEFAULT_PROC],
3916
+ [:"typedef.type", 5, proc { |_, a, _, b, _| [:type, a, b] }],
3917
+ [:"typedef.func", 8, proc { |*a| [:typefn, a[1], a[3], a[6]] }],
3918
+ [:"typedef.func", 9, proc { |*a| [:typefnp, a[1], a[4], a[7]] }]].freeze
3919
+
3920
+ # Runs the parser.
3921
+ #
3922
+ # @param input [Array] the input to run the parser over.
3923
+ # @return [Object] the result of the accept.
3924
+ def parse(input)
3925
+ stack = []
3926
+ stack.push([nil, 0])
3927
+ last = nil
3928
+ input = input.to_a.dup
3929
+
3930
+ until stack.empty? do
3931
+ last = parse_action(stack, input)
3932
+ end
3933
+
3934
+ last
3935
+
3936
+ end
3937
+
3938
+ # Actually performs the parsing action on the given stack on input.
3939
+ # If you want to implement a push parser, than messing with this
3940
+ # method is probably the way to go.
3941
+ #
3942
+ # @param stack [Array<Array<(Object, Numeric)>>] the stack of the
3943
+ # parser. The actual order of the stack is important.
3944
+ # @param input [Array<Object>] the input to run the parser over.
3945
+ # The elements of this may be passed to the `type` method.
3946
+ # @return [Object] the result of the last accepting reduction.
3947
+ def parse_action(stack, input)
3948
+ last = nil
3949
+ peek_token = if input.empty?
3950
+ :$end
3951
+ else
3952
+ type(input.first)
3953
+ end
3954
+
3955
+ action = ACTION_TABLE[stack.last.last].fetch(peek_token) do
3956
+ ACTION_TABLE[stack.last.last].fetch(:$default)
3957
+ end
3958
+
3959
+ case action.first
3960
+ when :accept
3961
+ production = PRODUCTIONS[action.last]
3962
+ last = stack.pop(production[1]).first.first
3963
+ stack.pop
3964
+ when :reduce
3965
+ production = PRODUCTIONS[action.last]
3966
+ removing = stack.pop(production[1])
3967
+ value = instance_exec(*removing.map(&:first), &production[2])
3968
+ goto = ACTION_TABLE[stack.last.last][production[0]]
3969
+ stack.push([value, goto.last])
3970
+ when :state
3971
+ stack.push([input.shift, action.last])
3972
+ else
3973
+ raise NotImplementedError, "Unknown action #{action.first}"
3974
+ end
3975
+
3976
+ last
3977
+
3978
+ rescue KeyError => e
3979
+ peek = input.first
3980
+
3981
+ if handle_error({
3982
+ :stack => stack,
3983
+ :peek => peek_token,
3984
+ :remaining => input,
3985
+ :error => e,
3986
+ :line => line_of(peek),
3987
+ :column => column_of(peek),
3988
+ :expected => ACTION_TABLE[stack.last.last].keys
3989
+ })
3990
+ retry
3991
+ else
3992
+ raise
3993
+ end
3994
+ end
3995
+
3996
+ private
3997
+
3998
+ def line_of(peek)
3999
+ if peek.respond_to?(:line)
4000
+ peek.line
4001
+ else
4002
+ 0
4003
+ end
4004
+ end
4005
+
4006
+ def column_of(peek)
4007
+ if peek.respond_to?(:column)
4008
+ peek.column
4009
+ else
4010
+ 0
4011
+ end
4012
+ end
4013
+
4014
+ def handle_error(data, _ = false)
4015
+ raise SyntaxError,
4016
+ "Unexpected token #{data[:peek]} on line #{data[:line]}, " \
4017
+ "column #{data[:column]}; expected one of " \
4018
+ "#{data[:expected].join(', ')}",
4019
+ data[:error].backtrace
4020
+ end
4021
+
4022
+
4023
+ def self.parse(tokens)
4024
+ new.parse(tokens)
4025
+ end
4026
+
4027
+ def type(token)
4028
+ token.type
4029
+ end
4030
+ end
4031
+ end