rmasalov-surpass 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1822 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # ExcelFormula.g
4
+ #
5
+ # Generated using ANTLR version: 3.2.1-SNAPSHOT Dec 18, 2009 04:29:28
6
+ # Ruby runtime library version: 1.3.1
7
+ # Input grammar file: ExcelFormula.g
8
+ # Generated at: 2010-06-13 10:19:27
9
+ #
10
+
11
+ # ~~~> start load path setup
12
+ this_directory = File.expand_path( File.dirname( __FILE__ ) )
13
+ $:.unshift( this_directory ) unless $:.include?( this_directory )
14
+
15
+ antlr_load_failed = proc do
16
+ load_path = $LOAD_PATH.map { |dir| ' - ' << dir }.join( $/ )
17
+ raise LoadError, <<-END.strip!
18
+
19
+ Failed to load the ANTLR3 runtime library (version 1.3.1):
20
+
21
+ Ensure the library has been installed on your system and is available
22
+ on the load path. If rubygems is available on your system, this can
23
+ be done with the command:
24
+
25
+ gem install antlr3
26
+
27
+ Current load path:
28
+ #{ load_path }
29
+
30
+ END
31
+ end
32
+
33
+ defined?(ANTLR3) or begin
34
+
35
+ # 1: try to load the ruby antlr3 runtime library from the system path
36
+ require 'antlr3'
37
+
38
+ rescue LoadError
39
+
40
+ # 2: try to load rubygems if it isn't already loaded
41
+ defined?(Gem) or begin
42
+ require 'rubygems'
43
+ rescue LoadError
44
+ antlr_load_failed.call
45
+ end
46
+
47
+ # 3: try to activate the antlr3 gem
48
+ begin
49
+ Gem.activate( 'antlr3', '= 1.3.1' )
50
+ rescue Gem::LoadError
51
+ antlr_load_failed.call
52
+ end
53
+
54
+ require 'antlr3'
55
+
56
+ end
57
+ # <~~~ end load path setup
58
+
59
+ # - - - - - - begin action @parser::header - - - - - -
60
+ # ExcelFormula.g
61
+
62
+
63
+ RVA_DELTA = {"R" => 0, "V" => 0x20, "A" => 0x40}
64
+ RVA_DELTA_REF = {"R" => 0, "V" => 0x20, "A" => 0x40, "D" => 0x20}
65
+ RVA_DELTA_AREA = {"R" => 0, "V" => 0x20, "A" => 0x40, "D" => 0}
66
+
67
+ # - - - - - - end action @parser::header - - - - - - -
68
+
69
+
70
+ module ExcelFormula
71
+ # TokenData defines all of the token type integer values
72
+ # as constants, which will be included in all
73
+ # ANTLR-generated recognizers.
74
+ const_defined?(:TokenData) or TokenData = ANTLR3::TokenScheme.new
75
+
76
+ module TokenData
77
+
78
+ # define the token constants
79
+ define_tokens(:GE => 8, :LT => 7, :NUM_CONST => 21, :PERCENT => 16,
80
+ :REF2D => 22, :CONCAT => 10, :RP => 25, :LP => 24, :INT_CONST => 20,
81
+ :STR_CONST => 19, :POWER => 15, :SUB => 12, :FUNC_CHOOSE => 30,
82
+ :SEMICOLON => 28, :BANG => 26, :TRUE_CONST => 17, :EOF => -1,
83
+ :MUL => 13, :ALPHA => 34, :COLON => 23, :NAME => 31, :FALSE_CONST => 18,
84
+ :WS => 35, :COMMA => 29, :GT => 6, :DIGIT => 33, :EQ => 4,
85
+ :DIV => 14, :FUNC_IF => 27, :QUOTENAME => 32, :LE => 9,
86
+ :NE => 5, :ADD => 11)
87
+
88
+ # register the proper human-readable name or literal value
89
+ # for each token type
90
+ #
91
+ # this is necessary because anonymous tokens, which are
92
+ # created from literal values in the grammar, do not
93
+ # have descriptive names
94
+ register_names("EQ", "NE", "GT", "LT", "GE", "LE", "CONCAT", "ADD",
95
+ "SUB", "MUL", "DIV", "POWER", "PERCENT", "TRUE_CONST",
96
+ "FALSE_CONST", "STR_CONST", "INT_CONST", "NUM_CONST",
97
+ "REF2D", "COLON", "LP", "RP", "BANG", "FUNC_IF", "SEMICOLON",
98
+ "COMMA", "FUNC_CHOOSE", "NAME", "QUOTENAME", "DIGIT",
99
+ "ALPHA", "WS")
100
+
101
+ end
102
+
103
+
104
+ class Parser < ANTLR3::Parser
105
+ @grammar_home = ExcelFormula
106
+
107
+ RULE_METHODS = [:formula, :expr, :prec0_expr, :prec1_expr, :prec2_expr,
108
+ :prec3_expr, :prec4_expr, :prec5_expr, :primary, :expr_list,
109
+ :sheet].freeze
110
+
111
+
112
+ include TokenData
113
+
114
+ generated_using( "ExcelFormula.g", "3.2.1-SNAPSHOT Dec 18, 2009 04:29:28", "1.3.1" )
115
+
116
+ def initialize(input, options = {})
117
+ super(input, options)
118
+
119
+ # - - - - - - begin action @parser::init - - - - - -
120
+ # ExcelFormula.g
121
+
122
+
123
+ @rpn = ''
124
+ @sheet_references = []
125
+ @xcall_references = []
126
+
127
+ # - - - - - - end action @parser::init - - - - - - -
128
+
129
+
130
+ end
131
+
132
+ attr_accessor :rpn
133
+
134
+ # - - - - - - - - - - - - Rules - - - - - - - - - - - - -
135
+
136
+ # parser rule formula
137
+ #
138
+ # (in ExcelFormula.g)
139
+ # 24:1: formula : expr[\"V\"] ;
140
+ def formula
141
+ # -> uncomment the next line to manually enable rule tracing
142
+ # trace_in(__method__, 1)
143
+
144
+ begin
145
+ # at line 25:7: expr[\"V\"]
146
+ @state.following.push(TOKENS_FOLLOWING_expr_IN_formula_56)
147
+ expr("V")
148
+ @state.following.pop
149
+
150
+ rescue ANTLR3::Error::RecognitionError => re
151
+ report_error(re)
152
+ recover(re)
153
+
154
+ ensure
155
+ # -> uncomment the next line to manually enable rule tracing
156
+ # trace_out(__method__, 1)
157
+
158
+ end
159
+
160
+ return
161
+ end
162
+
163
+
164
+ # parser rule expr
165
+ #
166
+ # (in ExcelFormula.g)
167
+ # 28:1: expr[arg_type] : prec0_expr[arg_type] ( ( EQ | NE | GT | LT | GE | LE ) prec0_expr[arg_type] )* ;
168
+ def expr(arg_type)
169
+ # -> uncomment the next line to manually enable rule tracing
170
+ # trace_in(__method__, 2)
171
+
172
+ begin
173
+ # at line 29:7: prec0_expr[arg_type] ( ( EQ | NE | GT | LT | GE | LE ) prec0_expr[arg_type] )*
174
+ @state.following.push(TOKENS_FOLLOWING_prec0_expr_IN_expr_75)
175
+ prec0_expr(arg_type)
176
+ @state.following.pop
177
+ # at line 30:9: ( ( EQ | NE | GT | LT | GE | LE ) prec0_expr[arg_type] )*
178
+ loop do # decision 2
179
+ alt_2 = 2
180
+ alt_2 = @dfa2.predict(@input)
181
+ case alt_2
182
+ when 1
183
+ # at line 31:13: ( EQ | NE | GT | LT | GE | LE ) prec0_expr[arg_type]
184
+ # at line 31:13: ( EQ | NE | GT | LT | GE | LE )
185
+ alt_1 = 6
186
+ case look_1 = @input.peek(1)
187
+ when EQ then alt_1 = 1
188
+ when NE then alt_1 = 2
189
+ when GT then alt_1 = 3
190
+ when LT then alt_1 = 4
191
+ when GE then alt_1 = 5
192
+ when LE then alt_1 = 6
193
+ else
194
+ nvae = NoViableAlternative("", 1, 0)
195
+ raise nvae
196
+ end
197
+ case alt_1
198
+ when 1
199
+ # at line 32:19: EQ
200
+ match(EQ, TOKENS_FOLLOWING_EQ_IN_expr_120)
201
+ # --> action
202
+ op = [PTGEQ].pack('C')
203
+ # <-- action
204
+
205
+ when 2
206
+ # at line 33:19: NE
207
+ match(NE, TOKENS_FOLLOWING_NE_IN_expr_142)
208
+ # --> action
209
+ op = [PTGNE].pack('C')
210
+ # <-- action
211
+
212
+ when 3
213
+ # at line 34:19: GT
214
+ match(GT, TOKENS_FOLLOWING_GT_IN_expr_164)
215
+ # --> action
216
+ op = [PTGGT].pack('C')
217
+ # <-- action
218
+
219
+ when 4
220
+ # at line 35:19: LT
221
+ match(LT, TOKENS_FOLLOWING_LT_IN_expr_186)
222
+ # --> action
223
+ op = [PTGLT].pack('C')
224
+ # <-- action
225
+
226
+ when 5
227
+ # at line 36:19: GE
228
+ match(GE, TOKENS_FOLLOWING_GE_IN_expr_208)
229
+ # --> action
230
+ op = [PTGGE].pack('C')
231
+ # <-- action
232
+
233
+ when 6
234
+ # at line 37:19: LE
235
+ match(LE, TOKENS_FOLLOWING_LE_IN_expr_230)
236
+ # --> action
237
+ op = [PTGLE].pack('C')
238
+ # <-- action
239
+
240
+ end
241
+ @state.following.push(TOKENS_FOLLOWING_prec0_expr_IN_expr_261)
242
+ prec0_expr(arg_type)
243
+ @state.following.pop
244
+ # --> action
245
+ @rpn += op
246
+ # <-- action
247
+
248
+ else
249
+ break # out of loop for decision 2
250
+ end
251
+ end # loop for decision 2
252
+
253
+ rescue ANTLR3::Error::RecognitionError => re
254
+ report_error(re)
255
+ recover(re)
256
+
257
+ ensure
258
+ # -> uncomment the next line to manually enable rule tracing
259
+ # trace_out(__method__, 2)
260
+
261
+ end
262
+
263
+ return
264
+ end
265
+
266
+
267
+ # parser rule prec0_expr
268
+ #
269
+ # (in ExcelFormula.g)
270
+ # 44:1: prec0_expr[arg_type] : prec1_expr[arg_type] ( ( CONCAT ) prec1_expr[arg_type] )* ;
271
+ def prec0_expr(arg_type)
272
+ # -> uncomment the next line to manually enable rule tracing
273
+ # trace_in(__method__, 3)
274
+
275
+ begin
276
+ # at line 45:7: prec1_expr[arg_type] ( ( CONCAT ) prec1_expr[arg_type] )*
277
+ @state.following.push(TOKENS_FOLLOWING_prec1_expr_IN_prec0_expr_293)
278
+ prec1_expr(arg_type)
279
+ @state.following.pop
280
+ # at line 46:9: ( ( CONCAT ) prec1_expr[arg_type] )*
281
+ loop do # decision 3
282
+ alt_3 = 2
283
+ alt_3 = @dfa3.predict(@input)
284
+ case alt_3
285
+ when 1
286
+ # at line 47:13: ( CONCAT ) prec1_expr[arg_type]
287
+ # at line 47:13: ( CONCAT )
288
+ # at line 48:17: CONCAT
289
+ match(CONCAT, TOKENS_FOLLOWING_CONCAT_IN_prec0_expr_336)
290
+ # --> action
291
+ op = [PTGCONCAT].pack('C')
292
+ # <-- action
293
+
294
+ @state.following.push(TOKENS_FOLLOWING_prec1_expr_IN_prec0_expr_366)
295
+ prec1_expr(arg_type)
296
+ @state.following.pop
297
+ # --> action
298
+ @rpn += op
299
+ # <-- action
300
+
301
+ else
302
+ break # out of loop for decision 3
303
+ end
304
+ end # loop for decision 3
305
+
306
+ rescue ANTLR3::Error::RecognitionError => re
307
+ report_error(re)
308
+ recover(re)
309
+
310
+ ensure
311
+ # -> uncomment the next line to manually enable rule tracing
312
+ # trace_out(__method__, 3)
313
+
314
+ end
315
+
316
+ return
317
+ end
318
+
319
+
320
+ # parser rule prec1_expr
321
+ #
322
+ # (in ExcelFormula.g)
323
+ # 54:1: prec1_expr[arg_type] : prec2_expr[arg_type] ( ( ADD | SUB ) prec2_expr[arg_type] )* ;
324
+ def prec1_expr(arg_type)
325
+ # -> uncomment the next line to manually enable rule tracing
326
+ # trace_in(__method__, 4)
327
+
328
+ begin
329
+ # at line 55:7: prec2_expr[arg_type] ( ( ADD | SUB ) prec2_expr[arg_type] )*
330
+ @state.following.push(TOKENS_FOLLOWING_prec2_expr_IN_prec1_expr_398)
331
+ prec2_expr(arg_type)
332
+ @state.following.pop
333
+ # at line 56:9: ( ( ADD | SUB ) prec2_expr[arg_type] )*
334
+ loop do # decision 5
335
+ alt_5 = 2
336
+ alt_5 = @dfa5.predict(@input)
337
+ case alt_5
338
+ when 1
339
+ # at line 57:13: ( ADD | SUB ) prec2_expr[arg_type]
340
+ # at line 57:13: ( ADD | SUB )
341
+ alt_4 = 2
342
+ look_4_0 = @input.peek(1)
343
+
344
+ if (look_4_0 == ADD)
345
+ alt_4 = 1
346
+ elsif (look_4_0 == SUB)
347
+ alt_4 = 2
348
+ else
349
+ nvae = NoViableAlternative("", 4, 0)
350
+ raise nvae
351
+ end
352
+ case alt_4
353
+ when 1
354
+ # at line 58:19: ADD
355
+ match(ADD, TOKENS_FOLLOWING_ADD_IN_prec1_expr_443)
356
+ # --> action
357
+ op = [PTGADD].pack('C')
358
+ # <-- action
359
+
360
+ when 2
361
+ # at line 59:19: SUB
362
+ match(SUB, TOKENS_FOLLOWING_SUB_IN_prec1_expr_465)
363
+ # --> action
364
+ op = [PTGSUB].pack('C')
365
+ # <-- action
366
+
367
+ end
368
+ @state.following.push(TOKENS_FOLLOWING_prec2_expr_IN_prec1_expr_495)
369
+ prec2_expr(arg_type)
370
+ @state.following.pop
371
+ # --> action
372
+ @rpn += op
373
+ # <-- action
374
+
375
+ else
376
+ break # out of loop for decision 5
377
+ end
378
+ end # loop for decision 5
379
+
380
+ rescue ANTLR3::Error::RecognitionError => re
381
+ report_error(re)
382
+ recover(re)
383
+
384
+ ensure
385
+ # -> uncomment the next line to manually enable rule tracing
386
+ # trace_out(__method__, 4)
387
+
388
+ end
389
+
390
+ return
391
+ end
392
+
393
+
394
+ # parser rule prec2_expr
395
+ #
396
+ # (in ExcelFormula.g)
397
+ # 66:1: prec2_expr[arg_type] : prec3_expr[arg_type] ( ( MUL | DIV ) prec3_expr[arg_type] )* ;
398
+ def prec2_expr(arg_type)
399
+ # -> uncomment the next line to manually enable rule tracing
400
+ # trace_in(__method__, 5)
401
+
402
+ begin
403
+ # at line 67:7: prec3_expr[arg_type] ( ( MUL | DIV ) prec3_expr[arg_type] )*
404
+ @state.following.push(TOKENS_FOLLOWING_prec3_expr_IN_prec2_expr_528)
405
+ prec3_expr(arg_type)
406
+ @state.following.pop
407
+ # at line 68:9: ( ( MUL | DIV ) prec3_expr[arg_type] )*
408
+ loop do # decision 7
409
+ alt_7 = 2
410
+ alt_7 = @dfa7.predict(@input)
411
+ case alt_7
412
+ when 1
413
+ # at line 69:13: ( MUL | DIV ) prec3_expr[arg_type]
414
+ # at line 69:13: ( MUL | DIV )
415
+ alt_6 = 2
416
+ look_6_0 = @input.peek(1)
417
+
418
+ if (look_6_0 == MUL)
419
+ alt_6 = 1
420
+ elsif (look_6_0 == DIV)
421
+ alt_6 = 2
422
+ else
423
+ nvae = NoViableAlternative("", 6, 0)
424
+ raise nvae
425
+ end
426
+ case alt_6
427
+ when 1
428
+ # at line 70:19: MUL
429
+ match(MUL, TOKENS_FOLLOWING_MUL_IN_prec2_expr_573)
430
+ # --> action
431
+ op = [PTGMUL].pack('C')
432
+ # <-- action
433
+
434
+ when 2
435
+ # at line 71:19: DIV
436
+ match(DIV, TOKENS_FOLLOWING_DIV_IN_prec2_expr_595)
437
+ # --> action
438
+ op = [PTGDIV].pack('C')
439
+ # <-- action
440
+
441
+ end
442
+ @state.following.push(TOKENS_FOLLOWING_prec3_expr_IN_prec2_expr_625)
443
+ prec3_expr(arg_type)
444
+ @state.following.pop
445
+ # --> action
446
+ @rpn += op
447
+ # <-- action
448
+
449
+ else
450
+ break # out of loop for decision 7
451
+ end
452
+ end # loop for decision 7
453
+
454
+ rescue ANTLR3::Error::RecognitionError => re
455
+ report_error(re)
456
+ recover(re)
457
+
458
+ ensure
459
+ # -> uncomment the next line to manually enable rule tracing
460
+ # trace_out(__method__, 5)
461
+
462
+ end
463
+
464
+ return
465
+ end
466
+
467
+
468
+ # parser rule prec3_expr
469
+ #
470
+ # (in ExcelFormula.g)
471
+ # 77:1: prec3_expr[arg_type] : prec4_expr[arg_type] ( ( POWER ) prec4_expr[arg_type] )* ;
472
+ def prec3_expr(arg_type)
473
+ # -> uncomment the next line to manually enable rule tracing
474
+ # trace_in(__method__, 6)
475
+
476
+ begin
477
+ # at line 78:7: prec4_expr[arg_type] ( ( POWER ) prec4_expr[arg_type] )*
478
+ @state.following.push(TOKENS_FOLLOWING_prec4_expr_IN_prec3_expr_657)
479
+ prec4_expr(arg_type)
480
+ @state.following.pop
481
+ # at line 79:9: ( ( POWER ) prec4_expr[arg_type] )*
482
+ loop do # decision 8
483
+ alt_8 = 2
484
+ alt_8 = @dfa8.predict(@input)
485
+ case alt_8
486
+ when 1
487
+ # at line 80:13: ( POWER ) prec4_expr[arg_type]
488
+ # at line 80:13: ( POWER )
489
+ # at line 81:17: POWER
490
+ match(POWER, TOKENS_FOLLOWING_POWER_IN_prec3_expr_700)
491
+ # --> action
492
+ op = [PTGPOWER].pack('C')
493
+ # <-- action
494
+
495
+ @state.following.push(TOKENS_FOLLOWING_prec4_expr_IN_prec3_expr_730)
496
+ prec4_expr(arg_type)
497
+ @state.following.pop
498
+ # --> action
499
+ @rpn += op
500
+ # <-- action
501
+
502
+ else
503
+ break # out of loop for decision 8
504
+ end
505
+ end # loop for decision 8
506
+
507
+ rescue ANTLR3::Error::RecognitionError => re
508
+ report_error(re)
509
+ recover(re)
510
+
511
+ ensure
512
+ # -> uncomment the next line to manually enable rule tracing
513
+ # trace_out(__method__, 6)
514
+
515
+ end
516
+
517
+ return
518
+ end
519
+
520
+
521
+ # parser rule prec4_expr
522
+ #
523
+ # (in ExcelFormula.g)
524
+ # 87:1: prec4_expr[arg_type] : prec5_expr[arg_type] ( PERCENT )? ;
525
+ def prec4_expr(arg_type)
526
+ # -> uncomment the next line to manually enable rule tracing
527
+ # trace_in(__method__, 7)
528
+
529
+ begin
530
+ # at line 88:7: prec5_expr[arg_type] ( PERCENT )?
531
+ @state.following.push(TOKENS_FOLLOWING_prec5_expr_IN_prec4_expr_762)
532
+ prec5_expr(arg_type)
533
+ @state.following.pop
534
+ # at line 89:9: ( PERCENT )?
535
+ alt_9 = 2
536
+ alt_9 = @dfa9.predict(@input)
537
+ case alt_9
538
+ when 1
539
+ # at line 90:13: PERCENT
540
+ match(PERCENT, TOKENS_FOLLOWING_PERCENT_IN_prec4_expr_787)
541
+ # --> action
542
+ @rpn += [PTGPERCENT].pack('C')
543
+ # <-- action
544
+
545
+ end
546
+
547
+ rescue ANTLR3::Error::RecognitionError => re
548
+ report_error(re)
549
+ recover(re)
550
+
551
+ ensure
552
+ # -> uncomment the next line to manually enable rule tracing
553
+ # trace_out(__method__, 7)
554
+
555
+ end
556
+
557
+ return
558
+ end
559
+
560
+
561
+ # parser rule prec5_expr
562
+ #
563
+ # (in ExcelFormula.g)
564
+ # 94:1: prec5_expr[arg_type] : ( primary[arg_type] | SUB primary[arg_type] );
565
+ def prec5_expr(arg_type)
566
+ # -> uncomment the next line to manually enable rule tracing
567
+ # trace_in(__method__, 8)
568
+
569
+ begin
570
+ # at line 95:5: ( primary[arg_type] | SUB primary[arg_type] )
571
+ alt_10 = 2
572
+ alt_10 = @dfa10.predict(@input)
573
+ case alt_10
574
+ when 1
575
+ # at line 95:7: primary[arg_type]
576
+ @state.following.push(TOKENS_FOLLOWING_primary_IN_prec5_expr_818)
577
+ primary(arg_type)
578
+ @state.following.pop
579
+
580
+ when 2
581
+ # at line 96:7: SUB primary[arg_type]
582
+ match(SUB, TOKENS_FOLLOWING_SUB_IN_prec5_expr_827)
583
+ @state.following.push(TOKENS_FOLLOWING_primary_IN_prec5_expr_829)
584
+ primary(arg_type)
585
+ @state.following.pop
586
+ # --> action
587
+ @rpn += [PTGUMINUS].pack('C')
588
+ # <-- action
589
+
590
+ end
591
+ rescue ANTLR3::Error::RecognitionError => re
592
+ report_error(re)
593
+ recover(re)
594
+
595
+ ensure
596
+ # -> uncomment the next line to manually enable rule tracing
597
+ # trace_out(__method__, 8)
598
+
599
+ end
600
+
601
+ return
602
+ end
603
+
604
+
605
+ # parser rule primary
606
+ #
607
+ # (in ExcelFormula.g)
608
+ # 99:1: primary[arg_type] : ( TRUE_CONST | FALSE_CONST | str_tok= STR_CONST | int_tok= INT_CONST | num_tok= NUM_CONST | ref2d_tok= REF2D | ref2d1_tok= REF2D COLON ref2d2_tok= REF2D | LP expr[arg_type] RP | sheet1= sheet ( COLON sheet2= sheet )? BANG ref3d_ref2d= REF2D ( COLON ref3d_ref2d2= REF2D )? | FUNC_IF LP expr[\"V\"] ( SEMICOLON | COMMA ) expr[arg_type] ( SEMICOLON | COMMA ) expr[arg_type] RP | FUNC_CHOOSE LP expr[\"V\"] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )* RP | name_tok= NAME | func_tok= NAME LP arg_count= expr_list[arg_type_list, min_argc, max_argc] RP );
609
+ def primary(arg_type)
610
+ # -> uncomment the next line to manually enable rule tracing
611
+ # trace_in(__method__, 9)
612
+ str_tok = nil
613
+ int_tok = nil
614
+ num_tok = nil
615
+ ref2d_tok = nil
616
+ ref2d1_tok = nil
617
+ ref2d2_tok = nil
618
+ ref3d_ref2d = nil
619
+ ref3d_ref2d2 = nil
620
+ name_tok = nil
621
+ func_tok = nil
622
+ sheet1 = nil
623
+ sheet2 = nil
624
+ arg_count = nil
625
+
626
+ begin
627
+ # at line 100:5: ( TRUE_CONST | FALSE_CONST | str_tok= STR_CONST | int_tok= INT_CONST | num_tok= NUM_CONST | ref2d_tok= REF2D | ref2d1_tok= REF2D COLON ref2d2_tok= REF2D | LP expr[arg_type] RP | sheet1= sheet ( COLON sheet2= sheet )? BANG ref3d_ref2d= REF2D ( COLON ref3d_ref2d2= REF2D )? | FUNC_IF LP expr[\"V\"] ( SEMICOLON | COMMA ) expr[arg_type] ( SEMICOLON | COMMA ) expr[arg_type] RP | FUNC_CHOOSE LP expr[\"V\"] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )* RP | name_tok= NAME | func_tok= NAME LP arg_count= expr_list[arg_type_list, min_argc, max_argc] RP )
628
+ alt_15 = 13
629
+ alt_15 = @dfa15.predict(@input)
630
+ case alt_15
631
+ when 1
632
+ # at line 100:7: TRUE_CONST
633
+ match(TRUE_CONST, TOKENS_FOLLOWING_TRUE_CONST_IN_primary_850)
634
+ # --> action
635
+
636
+ @rpn += [PTGBOOL, 1].pack("C2")
637
+
638
+ # <-- action
639
+
640
+ when 2
641
+ # at line 104:7: FALSE_CONST
642
+ match(FALSE_CONST, TOKENS_FOLLOWING_FALSE_CONST_IN_primary_868)
643
+ # --> action
644
+
645
+ @rpn += [PTGBOOL, 0].pack("C2")
646
+
647
+ # <-- action
648
+
649
+ when 3
650
+ # at line 108:7: str_tok= STR_CONST
651
+ str_tok = match(STR_CONST, TOKENS_FOLLOWING_STR_CONST_IN_primary_890)
652
+ # --> action
653
+
654
+ s = str_tok.text.gsub("\"", "")
655
+ @rpn += [PTGSTR].pack("C") + [s.length].pack('v') + s
656
+
657
+ # <-- action
658
+
659
+ when 4
660
+ # at line 113:7: int_tok= INT_CONST
661
+ int_tok = match(INT_CONST, TOKENS_FOLLOWING_INT_CONST_IN_primary_912)
662
+ # --> action
663
+
664
+ int_value = int_tok.text.to_i
665
+ if int_value <= 65535
666
+ @rpn += [PTGINT, int_value].pack("Cv")
667
+ else
668
+ @rpn += [PTGNUM, int_value.to_f].pack("CE")
669
+ end
670
+
671
+ # <-- action
672
+
673
+ when 5
674
+ # at line 122:7: num_tok= NUM_CONST
675
+ num_tok = match(NUM_CONST, TOKENS_FOLLOWING_NUM_CONST_IN_primary_930)
676
+ # --> action
677
+
678
+ @rpn += [PTGNUM, num_tok.text.to_f].pack("CE")
679
+
680
+ # <-- action
681
+
682
+ when 6
683
+ # at line 126:7: ref2d_tok= REF2D
684
+ ref2d_tok = match(REF2D, TOKENS_FOLLOWING_REF2D_IN_primary_952)
685
+ # --> action
686
+
687
+ r, c = Utilities.cell_to_packed_rowcol(ref2d_tok.text)
688
+ ptg = PTGREFR + RVA_DELTA_REF[arg_type]
689
+ @rpn += [ptg, r, c].pack("Cv2")
690
+
691
+ # <-- action
692
+
693
+ when 7
694
+ # at line 132:7: ref2d1_tok= REF2D COLON ref2d2_tok= REF2D
695
+ ref2d1_tok = match(REF2D, TOKENS_FOLLOWING_REF2D_IN_primary_974)
696
+ match(COLON, TOKENS_FOLLOWING_COLON_IN_primary_976)
697
+ ref2d2_tok = match(REF2D, TOKENS_FOLLOWING_REF2D_IN_primary_982)
698
+ # --> action
699
+
700
+ r1, c1 = Utilities.cell_to_packed_rowcol(ref2d1_tok.text)
701
+ r2, c2 = Utilities.cell_to_packed_rowcol(ref2d2_tok.text)
702
+ ptg = PTGAREAR + RVA_DELTA_AREA[arg_type]
703
+ @rpn += [ptg, r1, r2, c1, c2].pack("Cv4")
704
+
705
+ # <-- action
706
+
707
+ when 8
708
+ # at line 139:7: LP expr[arg_type] RP
709
+ match(LP, TOKENS_FOLLOWING_LP_IN_primary_1000)
710
+ @state.following.push(TOKENS_FOLLOWING_expr_IN_primary_1002)
711
+ expr(arg_type)
712
+ @state.following.pop
713
+ match(RP, TOKENS_FOLLOWING_RP_IN_primary_1005)
714
+ # --> action
715
+
716
+ @rpn += [PTGPAREN].pack('C')
717
+
718
+ # <-- action
719
+
720
+ when 9
721
+ # at line 143:7: sheet1= sheet ( COLON sheet2= sheet )? BANG ref3d_ref2d= REF2D ( COLON ref3d_ref2d2= REF2D )?
722
+ @state.following.push(TOKENS_FOLLOWING_sheet_IN_primary_1028)
723
+ sheet1 = sheet
724
+ @state.following.pop
725
+ # --> action
726
+
727
+ sheet2 = sheet1
728
+
729
+ # <-- action
730
+ # at line 147:9: ( COLON sheet2= sheet )?
731
+ alt_11 = 2
732
+ look_11_0 = @input.peek(1)
733
+
734
+ if (look_11_0 == COLON)
735
+ alt_11 = 1
736
+ end
737
+ case alt_11
738
+ when 1
739
+ # at line 147:11: COLON sheet2= sheet
740
+ match(COLON, TOKENS_FOLLOWING_COLON_IN_primary_1050)
741
+ @state.following.push(TOKENS_FOLLOWING_sheet_IN_primary_1056)
742
+ sheet2 = sheet
743
+ @state.following.pop
744
+
745
+ end
746
+ match(BANG, TOKENS_FOLLOWING_BANG_IN_primary_1061)
747
+ ref3d_ref2d = match(REF2D, TOKENS_FOLLOWING_REF2D_IN_primary_1065)
748
+ # --> action
749
+
750
+ ptg = PTGREF3DR + RVA_DELTA_REF[arg_type]
751
+ r1, c1 = Utilities.cell_to_packed_rowcol(ref3d_ref2d.text)
752
+ rpn_ref2d = [0x0000, r1, c1].pack("v3")
753
+
754
+ # <-- action
755
+ # at line 153:9: ( COLON ref3d_ref2d2= REF2D )?
756
+ alt_12 = 2
757
+ alt_12 = @dfa12.predict(@input)
758
+ case alt_12
759
+ when 1
760
+ # at line 153:11: COLON ref3d_ref2d2= REF2D
761
+ match(COLON, TOKENS_FOLLOWING_COLON_IN_primary_1087)
762
+ ref3d_ref2d2 = match(REF2D, TOKENS_FOLLOWING_REF2D_IN_primary_1092)
763
+ # --> action
764
+
765
+ ptg = PTGAREA3DR + RVA_DELTA_AREA[arg_type]
766
+ r2, c2 = Utilities.cell_to_packed_rowcol(ref3d_ref2d2.text)
767
+ rpn_ref2d = [0x0000, r1, r2, c1, c2].pack("v5")
768
+
769
+ # <-- action
770
+
771
+ end
772
+ # --> action
773
+
774
+ @rpn += [ptg].pack("C")
775
+ @sheet_references << [sheet1, sheet2, @rpn.size]
776
+ @rpn += rpn_ref2d
777
+
778
+ # <-- action
779
+
780
+ when 10
781
+ # at line 165:7: FUNC_IF LP expr[\"V\"] ( SEMICOLON | COMMA ) expr[arg_type] ( SEMICOLON | COMMA ) expr[arg_type] RP
782
+ match(FUNC_IF, TOKENS_FOLLOWING_FUNC_IF_IN_primary_1135)
783
+ match(LP, TOKENS_FOLLOWING_LP_IN_primary_1145)
784
+ @state.following.push(TOKENS_FOLLOWING_expr_IN_primary_1147)
785
+ expr("V")
786
+ @state.following.pop
787
+ if @input.peek(1).between?(SEMICOLON, COMMA)
788
+ @input.consume
789
+ @state.error_recovery = false
790
+ else
791
+ mse = MismatchedSet(nil)
792
+ raise mse
793
+ end
794
+
795
+
796
+ # --> action
797
+
798
+ @rpn += [PTGATTR, 0x02, 0].pack("C2v") # tAttrIf
799
+ pos0 = @rpn.size - 2
800
+
801
+ # <-- action
802
+ @state.following.push(TOKENS_FOLLOWING_expr_IN_primary_1176)
803
+ expr(arg_type)
804
+ @state.following.pop
805
+ if @input.peek(1).between?(SEMICOLON, COMMA)
806
+ @input.consume
807
+ @state.error_recovery = false
808
+ else
809
+ mse = MismatchedSet(nil)
810
+ raise mse
811
+ end
812
+
813
+
814
+ # --> action
815
+
816
+ @rpn += [PTGATTR, 0x08, 0].pack("C2v") # tAttrSkip
817
+ pos1 = @rpn.size - 2
818
+
819
+ @rpn = @rpn[0...pos0] + [pos1-pos0].pack("v") + @rpn[(pos0+2)...(@rpn.size)]
820
+
821
+ # <-- action
822
+ @state.following.push(TOKENS_FOLLOWING_expr_IN_primary_1205)
823
+ expr(arg_type)
824
+ @state.following.pop
825
+ match(RP, TOKENS_FOLLOWING_RP_IN_primary_1208)
826
+ # --> action
827
+
828
+ @rpn += [PTGATTR, 0x08, 3].pack("C2v") # tAttrSkip
829
+ @rpn += [PTGFUNCVARR, 3, 1].pack("C2v") # 3 = nargs, 1 = IF func
830
+ pos2 = @rpn.size
831
+
832
+ @rpn = @rpn[0...pos1] + [pos2-(pos1+2)-1].pack("v") + @rpn[(pos1+2)...(@rpn.size)]
833
+
834
+ # <-- action
835
+
836
+ when 11
837
+ # at line 186:7: FUNC_CHOOSE LP expr[\"V\"] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )* RP
838
+ match(FUNC_CHOOSE, TOKENS_FOLLOWING_FUNC_CHOOSE_IN_primary_1226)
839
+ # --> action
840
+
841
+ arg_type = "R"
842
+ rpn_chunks = []
843
+
844
+ # <-- action
845
+ match(LP, TOKENS_FOLLOWING_LP_IN_primary_1246)
846
+ @state.following.push(TOKENS_FOLLOWING_expr_IN_primary_1248)
847
+ expr("V")
848
+ @state.following.pop
849
+ # --> action
850
+
851
+ rpn_start = @rpn.size
852
+ ref_markers = [@sheet_references.size]
853
+
854
+ # <-- action
855
+ # at line 196:9: ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )*
856
+ loop do # decision 14
857
+ alt_14 = 2
858
+ look_14_0 = @input.peek(1)
859
+
860
+ if (look_14_0.between?(SEMICOLON, COMMA))
861
+ alt_14 = 1
862
+
863
+ end
864
+ case alt_14
865
+ when 1
866
+ # at line 197:13: ( SEMICOLON | COMMA ) ( expr[arg_type] | )
867
+ if @input.peek(1).between?(SEMICOLON, COMMA)
868
+ @input.consume
869
+ @state.error_recovery = false
870
+ else
871
+ mse = MismatchedSet(nil)
872
+ raise mse
873
+ end
874
+
875
+
876
+ # --> action
877
+ mark = @rpn.size
878
+ # <-- action
879
+ # at line 199:17: ( expr[arg_type] | )
880
+ alt_13 = 2
881
+ alt_13 = @dfa13.predict(@input)
882
+ case alt_13
883
+ when 1
884
+ # at line 200:19: expr[arg_type]
885
+ @state.following.push(TOKENS_FOLLOWING_expr_IN_primary_1345)
886
+ expr(arg_type)
887
+ @state.following.pop
888
+
889
+ when 2
890
+ # at line 201:19:
891
+ # --> action
892
+ @rpn += [PTGMISSARG].pack("C")
893
+ # <-- action
894
+
895
+ end
896
+ # --> action
897
+
898
+ rem = @rpn.size - mark
899
+ rpn_chunks << @rpn[mark, rem]
900
+ ref_markers << @sheet_references.size
901
+
902
+ # <-- action
903
+
904
+ else
905
+ break # out of loop for decision 14
906
+ end
907
+ end # loop for decision 14
908
+ match(RP, TOKENS_FOLLOWING_RP_IN_primary_1423)
909
+ # --> action
910
+
911
+ @rpn = @rpn[0...rpn_start]
912
+ nc = rpn_chunks.length
913
+ chunklens = rpn_chunks.collect {|c| c.length}
914
+ skiplens = [0] * nc
915
+ skiplens[nc-1] = 3
916
+
917
+ (nc-1).downto(1) do |i|
918
+ skiplens[i-1] = skiplens[i] + chunklens[i] + 4
919
+ end
920
+ jump_pos = [2*nc + 2]
921
+
922
+ (0...nc).each do |i|
923
+ jump_pos << (jump_pos.last + chunklens[i] + 4)
924
+ end
925
+ chunk_shift = 2*nc + 6 # size of tAttrChoose
926
+
927
+ (0...nc).each do |i|
928
+ (ref_markers[i]...ref_markers[i+1]).each do |r|
929
+ ref = @sheet_references[r]
930
+ @sheet_references[r] = [ref[0], ref[1], ref[2] + chunk_shift]
931
+ end
932
+ chunk_shift += 4 # size of tAttrSkip
933
+ end
934
+
935
+ choose_rpn = []
936
+ choose_rpn << [PTGATTR, 0x04, nc].pack("CCv") # 0x04 is tAttrChoose
937
+ choose_rpn << jump_pos.pack("v*")
938
+
939
+ (0...nc).each do |i|
940
+ choose_rpn << rpn_chunks[i]
941
+ choose_rpn << [PTGATTR, 0x08, skiplens[i]].pack("CCv") # 0x08 is tAttrSkip
942
+ end
943
+ choose_rpn << [PTGFUNCVARV, nc+1, 100].pack("CCv") # 100 is CHOOSE fn
944
+ @rpn += choose_rpn.join
945
+
946
+ # <-- action
947
+
948
+ when 12
949
+ # at line 246:7: name_tok= NAME
950
+ name_tok = match(NAME, TOKENS_FOLLOWING_NAME_IN_primary_1445)
951
+ # --> action
952
+
953
+ raise "[formula] found unexpected NAME token #{name_tok.text}"
954
+
955
+ # <-- action
956
+
957
+ when 13
958
+ # at line 250:7: func_tok= NAME LP arg_count= expr_list[arg_type_list, min_argc, max_argc] RP
959
+ func_tok = match(NAME, TOKENS_FOLLOWING_NAME_IN_primary_1467)
960
+ # --> action
961
+
962
+ func_toku = func_tok.text.upcase
963
+ if STD_FUNC_BY_NAME.has_key?(func_toku)
964
+ opcode, min_argc, max_argc, func_type, arg_type_str = STD_FUNC_BY_NAME[func_toku]
965
+ arg_type_list = arg_type_str.split
966
+ else
967
+ raise "[formula] unknown function #{func_tok.text}"
968
+ end
969
+ xcall = (opcode < 0)
970
+
971
+ if xcall
972
+ @xcall_references << [func_toku, @rpn.size + 1]
973
+ @rpn += [PTGNAMEXR, 0xadde, 0xefbe, 0x0000].pack("Cvvv")
974
+ end
975
+
976
+ # <-- action
977
+ match(LP, TOKENS_FOLLOWING_LP_IN_primary_1487)
978
+ @state.following.push(TOKENS_FOLLOWING_expr_list_IN_primary_1493)
979
+ arg_count = expr_list(arg_type_list, min_argc, max_argc)
980
+ @state.following.pop
981
+ match(RP, TOKENS_FOLLOWING_RP_IN_primary_1496)
982
+ # --> action
983
+
984
+ if (arg_count > max_argc) || (arg_count < min_argc)
985
+ raise "incorrect number #{arg_count} of parameters for function: #{func_tok.text}"
986
+ end
987
+
988
+ if xcall
989
+ func_ptg = PTGFUNCVARR + RVA_DELTA[func_type]
990
+ @rpn += [func_ptg, arg_count + 1, 255].pack("CCv") # 255 is magic XCALL function
991
+ elsif (min_argc == max_argc)
992
+ func_ptg = PTGFUNCR + RVA_DELTA[func_type]
993
+ @rpn += [func_ptg, opcode].pack("Cv")
994
+ elsif (arg_count == 1) && (func_tok.text.upcase === "SUM")
995
+ @rpn += [PTGATTR, 0x10, 0].pack("CCv") # tAttrSum
996
+ else
997
+ func_ptg = PTGFUNCVARR + RVA_DELTA[func_type]
998
+ @rpn += [func_ptg, arg_count, opcode].pack("CCv")
999
+ end
1000
+
1001
+ # <-- action
1002
+
1003
+ end
1004
+ rescue ANTLR3::Error::RecognitionError => re
1005
+ report_error(re)
1006
+ recover(re)
1007
+
1008
+ ensure
1009
+ # -> uncomment the next line to manually enable rule tracing
1010
+ # trace_out(__method__, 9)
1011
+
1012
+ end
1013
+
1014
+ return
1015
+ end
1016
+
1017
+
1018
+ # parser rule expr_list
1019
+ #
1020
+ # (in ExcelFormula.g)
1021
+ # 288:1: expr_list[arg_type_list, min_argc, max_argc] returns [arg_cnt] : ( ( expr[arg_type] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )* ) | );
1022
+ def expr_list(arg_type_list, min_argc, max_argc)
1023
+ # -> uncomment the next line to manually enable rule tracing
1024
+ # trace_in(__method__, 10)
1025
+ arg_cnt = nil
1026
+ # - - - - @init action - - - -
1027
+
1028
+ arg_cnt = 0
1029
+
1030
+ # Set these for processing first argument,
1031
+ # it's simpler because first argument type can't be '...'
1032
+ arg_type = arg_type_list.first
1033
+
1034
+ # need to check for '-' for a fn with no arguments
1035
+ arg_cnt += 1 unless arg_type === '-'
1036
+
1037
+
1038
+ begin
1039
+ # at line 300:5: ( ( expr[arg_type] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )* ) | )
1040
+ alt_18 = 2
1041
+ alt_18 = @dfa18.predict(@input)
1042
+ case alt_18
1043
+ when 1
1044
+ # at line 301:5: ( expr[arg_type] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )* )
1045
+ # at line 301:5: ( expr[arg_type] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )* )
1046
+ # at line 301:6: expr[arg_type] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )*
1047
+ @state.following.push(TOKENS_FOLLOWING_expr_IN_expr_list_1540)
1048
+ expr(arg_type)
1049
+ @state.following.pop
1050
+ # at line 302:9: ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )*
1051
+ loop do # decision 17
1052
+ alt_17 = 2
1053
+ look_17_0 = @input.peek(1)
1054
+
1055
+ if (look_17_0.between?(SEMICOLON, COMMA))
1056
+ alt_17 = 1
1057
+
1058
+ end
1059
+ case alt_17
1060
+ when 1
1061
+ # at line 303:14: ( SEMICOLON | COMMA ) ( expr[arg_type] | )
1062
+ if @input.peek(1).between?(SEMICOLON, COMMA)
1063
+ @input.consume
1064
+ @state.error_recovery = false
1065
+ else
1066
+ mse = MismatchedSet(nil)
1067
+ raise mse
1068
+ end
1069
+
1070
+
1071
+ # --> action
1072
+ arg_cnt += 1
1073
+ # <-- action
1074
+ # at line 304:17: ( expr[arg_type] | )
1075
+ alt_16 = 2
1076
+ alt_16 = @dfa16.predict(@input)
1077
+ case alt_16
1078
+ when 1
1079
+ # at line 306:22: expr[arg_type]
1080
+ @state.following.push(TOKENS_FOLLOWING_expr_IN_expr_list_1634)
1081
+ expr(arg_type)
1082
+ @state.following.pop
1083
+ # --> action
1084
+
1085
+ if arg_cnt - 2 < arg_type_list.size
1086
+ arg_type = arg_type_list[arg_cnt - 2]
1087
+ else
1088
+ if arg_type_list.last === "..."
1089
+ # e.g. "V R ..." arbitrary number of args of type R
1090
+ # this will always be last element in arg_type_list
1091
+ # 2nd to last element will provide type
1092
+ arg_type = arg_type_list[arg_type_list.size - 2]
1093
+ else
1094
+ # Just read last element normally.
1095
+ arg_type = arg_type_list[arg_cnt - 2]
1096
+ end
1097
+ end
1098
+
1099
+ # <-- action
1100
+
1101
+ when 2
1102
+ # at line 323:19:
1103
+ # --> action
1104
+ @rpn += [PTGMISSARG].pack("C")
1105
+ # <-- action
1106
+
1107
+ end
1108
+
1109
+ else
1110
+ break # out of loop for decision 17
1111
+ end
1112
+ end # loop for decision 17
1113
+
1114
+
1115
+ when 2
1116
+ # at line 328:5:
1117
+
1118
+ end
1119
+ rescue ANTLR3::Error::RecognitionError => re
1120
+ report_error(re)
1121
+ recover(re)
1122
+
1123
+ ensure
1124
+ # -> uncomment the next line to manually enable rule tracing
1125
+ # trace_out(__method__, 10)
1126
+
1127
+ end
1128
+
1129
+ return arg_cnt
1130
+ end
1131
+
1132
+
1133
+ # parser rule sheet
1134
+ #
1135
+ # (in ExcelFormula.g)
1136
+ # 330:1: sheet returns [ref] : (sheet_ref_name= NAME | sheet_ref_int= INT_CONST | sheet_ref_quote= QUOTENAME );
1137
+ def sheet
1138
+ # -> uncomment the next line to manually enable rule tracing
1139
+ # trace_in(__method__, 11)
1140
+ ref = nil
1141
+ sheet_ref_name = nil
1142
+ sheet_ref_int = nil
1143
+ sheet_ref_quote = nil
1144
+
1145
+ begin
1146
+ # at line 331:5: (sheet_ref_name= NAME | sheet_ref_int= INT_CONST | sheet_ref_quote= QUOTENAME )
1147
+ alt_19 = 3
1148
+ case look_19 = @input.peek(1)
1149
+ when NAME then alt_19 = 1
1150
+ when INT_CONST then alt_19 = 2
1151
+ when QUOTENAME then alt_19 = 3
1152
+ else
1153
+ nvae = NoViableAlternative("", 19, 0)
1154
+ raise nvae
1155
+ end
1156
+ case alt_19
1157
+ when 1
1158
+ # at line 331:7: sheet_ref_name= NAME
1159
+ sheet_ref_name = match(NAME, TOKENS_FOLLOWING_NAME_IN_sheet_1768)
1160
+ # --> action
1161
+ ref = sheet_ref_name.text
1162
+ # <-- action
1163
+
1164
+ when 2
1165
+ # at line 333:7: sheet_ref_int= INT_CONST
1166
+ sheet_ref_int = match(INT_CONST, TOKENS_FOLLOWING_INT_CONST_IN_sheet_1788)
1167
+ # --> action
1168
+ ref = sheet_ref_int.text
1169
+ # <-- action
1170
+
1171
+ when 3
1172
+ # at line 335:7: sheet_ref_quote= QUOTENAME
1173
+ sheet_ref_quote = match(QUOTENAME, TOKENS_FOLLOWING_QUOTENAME_IN_sheet_1808)
1174
+ # --> action
1175
+ ref = sheet_ref_quote.text[1, len(sheet_ref_quote.text) - 1].replace("''", "'")
1176
+ # <-- action
1177
+
1178
+ end
1179
+ rescue ANTLR3::Error::RecognitionError => re
1180
+ report_error(re)
1181
+ recover(re)
1182
+
1183
+ ensure
1184
+ # -> uncomment the next line to manually enable rule tracing
1185
+ # trace_out(__method__, 11)
1186
+
1187
+ end
1188
+
1189
+ return ref
1190
+ end
1191
+
1192
+
1193
+
1194
+ # - - - - - - - - - - DFA definitions - - - - - - - - - - -
1195
+ class DFA2 < ANTLR3::DFA
1196
+ EOT = unpack(10, -1)
1197
+ EOF = unpack(1, 1, 9, -1)
1198
+ MIN = unpack(1, 4, 9, -1)
1199
+ MAX = unpack(1, 29, 9, -1)
1200
+ ACCEPT = unpack(1, -1, 1, 2, 2, -1, 1, 1, 5, -1)
1201
+ SPECIAL = unpack(10, -1)
1202
+ TRANSITION = [
1203
+ unpack(6, 4, 15, -1, 1, 1, 2, -1, 2, 1),
1204
+ unpack(),
1205
+ unpack(),
1206
+ unpack(),
1207
+ unpack(),
1208
+ unpack(),
1209
+ unpack(),
1210
+ unpack(),
1211
+ unpack(),
1212
+ unpack()
1213
+ ].freeze
1214
+
1215
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1216
+ if a > 0 and z < 0
1217
+ MAX[ i ] %= 0x10000
1218
+ end
1219
+ end
1220
+
1221
+ @decision = 2
1222
+
1223
+
1224
+ def description
1225
+ <<-'__dfa_description__'.strip!
1226
+ ()* loopback of 30:9: ( ( EQ | NE | GT | LT | GE | LE ) prec0_expr[arg_type] )*
1227
+ __dfa_description__
1228
+ end
1229
+ end
1230
+ class DFA3 < ANTLR3::DFA
1231
+ EOT = unpack(11, -1)
1232
+ EOF = unpack(1, 1, 10, -1)
1233
+ MIN = unpack(1, 4, 10, -1)
1234
+ MAX = unpack(1, 29, 10, -1)
1235
+ ACCEPT = unpack(1, -1, 1, 2, 8, -1, 1, 1)
1236
+ SPECIAL = unpack(11, -1)
1237
+ TRANSITION = [
1238
+ unpack(6, 1, 1, 10, 14, -1, 1, 1, 2, -1, 2, 1),
1239
+ unpack(),
1240
+ unpack(),
1241
+ unpack(),
1242
+ unpack(),
1243
+ unpack(),
1244
+ unpack(),
1245
+ unpack(),
1246
+ unpack(),
1247
+ unpack(),
1248
+ unpack()
1249
+ ].freeze
1250
+
1251
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1252
+ if a > 0 and z < 0
1253
+ MAX[ i ] %= 0x10000
1254
+ end
1255
+ end
1256
+
1257
+ @decision = 3
1258
+
1259
+
1260
+ def description
1261
+ <<-'__dfa_description__'.strip!
1262
+ ()* loopback of 46:9: ( ( CONCAT ) prec1_expr[arg_type] )*
1263
+ __dfa_description__
1264
+ end
1265
+ end
1266
+ class DFA5 < ANTLR3::DFA
1267
+ EOT = unpack(13, -1)
1268
+ EOF = unpack(1, 1, 12, -1)
1269
+ MIN = unpack(1, 4, 12, -1)
1270
+ MAX = unpack(1, 29, 12, -1)
1271
+ ACCEPT = unpack(1, -1, 1, 2, 9, -1, 1, 1, 1, -1)
1272
+ SPECIAL = unpack(13, -1)
1273
+ TRANSITION = [
1274
+ unpack(7, 1, 2, 11, 12, -1, 1, 1, 2, -1, 2, 1),
1275
+ unpack(),
1276
+ unpack(),
1277
+ unpack(),
1278
+ unpack(),
1279
+ unpack(),
1280
+ unpack(),
1281
+ unpack(),
1282
+ unpack(),
1283
+ unpack(),
1284
+ unpack(),
1285
+ unpack(),
1286
+ unpack()
1287
+ ].freeze
1288
+
1289
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1290
+ if a > 0 and z < 0
1291
+ MAX[ i ] %= 0x10000
1292
+ end
1293
+ end
1294
+
1295
+ @decision = 5
1296
+
1297
+
1298
+ def description
1299
+ <<-'__dfa_description__'.strip!
1300
+ ()* loopback of 56:9: ( ( ADD | SUB ) prec2_expr[arg_type] )*
1301
+ __dfa_description__
1302
+ end
1303
+ end
1304
+ class DFA7 < ANTLR3::DFA
1305
+ EOT = unpack(15, -1)
1306
+ EOF = unpack(1, 1, 14, -1)
1307
+ MIN = unpack(1, 4, 14, -1)
1308
+ MAX = unpack(1, 29, 14, -1)
1309
+ ACCEPT = unpack(1, -1, 1, 2, 11, -1, 1, 1, 1, -1)
1310
+ SPECIAL = unpack(15, -1)
1311
+ TRANSITION = [
1312
+ unpack(9, 1, 2, 13, 10, -1, 1, 1, 2, -1, 2, 1),
1313
+ unpack(),
1314
+ unpack(),
1315
+ unpack(),
1316
+ unpack(),
1317
+ unpack(),
1318
+ unpack(),
1319
+ unpack(),
1320
+ unpack(),
1321
+ unpack(),
1322
+ unpack(),
1323
+ unpack(),
1324
+ unpack(),
1325
+ unpack(),
1326
+ unpack()
1327
+ ].freeze
1328
+
1329
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1330
+ if a > 0 and z < 0
1331
+ MAX[ i ] %= 0x10000
1332
+ end
1333
+ end
1334
+
1335
+ @decision = 7
1336
+
1337
+
1338
+ def description
1339
+ <<-'__dfa_description__'.strip!
1340
+ ()* loopback of 68:9: ( ( MUL | DIV ) prec3_expr[arg_type] )*
1341
+ __dfa_description__
1342
+ end
1343
+ end
1344
+ class DFA8 < ANTLR3::DFA
1345
+ EOT = unpack(16, -1)
1346
+ EOF = unpack(1, 1, 15, -1)
1347
+ MIN = unpack(1, 4, 15, -1)
1348
+ MAX = unpack(1, 29, 15, -1)
1349
+ ACCEPT = unpack(1, -1, 1, 2, 13, -1, 1, 1)
1350
+ SPECIAL = unpack(16, -1)
1351
+ TRANSITION = [
1352
+ unpack(11, 1, 1, 15, 9, -1, 1, 1, 2, -1, 2, 1),
1353
+ unpack(),
1354
+ unpack(),
1355
+ unpack(),
1356
+ unpack(),
1357
+ unpack(),
1358
+ unpack(),
1359
+ unpack(),
1360
+ unpack(),
1361
+ unpack(),
1362
+ unpack(),
1363
+ unpack(),
1364
+ unpack(),
1365
+ unpack(),
1366
+ unpack(),
1367
+ unpack()
1368
+ ].freeze
1369
+
1370
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1371
+ if a > 0 and z < 0
1372
+ MAX[ i ] %= 0x10000
1373
+ end
1374
+ end
1375
+
1376
+ @decision = 8
1377
+
1378
+
1379
+ def description
1380
+ <<-'__dfa_description__'.strip!
1381
+ ()* loopback of 79:9: ( ( POWER ) prec4_expr[arg_type] )*
1382
+ __dfa_description__
1383
+ end
1384
+ end
1385
+ class DFA9 < ANTLR3::DFA
1386
+ EOT = unpack(17, -1)
1387
+ EOF = unpack(1, 2, 16, -1)
1388
+ MIN = unpack(1, 4, 16, -1)
1389
+ MAX = unpack(1, 29, 16, -1)
1390
+ ACCEPT = unpack(1, -1, 1, 1, 1, 2, 14, -1)
1391
+ SPECIAL = unpack(17, -1)
1392
+ TRANSITION = [
1393
+ unpack(12, 2, 1, 1, 8, -1, 1, 2, 2, -1, 2, 2),
1394
+ unpack(),
1395
+ unpack(),
1396
+ unpack(),
1397
+ unpack(),
1398
+ unpack(),
1399
+ unpack(),
1400
+ unpack(),
1401
+ unpack(),
1402
+ unpack(),
1403
+ unpack(),
1404
+ unpack(),
1405
+ unpack(),
1406
+ unpack(),
1407
+ unpack(),
1408
+ unpack(),
1409
+ unpack()
1410
+ ].freeze
1411
+
1412
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1413
+ if a > 0 and z < 0
1414
+ MAX[ i ] %= 0x10000
1415
+ end
1416
+ end
1417
+
1418
+ @decision = 9
1419
+
1420
+
1421
+ def description
1422
+ <<-'__dfa_description__'.strip!
1423
+ 89:9: ( PERCENT )?
1424
+ __dfa_description__
1425
+ end
1426
+ end
1427
+ class DFA10 < ANTLR3::DFA
1428
+ EOT = unpack(13, -1)
1429
+ EOF = unpack(13, -1)
1430
+ MIN = unpack(1, 12, 12, -1)
1431
+ MAX = unpack(1, 32, 12, -1)
1432
+ ACCEPT = unpack(1, -1, 1, 1, 10, -1, 1, 2)
1433
+ SPECIAL = unpack(13, -1)
1434
+ TRANSITION = [
1435
+ unpack(1, 12, 4, -1, 6, 1, 1, -1, 1, 1, 2, -1, 1, 1, 2, -1, 3, 1),
1436
+ unpack(),
1437
+ unpack(),
1438
+ unpack(),
1439
+ unpack(),
1440
+ unpack(),
1441
+ unpack(),
1442
+ unpack(),
1443
+ unpack(),
1444
+ unpack(),
1445
+ unpack(),
1446
+ unpack(),
1447
+ unpack()
1448
+ ].freeze
1449
+
1450
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1451
+ if a > 0 and z < 0
1452
+ MAX[ i ] %= 0x10000
1453
+ end
1454
+ end
1455
+
1456
+ @decision = 10
1457
+
1458
+
1459
+ def description
1460
+ <<-'__dfa_description__'.strip!
1461
+ 94:1: prec5_expr[arg_type] : ( primary[arg_type] | SUB primary[arg_type] );
1462
+ __dfa_description__
1463
+ end
1464
+ end
1465
+ class DFA15 < ANTLR3::DFA
1466
+ EOT = unpack(66, -1)
1467
+ EOF = unpack(4, -1, 1, 12, 1, -1, 1, 31, 1, -1, 1, 49, 57, -1)
1468
+ MIN = unpack(1, 17, 3, -1, 1, 4, 1, -1, 1, 4, 1, -1, 1, 4, 57, -1)
1469
+ MAX = unpack(1, 32, 3, -1, 1, 29, 1, -1, 1, 29, 1, -1, 1, 29, 57,
1470
+ -1)
1471
+ ACCEPT = unpack(1, -1, 1, 1, 1, 2, 1, 3, 1, -1, 1, 5, 1, -1, 1, 8,
1472
+ 1, -1, 1, 9, 1, 10, 1, 11, 1, 4, 17, -1, 1, 7, 1,
1473
+ 6, 17, -1, 1, 12, 15, -1, 1, 13)
1474
+ SPECIAL = unpack(66, -1)
1475
+ TRANSITION = [
1476
+ unpack(1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, -1, 1, 7, 2, -1, 1,
1477
+ 10, 2, -1, 1, 11, 1, 8, 1, 9),
1478
+ unpack(),
1479
+ unpack(),
1480
+ unpack(),
1481
+ unpack(13, 12, 6, -1, 1, 9, 1, -1, 1, 12, 1, 9, 1, -1, 2, 12),
1482
+ unpack(),
1483
+ unpack(13, 31, 6, -1, 1, 30, 1, -1, 1, 31, 2, -1, 2, 31),
1484
+ unpack(),
1485
+ unpack(13, 49, 6, -1, 1, 9, 1, 65, 1, 49, 1, 9, 1, -1, 2, 49),
1486
+ unpack(),
1487
+ unpack(),
1488
+ unpack(),
1489
+ unpack(),
1490
+ unpack(),
1491
+ unpack(),
1492
+ unpack(),
1493
+ unpack(),
1494
+ unpack(),
1495
+ unpack(),
1496
+ unpack(),
1497
+ unpack(),
1498
+ unpack(),
1499
+ unpack(),
1500
+ unpack(),
1501
+ unpack(),
1502
+ unpack(),
1503
+ unpack(),
1504
+ unpack(),
1505
+ unpack(),
1506
+ unpack(),
1507
+ unpack(),
1508
+ unpack(),
1509
+ unpack(),
1510
+ unpack(),
1511
+ unpack(),
1512
+ unpack(),
1513
+ unpack(),
1514
+ unpack(),
1515
+ unpack(),
1516
+ unpack(),
1517
+ unpack(),
1518
+ unpack(),
1519
+ unpack(),
1520
+ unpack(),
1521
+ unpack(),
1522
+ unpack(),
1523
+ unpack(),
1524
+ unpack(),
1525
+ unpack(),
1526
+ unpack(),
1527
+ unpack(),
1528
+ unpack(),
1529
+ unpack(),
1530
+ unpack(),
1531
+ unpack(),
1532
+ unpack(),
1533
+ unpack(),
1534
+ unpack(),
1535
+ unpack(),
1536
+ unpack(),
1537
+ unpack(),
1538
+ unpack(),
1539
+ unpack(),
1540
+ unpack(),
1541
+ unpack(),
1542
+ unpack()
1543
+ ].freeze
1544
+
1545
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1546
+ if a > 0 and z < 0
1547
+ MAX[ i ] %= 0x10000
1548
+ end
1549
+ end
1550
+
1551
+ @decision = 15
1552
+
1553
+
1554
+ def description
1555
+ <<-'__dfa_description__'.strip!
1556
+ 99:1: primary[arg_type] : ( TRUE_CONST | FALSE_CONST | str_tok= STR_CONST | int_tok= INT_CONST | num_tok= NUM_CONST | ref2d_tok= REF2D | ref2d1_tok= REF2D COLON ref2d2_tok= REF2D | LP expr[arg_type] RP | sheet1= sheet ( COLON sheet2= sheet )? BANG ref3d_ref2d= REF2D ( COLON ref3d_ref2d2= REF2D )? | FUNC_IF LP expr[\"V\"] ( SEMICOLON | COMMA ) expr[arg_type] ( SEMICOLON | COMMA ) expr[arg_type] RP | FUNC_CHOOSE LP expr[\"V\"] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )* RP | name_tok= NAME | func_tok= NAME LP arg_count= expr_list[arg_type_list, min_argc, max_argc] RP );
1557
+ __dfa_description__
1558
+ end
1559
+ end
1560
+ class DFA12 < ANTLR3::DFA
1561
+ EOT = unpack(18, -1)
1562
+ EOF = unpack(1, 2, 17, -1)
1563
+ MIN = unpack(1, 4, 17, -1)
1564
+ MAX = unpack(1, 29, 17, -1)
1565
+ ACCEPT = unpack(1, -1, 1, 1, 1, 2, 15, -1)
1566
+ SPECIAL = unpack(18, -1)
1567
+ TRANSITION = [
1568
+ unpack(13, 2, 6, -1, 1, 1, 1, -1, 1, 2, 2, -1, 2, 2),
1569
+ unpack(),
1570
+ unpack(),
1571
+ unpack(),
1572
+ unpack(),
1573
+ unpack(),
1574
+ unpack(),
1575
+ unpack(),
1576
+ unpack(),
1577
+ unpack(),
1578
+ unpack(),
1579
+ unpack(),
1580
+ unpack(),
1581
+ unpack(),
1582
+ unpack(),
1583
+ unpack(),
1584
+ unpack(),
1585
+ unpack()
1586
+ ].freeze
1587
+
1588
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1589
+ if a > 0 and z < 0
1590
+ MAX[ i ] %= 0x10000
1591
+ end
1592
+ end
1593
+
1594
+ @decision = 12
1595
+
1596
+
1597
+ def description
1598
+ <<-'__dfa_description__'.strip!
1599
+ 153:9: ( COLON ref3d_ref2d2= REF2D )?
1600
+ __dfa_description__
1601
+ end
1602
+ end
1603
+ class DFA13 < ANTLR3::DFA
1604
+ EOT = unpack(15, -1)
1605
+ EOF = unpack(15, -1)
1606
+ MIN = unpack(1, 12, 14, -1)
1607
+ MAX = unpack(1, 32, 14, -1)
1608
+ ACCEPT = unpack(1, -1, 1, 1, 11, -1, 1, 2, 1, -1)
1609
+ SPECIAL = unpack(15, -1)
1610
+ TRANSITION = [
1611
+ unpack(1, 1, 4, -1, 6, 1, 1, -1, 1, 1, 1, 13, 1, -1, 1, 1, 2, 13,
1612
+ 3, 1),
1613
+ unpack(),
1614
+ unpack(),
1615
+ unpack(),
1616
+ unpack(),
1617
+ unpack(),
1618
+ unpack(),
1619
+ unpack(),
1620
+ unpack(),
1621
+ unpack(),
1622
+ unpack(),
1623
+ unpack(),
1624
+ unpack(),
1625
+ unpack(),
1626
+ unpack()
1627
+ ].freeze
1628
+
1629
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1630
+ if a > 0 and z < 0
1631
+ MAX[ i ] %= 0x10000
1632
+ end
1633
+ end
1634
+
1635
+ @decision = 13
1636
+
1637
+
1638
+ def description
1639
+ <<-'__dfa_description__'.strip!
1640
+ 199:17: ( expr[arg_type] | )
1641
+ __dfa_description__
1642
+ end
1643
+ end
1644
+ class DFA18 < ANTLR3::DFA
1645
+ EOT = unpack(14, -1)
1646
+ EOF = unpack(14, -1)
1647
+ MIN = unpack(1, 12, 13, -1)
1648
+ MAX = unpack(1, 32, 13, -1)
1649
+ ACCEPT = unpack(1, -1, 1, 1, 11, -1, 1, 2)
1650
+ SPECIAL = unpack(14, -1)
1651
+ TRANSITION = [
1652
+ unpack(1, 1, 4, -1, 6, 1, 1, -1, 1, 1, 1, 13, 1, -1, 1, 1, 2, -1,
1653
+ 3, 1),
1654
+ unpack(),
1655
+ unpack(),
1656
+ unpack(),
1657
+ unpack(),
1658
+ unpack(),
1659
+ unpack(),
1660
+ unpack(),
1661
+ unpack(),
1662
+ unpack(),
1663
+ unpack(),
1664
+ unpack(),
1665
+ unpack(),
1666
+ unpack()
1667
+ ].freeze
1668
+
1669
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1670
+ if a > 0 and z < 0
1671
+ MAX[ i ] %= 0x10000
1672
+ end
1673
+ end
1674
+
1675
+ @decision = 18
1676
+
1677
+
1678
+ def description
1679
+ <<-'__dfa_description__'.strip!
1680
+ 288:1: expr_list[arg_type_list, min_argc, max_argc] returns [arg_cnt] : ( ( expr[arg_type] ( ( SEMICOLON | COMMA ) ( expr[arg_type] | ) )* ) | );
1681
+ __dfa_description__
1682
+ end
1683
+ end
1684
+ class DFA16 < ANTLR3::DFA
1685
+ EOT = unpack(15, -1)
1686
+ EOF = unpack(15, -1)
1687
+ MIN = unpack(1, 12, 14, -1)
1688
+ MAX = unpack(1, 32, 14, -1)
1689
+ ACCEPT = unpack(1, -1, 1, 1, 11, -1, 1, 2, 1, -1)
1690
+ SPECIAL = unpack(15, -1)
1691
+ TRANSITION = [
1692
+ unpack(1, 1, 4, -1, 6, 1, 1, -1, 1, 1, 1, 13, 1, -1, 1, 1, 2, 13,
1693
+ 3, 1),
1694
+ unpack(),
1695
+ unpack(),
1696
+ unpack(),
1697
+ unpack(),
1698
+ unpack(),
1699
+ unpack(),
1700
+ unpack(),
1701
+ unpack(),
1702
+ unpack(),
1703
+ unpack(),
1704
+ unpack(),
1705
+ unpack(),
1706
+ unpack(),
1707
+ unpack()
1708
+ ].freeze
1709
+
1710
+ ( 0 ... MIN.length ).zip( MIN, MAX ) do | i, a, z |
1711
+ if a > 0 and z < 0
1712
+ MAX[ i ] %= 0x10000
1713
+ end
1714
+ end
1715
+
1716
+ @decision = 16
1717
+
1718
+
1719
+ def description
1720
+ <<-'__dfa_description__'.strip!
1721
+ 304:17: ( expr[arg_type] | )
1722
+ __dfa_description__
1723
+ end
1724
+ end
1725
+
1726
+
1727
+ private
1728
+
1729
+ def initialize_dfas
1730
+ super rescue nil
1731
+ @dfa2 = DFA2.new(self, 2)
1732
+ @dfa3 = DFA3.new(self, 3)
1733
+ @dfa5 = DFA5.new(self, 5)
1734
+ @dfa7 = DFA7.new(self, 7)
1735
+ @dfa8 = DFA8.new(self, 8)
1736
+ @dfa9 = DFA9.new(self, 9)
1737
+ @dfa10 = DFA10.new(self, 10)
1738
+ @dfa15 = DFA15.new(self, 15)
1739
+ @dfa12 = DFA12.new(self, 12)
1740
+ @dfa13 = DFA13.new(self, 13)
1741
+ @dfa18 = DFA18.new(self, 18)
1742
+ @dfa16 = DFA16.new(self, 16)
1743
+
1744
+ end
1745
+ TOKENS_FOLLOWING_expr_IN_formula_56 = Set[1]
1746
+ TOKENS_FOLLOWING_prec0_expr_IN_expr_75 = Set[1, 4, 5, 6, 7, 8, 9]
1747
+ TOKENS_FOLLOWING_EQ_IN_expr_120 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1748
+ TOKENS_FOLLOWING_NE_IN_expr_142 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1749
+ TOKENS_FOLLOWING_GT_IN_expr_164 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1750
+ TOKENS_FOLLOWING_LT_IN_expr_186 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1751
+ TOKENS_FOLLOWING_GE_IN_expr_208 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1752
+ TOKENS_FOLLOWING_LE_IN_expr_230 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1753
+ TOKENS_FOLLOWING_prec0_expr_IN_expr_261 = Set[1, 4, 5, 6, 7, 8, 9]
1754
+ TOKENS_FOLLOWING_prec1_expr_IN_prec0_expr_293 = Set[1, 10]
1755
+ TOKENS_FOLLOWING_CONCAT_IN_prec0_expr_336 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1756
+ TOKENS_FOLLOWING_prec1_expr_IN_prec0_expr_366 = Set[1, 10]
1757
+ TOKENS_FOLLOWING_prec2_expr_IN_prec1_expr_398 = Set[1, 11, 12]
1758
+ TOKENS_FOLLOWING_ADD_IN_prec1_expr_443 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1759
+ TOKENS_FOLLOWING_SUB_IN_prec1_expr_465 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1760
+ TOKENS_FOLLOWING_prec2_expr_IN_prec1_expr_495 = Set[1, 11, 12]
1761
+ TOKENS_FOLLOWING_prec3_expr_IN_prec2_expr_528 = Set[1, 13, 14]
1762
+ TOKENS_FOLLOWING_MUL_IN_prec2_expr_573 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1763
+ TOKENS_FOLLOWING_DIV_IN_prec2_expr_595 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1764
+ TOKENS_FOLLOWING_prec3_expr_IN_prec2_expr_625 = Set[1, 13, 14]
1765
+ TOKENS_FOLLOWING_prec4_expr_IN_prec3_expr_657 = Set[1, 15]
1766
+ TOKENS_FOLLOWING_POWER_IN_prec3_expr_700 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1767
+ TOKENS_FOLLOWING_prec4_expr_IN_prec3_expr_730 = Set[1, 15]
1768
+ TOKENS_FOLLOWING_prec5_expr_IN_prec4_expr_762 = Set[1, 16]
1769
+ TOKENS_FOLLOWING_PERCENT_IN_prec4_expr_787 = Set[1]
1770
+ TOKENS_FOLLOWING_primary_IN_prec5_expr_818 = Set[1]
1771
+ TOKENS_FOLLOWING_SUB_IN_prec5_expr_827 = Set[17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1772
+ TOKENS_FOLLOWING_primary_IN_prec5_expr_829 = Set[1]
1773
+ TOKENS_FOLLOWING_TRUE_CONST_IN_primary_850 = Set[1]
1774
+ TOKENS_FOLLOWING_FALSE_CONST_IN_primary_868 = Set[1]
1775
+ TOKENS_FOLLOWING_STR_CONST_IN_primary_890 = Set[1]
1776
+ TOKENS_FOLLOWING_INT_CONST_IN_primary_912 = Set[1]
1777
+ TOKENS_FOLLOWING_NUM_CONST_IN_primary_930 = Set[1]
1778
+ TOKENS_FOLLOWING_REF2D_IN_primary_952 = Set[1]
1779
+ TOKENS_FOLLOWING_REF2D_IN_primary_974 = Set[23]
1780
+ TOKENS_FOLLOWING_COLON_IN_primary_976 = Set[22]
1781
+ TOKENS_FOLLOWING_REF2D_IN_primary_982 = Set[1]
1782
+ TOKENS_FOLLOWING_LP_IN_primary_1000 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1783
+ TOKENS_FOLLOWING_expr_IN_primary_1002 = Set[25]
1784
+ TOKENS_FOLLOWING_RP_IN_primary_1005 = Set[1]
1785
+ TOKENS_FOLLOWING_sheet_IN_primary_1028 = Set[23, 26]
1786
+ TOKENS_FOLLOWING_COLON_IN_primary_1050 = Set[20, 31, 32]
1787
+ TOKENS_FOLLOWING_sheet_IN_primary_1056 = Set[26]
1788
+ TOKENS_FOLLOWING_BANG_IN_primary_1061 = Set[22]
1789
+ TOKENS_FOLLOWING_REF2D_IN_primary_1065 = Set[1, 23]
1790
+ TOKENS_FOLLOWING_COLON_IN_primary_1087 = Set[22]
1791
+ TOKENS_FOLLOWING_REF2D_IN_primary_1092 = Set[1]
1792
+ TOKENS_FOLLOWING_FUNC_IF_IN_primary_1135 = Set[24]
1793
+ TOKENS_FOLLOWING_LP_IN_primary_1145 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1794
+ TOKENS_FOLLOWING_expr_IN_primary_1147 = Set[28, 29]
1795
+ TOKENS_FOLLOWING_set_IN_primary_1150 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1796
+ TOKENS_FOLLOWING_expr_IN_primary_1176 = Set[28, 29]
1797
+ TOKENS_FOLLOWING_set_IN_primary_1179 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1798
+ TOKENS_FOLLOWING_expr_IN_primary_1205 = Set[25]
1799
+ TOKENS_FOLLOWING_RP_IN_primary_1208 = Set[1]
1800
+ TOKENS_FOLLOWING_FUNC_CHOOSE_IN_primary_1226 = Set[24]
1801
+ TOKENS_FOLLOWING_LP_IN_primary_1246 = Set[12, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 32]
1802
+ TOKENS_FOLLOWING_expr_IN_primary_1248 = Set[25, 28, 29]
1803
+ TOKENS_FOLLOWING_set_IN_primary_1283 = Set[12, 17, 18, 19, 20, 21, 22, 24, 25, 27, 28, 29, 30, 31, 32]
1804
+ TOKENS_FOLLOWING_expr_IN_primary_1345 = Set[25, 28, 29]
1805
+ TOKENS_FOLLOWING_RP_IN_primary_1423 = Set[1]
1806
+ TOKENS_FOLLOWING_NAME_IN_primary_1445 = Set[1]
1807
+ TOKENS_FOLLOWING_NAME_IN_primary_1467 = Set[24]
1808
+ TOKENS_FOLLOWING_LP_IN_primary_1487 = Set[12, 17, 18, 19, 20, 21, 22, 24, 25, 27, 30, 31, 32]
1809
+ TOKENS_FOLLOWING_expr_list_IN_primary_1493 = Set[25]
1810
+ TOKENS_FOLLOWING_RP_IN_primary_1496 = Set[1]
1811
+ TOKENS_FOLLOWING_expr_IN_expr_list_1540 = Set[1, 28, 29]
1812
+ TOKENS_FOLLOWING_set_IN_expr_list_1566 = Set[1, 12, 17, 18, 19, 20, 21, 22, 24, 27, 28, 29, 30, 31, 32]
1813
+ TOKENS_FOLLOWING_expr_IN_expr_list_1634 = Set[1, 28, 29]
1814
+ TOKENS_FOLLOWING_NAME_IN_sheet_1768 = Set[1]
1815
+ TOKENS_FOLLOWING_INT_CONST_IN_sheet_1788 = Set[1]
1816
+ TOKENS_FOLLOWING_QUOTENAME_IN_sheet_1808 = Set[1]
1817
+
1818
+ end # class Parser < ANTLR3::Parser
1819
+
1820
+ at_exit { Parser.main(ARGV) } if __FILE__ == $0
1821
+ end
1822
+