dbc 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2397 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by racc 1.4.4
4
+ # from racc grammer file "src/ctype.y".
5
+ #
6
+
7
+ require 'racc/parser'
8
+
9
+
10
+
11
+ require 'dbc/ctokenizer'
12
+ require 'dbc/parseerrorhandler'
13
+
14
+ class Module
15
+ private
16
+ def setter(*symbols)
17
+ symbols.each do |s|
18
+ s = s.to_s
19
+ #raise "invalid attribute #{s}" unless s =~ /\A[A-Za-z_]\w*\Z/
20
+ module_eval(%Q{
21
+ def #{s}?
22
+ @#{s}
23
+ end
24
+ def set_#{s}
25
+ raise ParseError, "#{s} specified more than once" if @#{s}
26
+ @#{s} = true
27
+ self
28
+ end
29
+ })
30
+ end
31
+ nil
32
+ end # setter
33
+ end # Module
34
+
35
+ module CType
36
+ class EvaluationError < StandardError; end
37
+
38
+ def CType.evaluation_error(part)
39
+ raise EvaluationError, "cannot evaluate '#{part}'"
40
+ end
41
+
42
+ @@typedefs = {}
43
+ def CType.parse(source)
44
+ tokens = CTokenizer::SkipMacros.new(source)
45
+ ctype_parser = Parser.new()
46
+
47
+ until tokens.empty?
48
+ results = ctype_parser.parse(tokens)
49
+ until tokens.scope == 0 or tokens.empty?
50
+ # get back to group zero
51
+ tokens.shift
52
+ end
53
+ if results
54
+ results = [results] unless results.class == Array
55
+ results.each do |t|
56
+ @@typedefs[t.to_s] = t if t.typedef?
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ def CType.[](val)
63
+ @@typedefs[val]
64
+ end
65
+
66
+ def CType.include?(val)
67
+ @@typedefs.include?(val)
68
+ end
69
+
70
+ def CType.[]=(val, new_val)
71
+ raise "expecting a String got #{val.class}" if val.class != String
72
+ raise "type #{val} already defined" if @@typedefs.include?(val)
73
+ @@typedefs[val] = new_val
74
+ end
75
+
76
+ class StructUnion
77
+ # want only one instance of each unique Struct or Union
78
+ def StructUnion.get(type, name, members = nil)
79
+ case type
80
+ when 'struct'
81
+ if members
82
+ Struct[name].add(members)
83
+ else
84
+ Struct[name]
85
+ end
86
+ when 'union'
87
+ if members
88
+ Union[name].add(members)
89
+ else
90
+ Union[name]
91
+ end
92
+ end
93
+ end
94
+ def initialize(name = nil)
95
+ @name = name
96
+ @members = nil
97
+ end
98
+ def add(items)
99
+ #warn "structure or union #{@name} already defined" if @members
100
+ @members = items.flatten
101
+ self
102
+ end
103
+ def lookup(identifier)
104
+ @members.find do |m|
105
+ identifier == m.identifier
106
+ end
107
+ end
108
+
109
+ def get_members
110
+ @members.dup
111
+ end
112
+
113
+ def evaluate(identifier)
114
+ return self if identifier.empty?
115
+ CType.evaluation_error(identifier) unless identifier =~ /\A\.([A-Za-z_]\w*)/
116
+ post_match = $'
117
+ p_type = lookup($1)
118
+ if p_type
119
+ p_type.evaluate(post_match)
120
+ else
121
+ CType.evaluation_error(identifier)
122
+ end
123
+ end
124
+
125
+ def keyword
126
+ if self.class == Struct
127
+ 'struct'
128
+ elsif self.class == Union
129
+ 'union'
130
+ end
131
+ end
132
+ def to_s
133
+ to_init_s()
134
+ end
135
+ def to_init_s(ident = nil)
136
+ str = ''
137
+ str << keyword
138
+ str << ' ' << @name if @name
139
+ str << ' ' << ident if ident
140
+ str # make sure we don't return nil
141
+ end
142
+
143
+ # to_def is pretty much depreciated - might be useful for debugging in the future
144
+ # to_def methods would have to be added to all classes in this module though.
145
+ def to_def(indent='')
146
+ str = to_s
147
+ str << " {\n"
148
+ @members.each do |m|
149
+ str << indent << "\t" << m.to_def(indent + "\t") << ";\n"
150
+ end
151
+ str << indent << '}'
152
+ end
153
+ end # StructUnion
154
+
155
+ class Struct < StructUnion
156
+ @@structs = {}
157
+ # factory method
158
+ def Struct.[](val = nil)
159
+ # for unnamed structures
160
+ return Struct.send(:new) unless val
161
+
162
+ result = @@structs[val]
163
+ unless result
164
+ result = @@structs[val] = Struct.send(:new, val)
165
+ end
166
+ result
167
+ end
168
+
169
+ class << self
170
+ protected :new
171
+ end
172
+ def initialize(name = nil)
173
+ super
174
+ end
175
+ end # Struct
176
+
177
+ class Union < StructUnion
178
+ @@unions = {}
179
+ # factory method
180
+ def Union.[](val = nil)
181
+ # for unnamed structures
182
+ return Union.send(:new) unless val
183
+
184
+ result = @@unions[val]
185
+ unless result
186
+ result = @@unions[val] = Union.send(:new, val)
187
+ end
188
+ result
189
+ end
190
+ class << self
191
+ protected :new
192
+ end
193
+ def initialize(name = nil)
194
+ super
195
+ end
196
+ end # Union
197
+
198
+ class Enum
199
+ @@enums = {}
200
+ def Enum.[](val = nil)
201
+ # for unnamed enumerations
202
+ return Enum.send(:new, nil) unless val
203
+
204
+ result = @@enums[val]
205
+ unless result
206
+ result = @@enums[val] = Enum.send(:new, val)
207
+ end
208
+ result
209
+ end
210
+
211
+ class << self
212
+ protected :new
213
+ end
214
+
215
+ def initialize(name)
216
+ @name = name
217
+ @members = nil
218
+ end
219
+ def add(items)
220
+ warn "enum #{@name} already defined" if @members
221
+ @members = items
222
+ self
223
+ end
224
+ def evaluate
225
+ CType.evaluation_error(identifier) unless identifier.empty?
226
+ self
227
+ end
228
+ def to_s
229
+ to_init_s()
230
+ end
231
+ def to_init_s(ident=nil)
232
+ str = 'enum'
233
+ str << ' ' << @name if @name
234
+ str << ' ' << ident if ident
235
+ str
236
+ end
237
+ def to_def(indent='')
238
+ str = to_s
239
+ str << " {\n"
240
+ @members.each do |name, num|
241
+ str << indent << "\t" << name
242
+ str << " = #{num.to_s}" if num
243
+ str << ",\n"
244
+ end
245
+ str[-2, 2] = "\n" # get rid of trailing comma
246
+ str << indent << "}"
247
+ end
248
+ end # Enum
249
+
250
+ class Primitive
251
+ def initialize(val)
252
+ @primitives = [val]
253
+ end
254
+
255
+ def insert(val)
256
+ @primitives.insert(0, val)
257
+ self
258
+ end
259
+ def evaluate(identifier)
260
+ CType.evaluation_error(identifier) unless identifier.empty?
261
+ self
262
+ end
263
+ def to_s
264
+ to_init_s()
265
+ end
266
+ def to_init_s(ident=nil)
267
+ str = @primitives.join(' ')
268
+ str << ' ' << ident if ident
269
+ str
270
+ end
271
+ end # Primitive
272
+
273
+ module Qualifiable
274
+ setter :const, :volatile
275
+ def add_qualifier(q)
276
+ case q
277
+ when 'const'
278
+ set_const
279
+ when 'volatile'
280
+ set_volatile
281
+ else
282
+ raise "invalid type qualifier #{q}" # shouldn't get here
283
+ end
284
+ end
285
+ end
286
+
287
+ module BaseReference
288
+ attr_reader :base_type
289
+ def base_type=(val)
290
+ if @base_type
291
+ @base_type.base_type = val
292
+ else
293
+ @base_type = val
294
+ end
295
+ end
296
+ end
297
+
298
+ class Base
299
+ include Qualifiable
300
+
301
+ def initialize(type)
302
+ @primitive = type
303
+ end
304
+
305
+ attr_reader :primitive
306
+
307
+ def to_s
308
+ to_init_s
309
+ end
310
+
311
+ def evaluate(identifier)
312
+ self.primitive.evaluate(identifier)
313
+ end
314
+
315
+ def to_init_s(ident=nil)
316
+ str = ''
317
+ str << 'const ' if @const
318
+ str << 'volatile ' if @volatile
319
+ str << @primitive.to_init_s(ident)
320
+ end
321
+ end # Base
322
+
323
+ class Pointer
324
+ include Qualifiable
325
+ include BaseReference
326
+
327
+ def initialize(type_qualifiers=[])
328
+ @const = false
329
+ @volatile = false
330
+ @base_type = nil
331
+ type_qualifiers.each do |q|
332
+ add_qualifier(q)
333
+ end # do
334
+ end
335
+
336
+ def evaluate(identifier)
337
+ return self if identifier.empty?
338
+ if identifier =~ /\A->/
339
+ self.base_type.evaluate('.' + $')
340
+ elsif identifier =~ /\A\[.+?\]/
341
+ self.base_type.evaluate($')
342
+ else
343
+ CType.evaluation_error(identifier)
344
+ end
345
+ end
346
+
347
+ def to_s
348
+ to_init_s()
349
+ end
350
+ def to_init_s(ident=nil)
351
+ str = '*'
352
+ str << ' const' if @const
353
+ str << ' volatile' if @volatile
354
+ str << ' ' << ident if ident
355
+ if @base_type.class == Type and (@base_type.function? or @base_type.array?)
356
+ # then parens are required
357
+ str[0,0] = '('
358
+ str << ')'
359
+ end
360
+ if @base_type
361
+ @base_type.to_init_s(str)
362
+ else
363
+ str
364
+ end
365
+ end
366
+ end # Pointer
367
+
368
+ class Type
369
+ setter :inline, :typedef, :extern, :static, :auto, :register
370
+ include BaseReference
371
+
372
+ def initialize(identifier=nil)
373
+ @identifier = identifier
374
+ @dimensions = []
375
+ @parameters = nil
376
+ @base_type = nil
377
+ @size = nil
378
+ end
379
+
380
+ def dup
381
+ new_type = Type.new(self.identifier)
382
+ self.dimensions.each do |d|
383
+ new_type.dimensions << d
384
+ end
385
+ new_type.parameters = self.parameters
386
+ new_type.base_type = self.base_type
387
+ new_type.size = self.size
388
+ new_type
389
+ end
390
+
391
+ def abstract?
392
+ @identifier == nil
393
+ end
394
+ attr_reader :identifier, :dimensions, :parameters, :size
395
+
396
+ def parameters=(params)
397
+ raise ParseError, "invalid type" if @parameters
398
+ params = List.new(true) unless params
399
+ @parameters = params
400
+ end
401
+
402
+ def add_parameter_declarations(declarations)
403
+ # @parameters should be an identifier list
404
+ if @parameters.length != declarations.length
405
+ raise ParseError, "invalid function definition"
406
+ end
407
+ declarations.each do |d|
408
+ idx = @parameters.index(d.identifier)
409
+ unless idx
410
+ raise ParseError, "identifier not found in parameter list: #{d.identifier}"
411
+ end
412
+ @parameters[idx] = d
413
+ end
414
+ self
415
+ end
416
+
417
+ # array of specifiers, last element is type specifier
418
+ def add_declaration_specifiers(val)
419
+ # make sure we don't modify specifiers
420
+ val = val.dup
421
+ self.base_type = val.pop
422
+ val.each do |s|
423
+ self.add_specifier(s)
424
+ end
425
+ self
426
+ end
427
+
428
+ # override this
429
+ def set_typedef
430
+ raise "typedef must have a name" if abstract?
431
+ @typedef = true
432
+ self
433
+ end
434
+
435
+ def add_specifier(s)
436
+ case s
437
+ when 'inline'
438
+ set_inline
439
+ when 'typedef'
440
+ set_typedef
441
+ when 'extern'
442
+ set_extern
443
+ when 'static'
444
+ set_static
445
+ when 'auto'
446
+ set_auto
447
+ when 'register'
448
+ set_register
449
+ else
450
+ raise "unexpected storage class specifier #{s}"
451
+ end
452
+ end
453
+
454
+ def size=(val)
455
+ raise "bit field size already set" if @size
456
+ @size = val
457
+ end
458
+
459
+ def bit_field?
460
+ @size != nil
461
+ end
462
+
463
+ def evaluate(identifier)
464
+ if identifier.empty?
465
+ result = self
466
+ elsif identifier =~ /\A[A-Za-z_]\w*/
467
+ post_match = $'
468
+ p_type = @parameters.lookup($&) if function?
469
+ CType.evaluation_error(identifier) unless p_type
470
+ p_type.evaluate(post_match)
471
+ elsif identifier =~ /\A(?:\s*\[[^\]]*\])+/
472
+ if self.dimensions.empty?
473
+ # then let the base type evaluate this
474
+ @base_type.evaluate(identifier)
475
+ else
476
+ post_match = $'
477
+
478
+ indicies = $&.scan(/\[.+?\]/)
479
+ ret_type = self.dup
480
+
481
+ min = indicies.length
482
+ if min > self.dimensions.length
483
+ min = self.dimensions.length
484
+ end
485
+ # remove lower dimensions
486
+ min.times do
487
+ ret_type.dimensions.shift
488
+ indicies.shift
489
+ end
490
+ ret_type.evaluate(indicies.join << post_match)
491
+ end
492
+ else
493
+ @base_type.evaluate(identifier)
494
+ end
495
+ end
496
+
497
+ def function?
498
+ @parameters != nil
499
+ end
500
+
501
+ def array?
502
+ @dimensions.length > 0
503
+ end
504
+
505
+ def prototype?
506
+ @parameters.prototype?
507
+ end
508
+
509
+ def to_init_s(ident=nil)
510
+ str = ''
511
+ if typedef?
512
+ str << @identifier
513
+ str << ' ' << ident if ident
514
+ else
515
+ ident = @identifier unless ident
516
+ str << ident if ident
517
+ str << '(' << @parameters.to_s << ')' if @parameters
518
+ @dimensions.each do |d|
519
+ str << "[#{d}]"
520
+ end
521
+ # should pass nil to base_type if we have nothing to add
522
+ str = @base_type.to_init_s(str.empty? ? nil : str) if @base_type
523
+ end
524
+ str
525
+ end
526
+
527
+ def to_s
528
+ to_init_s
529
+ end
530
+
531
+ def short_name
532
+ if typedef?
533
+ @identifier.dup
534
+ elsif function?
535
+ "#{@identifier}()"
536
+ else
537
+ to_init_s('')
538
+ end
539
+ end
540
+ end # Type
541
+
542
+ class List < Array
543
+ def initialize(proto=false)
544
+ super()
545
+ @ellipses = false
546
+ @prototype = proto
547
+ self.freeze if @prototype
548
+ end
549
+
550
+ # check if K & R style prototype: main();
551
+ def prototype?
552
+ @prototype
553
+ end
554
+
555
+ def lookup(ident)
556
+ self.find { |p| p.identifier == ident }
557
+ end
558
+
559
+ def with_ellipses()
560
+ raise "already has ellipses #{self}" if ellipses?
561
+ raise "prototype with ellipses?" if prototype?
562
+ @ellipses = true
563
+ self.freeze
564
+ end
565
+
566
+ def ellipses?
567
+ @ellipses
568
+ end
569
+
570
+ def finalize
571
+ if self.length == 1 and self[0].to_s == 'void'
572
+ self.pop # get rid of (void)
573
+ end
574
+ self.freeze
575
+ end
576
+
577
+ def to_s
578
+ if self.length == 0
579
+ if prototype?
580
+ ''
581
+ else
582
+ 'void'
583
+ end
584
+ else
585
+ if ellipses?
586
+ [self, '...']
587
+ else
588
+ self
589
+ end.join(', ')
590
+ end
591
+ end
592
+ end # List
593
+
594
+ end # module CType
595
+
596
+
597
+ module CType
598
+
599
+ class Parser < Racc::Parser
600
+
601
+ module_eval <<'..end src/ctype.y modeval..id9e584388f8', 'src/ctype.y', 1113
602
+
603
+ def parse(str, file=nil, line=1)
604
+ @tokens = CTokenizer::CLexer.new(str, file, line)
605
+
606
+ #@yydebug = true
607
+ begin
608
+ do_parse
609
+ rescue ParseError
610
+ @tokens.error($!)
611
+ end
612
+ end
613
+
614
+ protected
615
+
616
+ include ParseErrorHandler
617
+
618
+ def next_token
619
+ t = nil
620
+ loop do
621
+ t = @tokens.shift
622
+ # ignore comments, newlines, and spaces
623
+ case t[0]
624
+ when :SPACE, :COMMENT, :NEWLINE
625
+ next
626
+ when :IDENTIFIER
627
+ tdef = CType[t[1]]
628
+ t = [:TYPEDEF_NAME, tdef] if tdef
629
+ end
630
+ break
631
+ end
632
+ t
633
+ end
634
+
635
+ ..end src/ctype.y modeval..id9e584388f8
636
+
637
+ ##### racc 1.4.4 generates ###
638
+
639
+ racc_reduce_table = [
640
+ 0, 0, :racc_error,
641
+ 1, 78, :_reduce_1,
642
+ 1, 78, :_reduce_2,
643
+ 1, 79, :_reduce_none,
644
+ 2, 79, :_reduce_4,
645
+ 0, 80, :_reduce_5,
646
+ 1, 80, :_reduce_6,
647
+ 1, 83, :_reduce_none,
648
+ 1, 83, :_reduce_none,
649
+ 1, 83, :_reduce_none,
650
+ 1, 83, :_reduce_none,
651
+ 1, 83, :_reduce_none,
652
+ 1, 83, :_reduce_none,
653
+ 1, 84, :_reduce_none,
654
+ 1, 84, :_reduce_none,
655
+ 1, 84, :_reduce_none,
656
+ 1, 84, :_reduce_none,
657
+ 1, 84, :_reduce_none,
658
+ 1, 84, :_reduce_none,
659
+ 1, 84, :_reduce_none,
660
+ 1, 84, :_reduce_none,
661
+ 1, 84, :_reduce_none,
662
+ 1, 85, :_reduce_none,
663
+ 1, 85, :_reduce_none,
664
+ 1, 86, :_reduce_none,
665
+ 1, 86, :_reduce_none,
666
+ 1, 87, :_reduce_26,
667
+ 1, 88, :_reduce_none,
668
+ 2, 88, :_reduce_28,
669
+ 1, 89, :_reduce_none,
670
+ 1, 90, :_reduce_none,
671
+ 1, 90, :_reduce_none,
672
+ 1, 90, :_reduce_none,
673
+ 1, 90, :_reduce_none,
674
+ 3, 90, :_reduce_34,
675
+ 1, 92, :_reduce_none,
676
+ 2, 92, :_reduce_36,
677
+ 2, 92, :_reduce_37,
678
+ 2, 92, :_reduce_38,
679
+ 2, 92, :_reduce_39,
680
+ 2, 92, :_reduce_40,
681
+ 2, 92, :_reduce_41,
682
+ 4, 92, :_reduce_42,
683
+ 1, 94, :_reduce_none,
684
+ 4, 94, :_reduce_44,
685
+ 1, 95, :_reduce_none,
686
+ 3, 95, :_reduce_46,
687
+ 3, 95, :_reduce_47,
688
+ 3, 95, :_reduce_48,
689
+ 1, 96, :_reduce_none,
690
+ 3, 96, :_reduce_50,
691
+ 3, 96, :_reduce_51,
692
+ 1, 97, :_reduce_none,
693
+ 3, 97, :_reduce_53,
694
+ 3, 97, :_reduce_54,
695
+ 1, 98, :_reduce_none,
696
+ 3, 98, :_reduce_56,
697
+ 3, 98, :_reduce_57,
698
+ 3, 98, :_reduce_58,
699
+ 3, 98, :_reduce_59,
700
+ 1, 99, :_reduce_none,
701
+ 3, 99, :_reduce_61,
702
+ 3, 99, :_reduce_62,
703
+ 1, 100, :_reduce_none,
704
+ 3, 100, :_reduce_64,
705
+ 1, 101, :_reduce_none,
706
+ 3, 101, :_reduce_66,
707
+ 1, 102, :_reduce_none,
708
+ 3, 102, :_reduce_68,
709
+ 1, 103, :_reduce_none,
710
+ 3, 103, :_reduce_70,
711
+ 1, 104, :_reduce_none,
712
+ 3, 104, :_reduce_72,
713
+ 1, 105, :_reduce_none,
714
+ 5, 105, :_reduce_74,
715
+ 1, 91, :_reduce_none,
716
+ 3, 82, :_reduce_76,
717
+ 2, 82, :_reduce_77,
718
+ 1, 108, :_reduce_78,
719
+ 2, 108, :_reduce_79,
720
+ 3, 81, :_reduce_80,
721
+ 2, 81, :_reduce_81,
722
+ 1, 109, :_reduce_82,
723
+ 3, 109, :_reduce_83,
724
+ 1, 110, :_reduce_none,
725
+ 3, 110, :_reduce_none,
726
+ 1, 111, :_reduce_none,
727
+ 3, 111, :_reduce_87,
728
+ 4, 111, :_reduce_88,
729
+ 1, 113, :_reduce_none,
730
+ 3, 113, :_reduce_90,
731
+ 1, 112, :_reduce_none,
732
+ 1, 112, :_reduce_none,
733
+ 3, 112, :_reduce_93,
734
+ 1, 114, :_reduce_none,
735
+ 1, 114, :_reduce_none,
736
+ 1, 114, :_reduce_none,
737
+ 1, 114, :_reduce_none,
738
+ 1, 114, :_reduce_none,
739
+ 1, 114, :_reduce_none,
740
+ 1, 114, :_reduce_none,
741
+ 1, 114, :_reduce_none,
742
+ 1, 114, :_reduce_none,
743
+ 1, 114, :_reduce_none,
744
+ 1, 114, :_reduce_none,
745
+ 1, 106, :_reduce_105,
746
+ 2, 106, :_reduce_106,
747
+ 2, 106, :_reduce_107,
748
+ 1, 116, :_reduce_108,
749
+ 2, 116, :_reduce_109,
750
+ 1, 115, :_reduce_110,
751
+ 1, 115, :_reduce_111,
752
+ 1, 115, :_reduce_112,
753
+ 1, 115, :_reduce_113,
754
+ 1, 119, :_reduce_none,
755
+ 1, 119, :_reduce_115,
756
+ 5, 117, :_reduce_116,
757
+ 4, 117, :_reduce_117,
758
+ 2, 117, :_reduce_118,
759
+ 1, 120, :_reduce_119,
760
+ 2, 120, :_reduce_120,
761
+ 3, 121, :_reduce_121,
762
+ 2, 121, :_reduce_122,
763
+ 1, 122, :_reduce_none,
764
+ 2, 122, :_reduce_124,
765
+ 1, 123, :_reduce_125,
766
+ 3, 123, :_reduce_126,
767
+ 1, 124, :_reduce_none,
768
+ 2, 124, :_reduce_128,
769
+ 3, 124, :_reduce_129,
770
+ 1, 107, :_reduce_130,
771
+ 2, 125, :_reduce_131,
772
+ 1, 125, :_reduce_none,
773
+ 1, 128, :_reduce_none,
774
+ 1, 127, :_reduce_134,
775
+ 3, 127, :_reduce_135,
776
+ 4, 127, :_reduce_136,
777
+ 3, 127, :_reduce_137,
778
+ 4, 127, :_reduce_138,
779
+ 4, 127, :_reduce_139,
780
+ 3, 127, :_reduce_140,
781
+ 5, 118, :_reduce_141,
782
+ 4, 118, :_reduce_142,
783
+ 2, 118, :_reduce_143,
784
+ 1, 131, :_reduce_none,
785
+ 2, 131, :_reduce_none,
786
+ 1, 132, :_reduce_146,
787
+ 3, 132, :_reduce_147,
788
+ 1, 133, :_reduce_148,
789
+ 3, 133, :_reduce_149,
790
+ 2, 126, :_reduce_150,
791
+ 1, 126, :_reduce_151,
792
+ 3, 126, :_reduce_152,
793
+ 2, 126, :_reduce_153,
794
+ 1, 134, :_reduce_154,
795
+ 2, 134, :_reduce_155,
796
+ 1, 129, :_reduce_156,
797
+ 3, 129, :_reduce_157,
798
+ 1, 135, :_reduce_158,
799
+ 3, 135, :_reduce_159,
800
+ 2, 136, :_reduce_160,
801
+ 2, 136, :_reduce_161,
802
+ 1, 136, :_reduce_162,
803
+ 1, 130, :_reduce_163,
804
+ 1, 138, :_reduce_164,
805
+ 3, 138, :_reduce_165,
806
+ 1, 93, :_reduce_166,
807
+ 2, 93, :_reduce_167,
808
+ 1, 137, :_reduce_168,
809
+ 1, 139, :_reduce_169,
810
+ 1, 139, :_reduce_none,
811
+ 2, 139, :_reduce_171,
812
+ 3, 140, :_reduce_172,
813
+ 2, 140, :_reduce_173,
814
+ 3, 140, :_reduce_174,
815
+ 3, 140, :_reduce_175,
816
+ 4, 140, :_reduce_176,
817
+ 2, 140, :_reduce_177,
818
+ 3, 140, :_reduce_178,
819
+ 3, 140, :_reduce_179,
820
+ 4, 140, :_reduce_180 ]
821
+
822
+ racc_reduce_n = 181
823
+
824
+ racc_shift_n = 268
825
+
826
+ racc_action_table = [
827
+ 114, 116, 119, 167, 47, 97, 102, 114, 116, 119,
828
+ 50, 147, 97, 102, 180, 179, 99, 103, 106, 54,
829
+ 19, 54, 50, 99, 103, 106, 153, 50, 54, 47,
830
+ 17, 23, 27, 30, 33, 35, 1, 3, 6, 9,
831
+ 12, 16, 22, 111, 50, 117, 47, 50, 151, 145,
832
+ 111, 45, 117, 114, 116, 119, 50, 168, 97, 102,
833
+ 114, 116, 119, 236, 144, 97, 102, 31, 153, 99,
834
+ 103, 106, 50, 259, 54, 47, 99, 103, 106, 205,
835
+ 73, 54, 221, 16, 22, 151, 16, 22, 62, 47,
836
+ 151, 47, 236, 169, 221, 62, 111, 45, 117, 184,
837
+ 185, 186, 187, 111, 222, 117, 50, 143, 204, 72,
838
+ 63, 45, 164, 45, 151, 165, 222, 63, 249, 217,
839
+ 250, 136, 158, 159, 19, 47, 112, 84, 36, 2,
840
+ 4, 7, 10, 13, 17, 23, 27, 30, 33, 35,
841
+ 1, 3, 6, 9, 12, 16, 22, 153, 220, 198,
842
+ 50, 199, 200, 201, 190, 191, 192, 193, 194, 196,
843
+ 197, 184, 185, 186, 187, 172, 170, 171, 19, 151,
844
+ 161, 31, 36, 2, 4, 7, 10, 13, 17, 23,
845
+ 27, 30, 33, 35, 1, 3, 6, 9, 12, 16,
846
+ 22, 236, 220, 50, 184, 185, 186, 187, 180, 179,
847
+ 114, 116, 119, 180, 179, 97, 102, 50, 50, 172,
848
+ 170, 171, 47, 151, 138, 31, 99, 103, 106, 125,
849
+ 253, 54, 127, 172, 170, 171, 47, 47, 49, 49,
850
+ 53, 54, 55, 254, 45, 53, 54, 57, 180, 179,
851
+ 180, 179, 136, 111, 255, 117, 176, 177, 45, 45,
852
+ 207, 19, 176, 177, 264, 36, 2, 4, 7, 10,
853
+ 13, 17, 23, 27, 30, 33, 35, 1, 3, 6,
854
+ 9, 12, 16, 22, 19, 211, -77, 54, 36, 2,
855
+ 4, 7, 10, 13, 17, 23, 27, 30, 33, 35,
856
+ 1, 3, 6, 9, 12, 16, 22, 54, 31, 213,
857
+ 176, 177, 158, 159, 148, 160, 161, 66, 66, 167,
858
+ 260, 125, 38, 120, 79, 99, 103, 106, 19, 54,
859
+ 54, 31, 36, 2, 4, 7, 10, 13, 17, 23,
860
+ 27, 30, 33, 35, 1, 3, 6, 9, 12, 16,
861
+ 22, 19, 163, 99, 103, 106, 156, 157, 54, 262,
862
+ 238, 17, 23, 27, 30, 33, 35, 1, 3, 6,
863
+ 9, 12, 16, 22, 237, 31, 114, 116, 119, 60,
864
+ 163, 97, 102, 160, 37, 208, 265, 266, 165, 19,
865
+ nil, nil, 99, 103, 106, nil, nil, 54, 31, 17,
866
+ 23, 27, 30, 33, 35, 1, 3, 6, 9, 12,
867
+ 16, 22, 182, 19, nil, 99, 103, 106, nil, 111,
868
+ 54, 117, nil, 17, 23, 27, 30, 33, 35, 1,
869
+ 3, 6, 9, 12, 16, 22, 31, 19, nil, nil,
870
+ nil, nil, 163, nil, nil, nil, nil, 17, 23, 27,
871
+ 30, 33, 35, 1, 3, 6, 9, 12, 16, 22,
872
+ 31, 19, nil, nil, nil, 36, 2, 4, 7, 10,
873
+ 13, 17, 23, 27, 30, 33, 35, 1, 3, 6,
874
+ 9, 12, 16, 22, 31, 257, 114, 116, 119, nil,
875
+ nil, 97, 102, nil, nil, nil, 99, 103, 106, 19,
876
+ nil, 54, 99, 103, 106, nil, nil, 54, 31, 17,
877
+ 23, 27, 30, 33, 35, 1, 3, 6, 9, 12,
878
+ 16, 22, 19, 163, nil, 99, 103, 106, nil, 111,
879
+ 54, 117, 17, 23, 27, 30, 33, 35, 1, 3,
880
+ 6, 9, 12, 16, 22, nil, 31, nil, nil, nil,
881
+ nil, nil, 163, nil, nil, nil, 141, 17, 23, 27,
882
+ 30, 33, 35, 1, 3, 6, 19, 54, nil, 31,
883
+ 36, 2, 4, 7, 10, 13, 17, 23, 27, 30,
884
+ 33, 35, 1, 3, 6, 9, 12, 16, 22, 19,
885
+ 90, nil, nil, 36, 2, 4, 7, 10, 13, 17,
886
+ 23, 27, 30, 33, 35, 1, 3, 6, 9, 12,
887
+ 16, 22, 19, 31, nil, nil, nil, nil, nil, nil,
888
+ nil, nil, 17, 23, 27, 30, 33, 35, 1, 3,
889
+ 6, 9, 12, 16, 22, 19, 31, nil, 34, 36,
890
+ 2, 4, 7, 10, 13, 17, 23, 27, 30, 33,
891
+ 35, 1, 3, 6, 9, 12, 16, 22, 19, 31,
892
+ nil, nil, 36, 2, 4, 7, 10, 13, 17, 23,
893
+ 27, 30, 33, 35, 1, 3, 6, 9, 12, 16,
894
+ 22, nil, 31, 114, 116, 119, nil, nil, 97, 102,
895
+ 114, 116, 119, nil, nil, 97, 102, nil, nil, 99,
896
+ 103, 106, nil, nil, 54, 31, 99, 103, 106, 125,
897
+ nil, 54, 127, 114, 116, 119, nil, nil, 97, 102,
898
+ nil, nil, nil, nil, nil, nil, 111, nil, 117, 99,
899
+ 103, 106, nil, 111, 54, 117, 114, 116, 119, nil,
900
+ nil, 97, 102, 114, 116, 119, nil, nil, 97, 102,
901
+ nil, nil, 99, 103, 106, nil, 111, 54, 117, 99,
902
+ 103, 106, nil, nil, 54, nil, 114, 116, 119, nil,
903
+ nil, 97, 102, nil, nil, nil, nil, nil, nil, 111,
904
+ nil, 117, 99, 103, 106, 125, 111, 54, 117, 114,
905
+ 116, 119, nil, nil, 97, 102, 114, 116, 119, nil,
906
+ nil, 97, 102, nil, nil, 99, 103, 106, nil, 111,
907
+ 54, 117, 99, 103, 106, 125, nil, 54, 127, 114,
908
+ 116, 119, nil, nil, 97, 102, nil, nil, nil, nil,
909
+ nil, nil, 111, nil, 117, 99, 103, 106, nil, 111,
910
+ 54, 117, 114, 116, 119, nil, nil, 97, 102, 114,
911
+ 116, 119, nil, nil, 97, 102, nil, nil, 99, 103,
912
+ 106, nil, 111, 54, 117, 99, 103, 106, nil, nil,
913
+ 54, nil, 114, 116, 119, nil, nil, 97, 102, nil,
914
+ nil, nil, nil, nil, nil, 111, nil, 117, 99, 103,
915
+ 106, nil, 111, 54, 117, 114, 116, 119, nil, nil,
916
+ 97, 102, 114, 116, 119, nil, nil, 97, 102, nil,
917
+ nil, 99, 103, 106, nil, 111, 54, 117, 99, 103,
918
+ 106, nil, nil, 54, nil, 114, 116, 119, nil, nil,
919
+ 97, 102, nil, nil, nil, nil, nil, nil, 111, nil,
920
+ 117, 99, 103, 106, nil, 111, 54, 117, 114, 116,
921
+ 119, nil, nil, 97, 102, 114, 116, 119, nil, nil,
922
+ 97, 102, nil, nil, 99, 103, 106, nil, 111, 54,
923
+ 117, 99, 103, 106, nil, nil, 54, nil, 114, 116,
924
+ 119, nil, nil, 97, 102, nil, nil, nil, nil, nil,
925
+ nil, 111, nil, 117, 99, 103, 106, nil, 111, 54,
926
+ 117, 114, 116, 119, nil, nil, 97, 102, 114, 116,
927
+ 119, nil, nil, 97, 102, nil, nil, 99, 103, 106,
928
+ nil, 111, 54, 117, 99, 103, 106, nil, nil, 54,
929
+ nil, 114, 116, 119, nil, nil, 97, 102, nil, nil,
930
+ nil, nil, nil, nil, 111, nil, 117, 99, 103, 106,
931
+ nil, 111, 54, 117, 114, 116, 119, nil, nil, 97,
932
+ 102, 114, 116, 119, nil, nil, 97, 102, nil, nil,
933
+ 99, 103, 106, nil, 111, 54, 117, 99, 103, 106,
934
+ nil, nil, 54, nil, 114, 116, 119, nil, nil, 97,
935
+ 102, nil, nil, nil, nil, nil, nil, 111, nil, 117,
936
+ 99, 103, 106, nil, 111, 54, 117, 114, 116, 119,
937
+ nil, nil, 97, 102, 114, 116, 119, nil, nil, 97,
938
+ 102, nil, nil, 99, 103, 106, nil, 111, 54, 117,
939
+ 99, 103, 106, nil, nil, 54, nil, nil, nil, nil,
940
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
941
+ 111, nil, 117, nil, nil, nil, nil, 111, nil, 117 ]
942
+
943
+ racc_action_check = [
944
+ 111, 111, 111, 104, 150, 111, 111, 222, 222, 222,
945
+ 45, 86, 222, 222, 115, 115, 111, 111, 111, 84,
946
+ 111, 111, 173, 222, 222, 222, 150, 89, 222, 45,
947
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
948
+ 111, 111, 111, 111, 50, 111, 89, 69, 150, 83,
949
+ 222, 45, 222, 151, 151, 151, 72, 107, 151, 151,
950
+ 63, 63, 63, 173, 81, 63, 63, 111, 89, 151,
951
+ 151, 151, 204, 222, 151, 72, 63, 63, 63, 134,
952
+ 51, 63, 215, 50, 50, 173, 69, 69, 61, 43,
953
+ 89, 204, 234, 107, 154, 44, 151, 72, 151, 118,
954
+ 118, 118, 118, 63, 215, 63, 153, 80, 134, 51,
955
+ 61, 43, 100, 204, 234, 101, 154, 44, 203, 151,
956
+ 203, 204, 93, 93, 153, 153, 63, 58, 153, 153,
957
+ 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
958
+ 153, 153, 153, 153, 153, 153, 153, 153, 153, 124,
959
+ 236, 124, 124, 124, 124, 124, 124, 124, 124, 124,
960
+ 124, 224, 224, 224, 224, 110, 110, 110, 236, 153,
961
+ 96, 153, 236, 236, 236, 236, 236, 236, 236, 236,
962
+ 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
963
+ 236, 236, 236, 75, 223, 223, 223, 223, 247, 247,
964
+ 249, 249, 249, 246, 246, 249, 249, 26, 67, 239,
965
+ 239, 239, 75, 236, 75, 236, 249, 249, 249, 249,
966
+ 216, 249, 249, 240, 240, 240, 26, 67, 26, 67,
967
+ 28, 28, 28, 218, 75, 31, 31, 31, 245, 245,
968
+ 244, 244, 75, 249, 219, 249, 242, 242, 26, 67,
969
+ 137, 147, 241, 241, 249, 147, 147, 147, 147, 147,
970
+ 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
971
+ 147, 147, 147, 147, 48, 146, 48, 143, 48, 48,
972
+ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
973
+ 48, 48, 48, 48, 48, 48, 48, 148, 147, 147,
974
+ 113, 113, 225, 225, 88, 226, 227, 48, 129, 229,
975
+ 230, 121, 18, 64, 56, 114, 114, 114, 32, 57,
976
+ 114, 48, 32, 32, 32, 32, 32, 32, 32, 32,
977
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
978
+ 32, 142, 114, 119, 119, 119, 91, 92, 119, 243,
979
+ 175, 142, 142, 142, 142, 142, 142, 142, 142, 142,
980
+ 142, 142, 142, 142, 174, 32, 187, 187, 187, 37,
981
+ 119, 187, 187, 94, 5, 142, 256, 258, 228, 116,
982
+ nil, nil, 187, 187, 187, nil, nil, 187, 142, 116,
983
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
984
+ 116, 116, 116, 55, nil, 102, 102, 102, nil, 187,
985
+ 102, 187, nil, 55, 55, 55, 55, 55, 55, 55,
986
+ 55, 55, 55, 55, 55, 55, 116, 182, nil, nil,
987
+ nil, nil, 102, nil, nil, nil, nil, 182, 182, 182,
988
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
989
+ 55, 221, nil, nil, nil, 221, 221, 221, 221, 221,
990
+ 221, 221, 221, 221, 221, 221, 221, 221, 221, 221,
991
+ 221, 221, 221, 221, 182, 221, 260, 260, 260, nil,
992
+ nil, 260, 260, nil, nil, nil, 117, 117, 117, 79,
993
+ nil, 117, 260, 260, 260, nil, nil, 260, 221, 79,
994
+ 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
995
+ 79, 79, 78, 117, nil, 97, 97, 97, nil, 260,
996
+ 97, 260, 78, 78, 78, 78, 78, 78, 78, 78,
997
+ 78, 78, 78, 78, 78, nil, 79, nil, nil, nil,
998
+ nil, nil, 97, nil, nil, nil, 78, 25, 25, 25,
999
+ 25, 25, 25, 25, 25, 25, 62, 62, nil, 78,
1000
+ 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
1001
+ 62, 62, 62, 62, 62, 62, 62, 62, 62, 21,
1002
+ 62, nil, nil, 21, 21, 21, 21, 21, 21, 21,
1003
+ 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1004
+ 21, 21, 77, 62, nil, nil, nil, nil, nil, nil,
1005
+ nil, nil, 77, 77, 77, 77, 77, 77, 77, 77,
1006
+ 77, 77, 77, 77, 77, 0, 21, nil, 0, 0,
1007
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1008
+ 0, 0, 0, 0, 0, 0, 0, 0, 68, 77,
1009
+ nil, nil, 68, 68, 68, 68, 68, 68, 68, 68,
1010
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
1011
+ 68, nil, 0, 136, 136, 136, nil, nil, 136, 136,
1012
+ 66, 66, 66, nil, nil, 66, 66, nil, nil, 136,
1013
+ 136, 136, nil, nil, 136, 68, 66, 66, 66, 66,
1014
+ nil, 66, 66, 238, 238, 238, nil, nil, 238, 238,
1015
+ nil, nil, nil, nil, nil, nil, 136, nil, 136, 238,
1016
+ 238, 238, nil, 66, 238, 66, 144, 144, 144, nil,
1017
+ nil, 144, 144, 207, 207, 207, nil, nil, 207, 207,
1018
+ nil, nil, 144, 144, 144, nil, 238, 144, 238, 207,
1019
+ 207, 207, nil, nil, 207, nil, 195, 195, 195, nil,
1020
+ nil, 195, 195, nil, nil, nil, nil, nil, nil, 144,
1021
+ nil, 144, 195, 195, 195, 195, 207, 195, 207, 186,
1022
+ 186, 186, nil, nil, 186, 186, 127, 127, 127, nil,
1023
+ nil, 127, 127, nil, nil, 186, 186, 186, nil, 195,
1024
+ 186, 195, 127, 127, 127, 127, nil, 127, 127, 185,
1025
+ 185, 185, nil, nil, 185, 185, nil, nil, nil, nil,
1026
+ nil, nil, 186, nil, 186, 185, 185, 185, nil, 127,
1027
+ 185, 127, 184, 184, 184, nil, nil, 184, 184, 180,
1028
+ 180, 180, nil, nil, 180, 180, nil, nil, 184, 184,
1029
+ 184, nil, 185, 184, 185, 180, 180, 180, nil, nil,
1030
+ 180, nil, 179, 179, 179, nil, nil, 179, 179, nil,
1031
+ nil, nil, nil, nil, nil, 184, nil, 184, 179, 179,
1032
+ 179, nil, 180, 179, 180, 177, 177, 177, nil, nil,
1033
+ 177, 177, 176, 176, 176, nil, nil, 176, 176, nil,
1034
+ nil, 177, 177, 177, nil, 179, 177, 179, 176, 176,
1035
+ 176, nil, nil, 176, nil, 172, 172, 172, nil, nil,
1036
+ 172, 172, nil, nil, nil, nil, nil, nil, 177, nil,
1037
+ 177, 172, 172, 172, nil, 176, 172, 176, 158, 158,
1038
+ 158, nil, nil, 158, 158, 170, 170, 170, nil, nil,
1039
+ 170, 170, nil, nil, 158, 158, 158, nil, 172, 158,
1040
+ 172, 170, 170, 170, nil, nil, 170, nil, 169, 169,
1041
+ 169, nil, nil, 169, 169, nil, nil, nil, nil, nil,
1042
+ nil, 158, nil, 158, 169, 169, 169, nil, 170, 169,
1043
+ 170, 168, 168, 168, nil, nil, 168, 168, 167, 167,
1044
+ 167, nil, nil, 167, 167, nil, nil, 168, 168, 168,
1045
+ nil, 169, 168, 169, 167, 167, 167, nil, nil, 167,
1046
+ nil, 165, 165, 165, nil, nil, 165, 165, nil, nil,
1047
+ nil, nil, nil, nil, 168, nil, 168, 165, 165, 165,
1048
+ nil, 167, 165, 167, 163, 163, 163, nil, nil, 163,
1049
+ 163, 161, 161, 161, nil, nil, 161, 161, nil, nil,
1050
+ 163, 163, 163, nil, 165, 163, 165, 161, 161, 161,
1051
+ nil, nil, 161, nil, 160, 160, 160, nil, nil, 160,
1052
+ 160, nil, nil, nil, nil, nil, nil, 163, nil, 163,
1053
+ 160, 160, 160, nil, 161, 160, 161, 159, 159, 159,
1054
+ nil, nil, 159, 159, 171, 171, 171, nil, nil, 171,
1055
+ 171, nil, nil, 159, 159, 159, nil, 160, 159, 160,
1056
+ 171, 171, 171, nil, nil, 171, nil, nil, nil, nil,
1057
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1058
+ 159, nil, 159, nil, nil, nil, nil, 171, nil, 171 ]
1059
+
1060
+ racc_action_pointer = [
1061
+ 597, nil, nil, nil, nil, 374, nil, nil, nil, nil,
1062
+ nil, nil, nil, nil, nil, nil, nil, nil, 282, nil,
1063
+ nil, 551, nil, nil, nil, 509, 197, nil, 202, nil,
1064
+ nil, 207, 290, nil, nil, nil, nil, 369, nil, nil,
1065
+ nil, nil, nil, 60, 44, 0, nil, nil, 246, nil,
1066
+ 34, 49, nil, nil, nil, 375, 284, 290, 97, nil,
1067
+ nil, 37, 528, 52, 261, nil, 672, 198, 620, 37,
1068
+ nil, nil, 46, nil, nil, 183, nil, 574, 484, 461,
1069
+ 47, 3, nil, -13, -10, nil, -49, nil, 244, 17,
1070
+ nil, 294, 295, 103, 320, nil, 114, 491, nil, nil,
1071
+ 38, 58, 381, nil, -18, nil, nil, 35, nil, nil,
1072
+ 155, -8, nil, 287, 291, -40, 351, 462, 84, 319,
1073
+ nil, 284, nil, nil, 88, nil, nil, 778, nil, 247,
1074
+ nil, nil, nil, nil, 48, nil, 665, 191, nil, nil,
1075
+ nil, nil, 313, 248, 718, nil, 213, 223, 268, nil,
1076
+ -25, 45, nil, 96, 43, nil, nil, nil, 930, 1089,
1077
+ 1066, 1043, nil, 1036, nil, 1013, nil, 990, 983, 960,
1078
+ 937, 1096, 907, 12, 312, 298, 884, 877, nil, 854,
1079
+ 831, nil, 399, nil, 824, 801, 771, 358, nil, nil,
1080
+ nil, nil, nil, nil, nil, 748, nil, nil, nil, nil,
1081
+ nil, nil, nil, 58, 62, nil, nil, 725, nil, nil,
1082
+ nil, nil, nil, nil, nil, 31, 146, nil, 181, 192,
1083
+ nil, 423, -1, 179, 146, 283, 252, 250, 321, 288,
1084
+ 251, nil, nil, nil, 41, nil, 140, nil, 695, 199,
1085
+ 213, 239, 233, 297, 186, 184, 149, 144, nil, 192,
1086
+ nil, nil, nil, nil, nil, nil, 324, nil, 303, nil,
1087
+ 468, nil, nil, nil, nil, nil, nil, nil ]
1088
+
1089
+ racc_action_default = [
1090
+ -5, -19, -8, -20, -9, -181, -21, -10, -1, -22,
1091
+ -11, -2, -23, -12, -3, -105, -24, -13, -181, -113,
1092
+ -110, -181, -25, -14, -111, -108, -181, -15, -181, -112,
1093
+ -16, -181, -181, -17, -6, -18, -7, -181, -4, -106,
1094
+ -109, -82, -130, -181, -132, -181, -134, -133, -84, -81,
1095
+ -151, -181, -114, -115, -29, -181, -118, -181, -143, -107,
1096
+ 268, -131, -181, -181, -181, -78, -181, -181, -76, -150,
1097
+ -153, -154, -181, -80, -119, -181, -123, -181, -181, -181,
1098
+ -144, -148, -146, -181, -181, -164, -156, -158, -163, -162,
1099
+ -140, -181, -181, -63, -65, -33, -67, -181, -35, -30,
1100
+ -181, -69, -181, -31, -71, -43, -32, -73, -75, -45,
1101
+ -49, -181, -137, -52, -181, -55, -181, -181, -60, -181,
1102
+ -135, -92, -85, -86, -43, -26, -91, -181, -27, -84,
1103
+ -79, -152, -155, -83, -181, -125, -181, -127, -122, -124,
1104
+ -120, -117, -181, -145, -181, -142, -181, -181, -181, -161,
1105
+ -169, -181, -168, -181, -170, -160, -138, -139, -181, -181,
1106
+ -181, -181, -38, -181, -136, -181, -39, -181, -181, -181,
1107
+ -181, -181, -181, -166, -181, -181, -181, -181, -40, -181,
1108
+ -181, -41, -181, -36, -181, -181, -181, -181, -37, -28,
1109
+ -98, -99, -100, -101, -102, -181, -103, -104, -94, -95,
1110
+ -96, -97, -89, -181, -181, -121, -128, -181, -116, -147,
1111
+ -149, -141, -159, -157, -165, -171, -181, -173, -181, -181,
1112
+ -177, -181, -181, -61, -62, -64, -66, -68, -70, -72,
1113
+ -181, -47, -48, -46, -169, -167, -181, -34, -181, -50,
1114
+ -51, -54, -53, -181, -56, -58, -57, -59, -93, -181,
1115
+ -87, -126, -129, -174, -172, -178, -181, -179, -181, -175,
1116
+ -181, -44, -42, -90, -88, -180, -176, -74 ]
1117
+
1118
+ racc_goto_table = [
1119
+ 126, 70, 122, 124, 48, 100, 91, 71, 135, 76,
1120
+ 52, 64, 77, 52, 61, 139, 149, 215, 175, 218,
1121
+ 131, 83, 78, 181, 14, 133, 132, 231, 232, 233,
1122
+ 140, 76, 76, 76, 77, 77, 77, 26, 56, 81,
1123
+ 150, 58, 239, 240, 85, 203, 142, 40, 146, 173,
1124
+ 241, 242, 248, 137, 173, 223, 224, 162, 39, 195,
1125
+ 68, 126, 166, 202, 124, 76, 81, 155, 77, 59,
1126
+ 76, 229, 65, 77, 178, 134, 228, 183, 206, 188,
1127
+ 244, 245, 246, 247, 227, 67, 210, 226, 225, 243,
1128
+ 189, 92, 130, 216, 140, 261, 76, 18, 209, 77,
1129
+ 235, 215, 218, 69, 150, 67, 212, 11, 88, 8,
1130
+ 5, 230, nil, nil, nil, nil, nil, nil, nil, 64,
1131
+ 173, 61, nil, nil, 234, 81, nil, nil, nil, 126,
1132
+ 214, nil, 124, nil, nil, nil, 76, 251, nil, 77,
1133
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 252,
1134
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1135
+ nil, nil, nil, nil, 258, 256, nil, nil, nil, nil,
1136
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1137
+ nil, nil, 137, 126, nil, 263, 124, 234, nil, nil,
1138
+ nil, nil, nil, nil, 267 ]
1139
+
1140
+ racc_goto_check = [
1141
+ 28, 49, 34, 15, 30, 14, 52, 9, 47, 38,
1142
+ 12, 48, 9, 12, 50, 45, 60, 63, 16, 62,
1143
+ 49, 54, 43, 16, 4, 33, 9, 17, 17, 17,
1144
+ 44, 38, 38, 38, 9, 9, 9, 29, 42, 12,
1145
+ 49, 42, 18, 18, 12, 36, 43, 39, 54, 45,
1146
+ 19, 19, 35, 30, 45, 21, 21, 13, 29, 37,
1147
+ 31, 28, 13, 34, 15, 38, 12, 30, 9, 29,
1148
+ 38, 26, 4, 9, 13, 46, 25, 13, 14, 13,
1149
+ 20, 20, 20, 20, 24, 29, 14, 23, 22, 16,
1150
+ 10, 53, 4, 14, 44, 17, 38, 5, 56, 9,
1151
+ 60, 63, 62, 57, 49, 29, 59, 3, 61, 2,
1152
+ 1, 14, nil, nil, nil, nil, nil, nil, nil, 48,
1153
+ 45, 50, nil, nil, 49, 12, nil, nil, nil, 28,
1154
+ 12, nil, 15, nil, nil, nil, 38, 47, nil, 9,
1155
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 14,
1156
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1157
+ nil, nil, nil, nil, 14, 52, nil, nil, nil, nil,
1158
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1159
+ nil, nil, 30, 28, nil, 34, 15, 49, nil, nil,
1160
+ nil, nil, nil, nil, 28 ]
1161
+
1162
+ racc_goto_pointer = [
1163
+ nil, 110, 109, 107, 24, 97, nil, nil, nil, -43,
1164
+ -31, nil, -18, -40, -58, -63, -93, -143, -134, -129,
1165
+ -104, -103, -72, -74, -81, -91, -97, nil, -66, 37,
1166
+ -22, 12, nil, -47, -64, -143, -82, -65, -46, 22,
1167
+ nil, nil, 10, -33, -48, -62, 0, -67, -34, -49,
1168
+ -29, nil, -56, 29, -36, nil, -45, 53, nil, -41,
1169
+ -73, 46, -134, -133 ]
1170
+
1171
+ racc_goto_default = [
1172
+ nil, nil, nil, nil, nil, nil, 21, 25, 28, 32,
1173
+ 128, 121, 95, 98, 174, 105, nil, 109, 110, 113,
1174
+ 115, 118, 93, 94, 96, 101, 104, 107, 108, 89,
1175
+ 129, nil, 51, 41, nil, 123, nil, nil, 15, 20,
1176
+ 24, 29, nil, nil, 74, 75, nil, nil, 42, 43,
1177
+ 44, 46, 219, nil, nil, 80, 82, nil, 86, 87,
1178
+ nil, nil, 152, 154 ]
1179
+
1180
+ racc_token_table = {
1181
+ false => 0,
1182
+ Object.new => 1,
1183
+ "." => 2,
1184
+ "->" => 3,
1185
+ :UADDRS => 4,
1186
+ :UDEREF => 5,
1187
+ :UPLUS => 6,
1188
+ :UMINUS => 7,
1189
+ "!" => 8,
1190
+ "sizeof" => 9,
1191
+ "*" => 10,
1192
+ "/" => 11,
1193
+ "%" => 12,
1194
+ "+" => 13,
1195
+ "-" => 14,
1196
+ "<" => 15,
1197
+ "<=" => 16,
1198
+ ">" => 17,
1199
+ ">=" => 18,
1200
+ "==" => 19,
1201
+ "!=" => 20,
1202
+ "&&" => 21,
1203
+ "||" => 22,
1204
+ :POINTER => 23,
1205
+ :INTEGER => 24,
1206
+ :FLOAT => 25,
1207
+ :CHARACTER => 26,
1208
+ :STRING => 27,
1209
+ :TYPEDEF_NAME => 28,
1210
+ :IDENTIFIER => 29,
1211
+ "{" => 30,
1212
+ ";" => 31,
1213
+ "inline" => 32,
1214
+ "typedef" => 33,
1215
+ "extern" => 34,
1216
+ "static" => 35,
1217
+ "auto" => 36,
1218
+ "register" => 37,
1219
+ "void" => 38,
1220
+ "char" => 39,
1221
+ "short" => 40,
1222
+ "int" => 41,
1223
+ "long" => 42,
1224
+ "float" => 43,
1225
+ "double" => 44,
1226
+ "signed" => 45,
1227
+ "unsigned" => 46,
1228
+ "struct" => 47,
1229
+ "union" => 48,
1230
+ "const" => 49,
1231
+ "volatile" => 50,
1232
+ "(" => 51,
1233
+ ")" => 52,
1234
+ "&" => 53,
1235
+ "<<" => 54,
1236
+ ">>" => 55,
1237
+ "^" => 56,
1238
+ "|" => 57,
1239
+ "?" => 58,
1240
+ ":" => 59,
1241
+ "," => 60,
1242
+ "=" => 61,
1243
+ "}" => 62,
1244
+ "+=" => 63,
1245
+ "-=" => 64,
1246
+ "*=" => 65,
1247
+ "/=" => 66,
1248
+ "%=" => 67,
1249
+ "&=" => 68,
1250
+ "^=" => 69,
1251
+ "|=" => 70,
1252
+ "<<=" => 71,
1253
+ ">>=" => 72,
1254
+ "[" => 73,
1255
+ "]" => 74,
1256
+ "enum" => 75,
1257
+ "..." => 76 }
1258
+
1259
+ racc_use_result_var = true
1260
+
1261
+ racc_nt_base = 77
1262
+
1263
+ Racc_arg = [
1264
+ racc_action_table,
1265
+ racc_action_check,
1266
+ racc_action_default,
1267
+ racc_action_pointer,
1268
+ racc_goto_table,
1269
+ racc_goto_check,
1270
+ racc_goto_default,
1271
+ racc_goto_pointer,
1272
+ racc_nt_base,
1273
+ racc_reduce_table,
1274
+ racc_token_table,
1275
+ racc_shift_n,
1276
+ racc_reduce_n,
1277
+ racc_use_result_var ]
1278
+
1279
+ Racc_token_to_s_table = [
1280
+ '$end',
1281
+ 'error',
1282
+ '"."',
1283
+ '"->"',
1284
+ 'UADDRS',
1285
+ 'UDEREF',
1286
+ 'UPLUS',
1287
+ 'UMINUS',
1288
+ '"!"',
1289
+ '"sizeof"',
1290
+ '"*"',
1291
+ '"/"',
1292
+ '"%"',
1293
+ '"+"',
1294
+ '"-"',
1295
+ '"<"',
1296
+ '"<="',
1297
+ '">"',
1298
+ '">="',
1299
+ '"=="',
1300
+ '"!="',
1301
+ '"&&"',
1302
+ '"||"',
1303
+ 'POINTER',
1304
+ 'INTEGER',
1305
+ 'FLOAT',
1306
+ 'CHARACTER',
1307
+ 'STRING',
1308
+ 'TYPEDEF_NAME',
1309
+ 'IDENTIFIER',
1310
+ '"{"',
1311
+ '";"',
1312
+ '"inline"',
1313
+ '"typedef"',
1314
+ '"extern"',
1315
+ '"static"',
1316
+ '"auto"',
1317
+ '"register"',
1318
+ '"void"',
1319
+ '"char"',
1320
+ '"short"',
1321
+ '"int"',
1322
+ '"long"',
1323
+ '"float"',
1324
+ '"double"',
1325
+ '"signed"',
1326
+ '"unsigned"',
1327
+ '"struct"',
1328
+ '"union"',
1329
+ '"const"',
1330
+ '"volatile"',
1331
+ '"("',
1332
+ '")"',
1333
+ '"&"',
1334
+ '"<<"',
1335
+ '">>"',
1336
+ '"^"',
1337
+ '"|"',
1338
+ '"?"',
1339
+ '":"',
1340
+ '","',
1341
+ '"="',
1342
+ '"}"',
1343
+ '"+="',
1344
+ '"-="',
1345
+ '"*="',
1346
+ '"/="',
1347
+ '"%="',
1348
+ '"&="',
1349
+ '"^="',
1350
+ '"|="',
1351
+ '"<<="',
1352
+ '">>="',
1353
+ '"["',
1354
+ '"]"',
1355
+ '"enum"',
1356
+ '"..."',
1357
+ '$start',
1358
+ 'target',
1359
+ 'statement_target',
1360
+ 'empty_target',
1361
+ 'declaration',
1362
+ 'function_definition',
1363
+ 'storage_class_specifier',
1364
+ 'primitive_type',
1365
+ 'struct_or_union',
1366
+ 'type_qualifier',
1367
+ 'cstring',
1368
+ 'string',
1369
+ 'identifier',
1370
+ 'constant_exp',
1371
+ 'expression',
1372
+ 'unary_expression',
1373
+ 'type_name',
1374
+ 'cast_expression',
1375
+ 'multiplicative_expression',
1376
+ 'additive_expression',
1377
+ 'shift_expression',
1378
+ 'relational_expression',
1379
+ 'equality_expression',
1380
+ 'and_expression',
1381
+ 'exclusive_or_expression',
1382
+ 'inclusive_or_expression',
1383
+ 'logical_and_expression',
1384
+ 'logical_or_expression',
1385
+ 'conditional_expression',
1386
+ 'declaration_specifiers',
1387
+ 'declarator',
1388
+ 'declaration_list',
1389
+ 'init_declarator_list',
1390
+ 'init_declarator',
1391
+ 'initializer',
1392
+ 'assignment_expression',
1393
+ 'initializer_list',
1394
+ 'assignment_operator',
1395
+ 'type_specifier',
1396
+ 'primitive_type_specifier',
1397
+ 'struct_or_union_specifier',
1398
+ 'enum_specifier',
1399
+ 'struct_or_union_or_enum_name',
1400
+ 'struct_declaration_list',
1401
+ 'struct_declaration',
1402
+ 'specifier_qualifier_list',
1403
+ 'struct_declarator_list',
1404
+ 'struct_declarator',
1405
+ 'declarator_sequence',
1406
+ 'pointer',
1407
+ 'direct_declarator',
1408
+ 'declarator_identifier',
1409
+ 'parameter_type_list',
1410
+ 'identifier_list',
1411
+ 'enumerator_list',
1412
+ 'enumerator_list_pre',
1413
+ 'enumerator',
1414
+ 'type_qualifier_list',
1415
+ 'parameter_list',
1416
+ 'parameter_declaration',
1417
+ 'abstract_declarator',
1418
+ 'identifier_sequence',
1419
+ 'abstract_declarator_sequence',
1420
+ 'direct_abstract_declarator']
1421
+
1422
+ Racc_debug_parser = false
1423
+
1424
+ ##### racc system variables end #####
1425
+
1426
+ # reduce 0 omitted
1427
+
1428
+ module_eval <<'.,.,', 'src/ctype.y', 28
1429
+ def _reduce_1( val, _values, result )
1430
+ yyaccept
1431
+ result
1432
+ end
1433
+ .,.,
1434
+
1435
+ module_eval <<'.,.,', 'src/ctype.y', 29
1436
+ def _reduce_2( val, _values, result )
1437
+ yyaccept
1438
+ result
1439
+ end
1440
+ .,.,
1441
+
1442
+ # reduce 3 omitted
1443
+
1444
+ module_eval <<'.,.,', 'src/ctype.y', 35
1445
+ def _reduce_4( val, _values, result )
1446
+ result = val[0,1]
1447
+ result
1448
+ end
1449
+ .,.,
1450
+
1451
+ module_eval <<'.,.,', 'src/ctype.y', 39
1452
+ def _reduce_5( val, _values, result )
1453
+ result = []
1454
+ result
1455
+ end
1456
+ .,.,
1457
+
1458
+ module_eval <<'.,.,', 'src/ctype.y', 40
1459
+ def _reduce_6( val, _values, result )
1460
+ result = []
1461
+ result
1462
+ end
1463
+ .,.,
1464
+
1465
+ # reduce 7 omitted
1466
+
1467
+ # reduce 8 omitted
1468
+
1469
+ # reduce 9 omitted
1470
+
1471
+ # reduce 10 omitted
1472
+
1473
+ # reduce 11 omitted
1474
+
1475
+ # reduce 12 omitted
1476
+
1477
+ # reduce 13 omitted
1478
+
1479
+ # reduce 14 omitted
1480
+
1481
+ # reduce 15 omitted
1482
+
1483
+ # reduce 16 omitted
1484
+
1485
+ # reduce 17 omitted
1486
+
1487
+ # reduce 18 omitted
1488
+
1489
+ # reduce 19 omitted
1490
+
1491
+ # reduce 20 omitted
1492
+
1493
+ # reduce 21 omitted
1494
+
1495
+ # reduce 22 omitted
1496
+
1497
+ # reduce 23 omitted
1498
+
1499
+ # reduce 24 omitted
1500
+
1501
+ # reduce 25 omitted
1502
+
1503
+ module_eval <<'.,.,', 'src/ctype.y', 76
1504
+ def _reduce_26( val, _values, result )
1505
+ result = val[0]; result = result[1,result.length - 2]
1506
+ result
1507
+ end
1508
+ .,.,
1509
+
1510
+ # reduce 27 omitted
1511
+
1512
+ module_eval <<'.,.,', 'src/ctype.y', 81
1513
+ def _reduce_28( val, _values, result )
1514
+ result = val[0] << val[1]
1515
+ result
1516
+ end
1517
+ .,.,
1518
+
1519
+ # reduce 29 omitted
1520
+
1521
+ # reduce 30 omitted
1522
+
1523
+ # reduce 31 omitted
1524
+
1525
+ # reduce 32 omitted
1526
+
1527
+ # reduce 33 omitted
1528
+
1529
+ module_eval <<'.,.,', 'src/ctype.y', 93
1530
+ def _reduce_34( val, _values, result )
1531
+ result = val[1]
1532
+ result
1533
+ end
1534
+ .,.,
1535
+
1536
+ # reduce 35 omitted
1537
+
1538
+ module_eval <<'.,.,', 'src/ctype.y', 98
1539
+ def _reduce_36( val, _values, result )
1540
+ result = val[0,2].join
1541
+ result
1542
+ end
1543
+ .,.,
1544
+
1545
+ module_eval <<'.,.,', 'src/ctype.y', 99
1546
+ def _reduce_37( val, _values, result )
1547
+ result = val[0,2].join
1548
+ result
1549
+ end
1550
+ .,.,
1551
+
1552
+ module_eval <<'.,.,', 'src/ctype.y', 100
1553
+ def _reduce_38( val, _values, result )
1554
+ result = val[0,2].join
1555
+ result
1556
+ end
1557
+ .,.,
1558
+
1559
+ module_eval <<'.,.,', 'src/ctype.y', 101
1560
+ def _reduce_39( val, _values, result )
1561
+ result = val[0,2].join
1562
+ result
1563
+ end
1564
+ .,.,
1565
+
1566
+ module_eval <<'.,.,', 'src/ctype.y', 102
1567
+ def _reduce_40( val, _values, result )
1568
+ result = val[0,2].join
1569
+ result
1570
+ end
1571
+ .,.,
1572
+
1573
+ module_eval <<'.,.,', 'src/ctype.y', 103
1574
+ def _reduce_41( val, _values, result )
1575
+ result = val[0,2].join(' ')
1576
+ result
1577
+ end
1578
+ .,.,
1579
+
1580
+ module_eval <<'.,.,', 'src/ctype.y', 104
1581
+ def _reduce_42( val, _values, result )
1582
+ result = val[0,4].join('')
1583
+ result
1584
+ end
1585
+ .,.,
1586
+
1587
+ # reduce 43 omitted
1588
+
1589
+ module_eval <<'.,.,', 'src/ctype.y', 109
1590
+ def _reduce_44( val, _values, result )
1591
+ result = val[0,3].join
1592
+ result
1593
+ end
1594
+ .,.,
1595
+
1596
+ # reduce 45 omitted
1597
+
1598
+ module_eval <<'.,.,', 'src/ctype.y', 114
1599
+ def _reduce_46( val, _values, result )
1600
+ result = val[0,3].join(' ')
1601
+ result
1602
+ end
1603
+ .,.,
1604
+
1605
+ module_eval <<'.,.,', 'src/ctype.y', 115
1606
+ def _reduce_47( val, _values, result )
1607
+ result = val[0,3].join(' ')
1608
+ result
1609
+ end
1610
+ .,.,
1611
+
1612
+ module_eval <<'.,.,', 'src/ctype.y', 116
1613
+ def _reduce_48( val, _values, result )
1614
+ result = val[0,3].join(' ')
1615
+ result
1616
+ end
1617
+ .,.,
1618
+
1619
+ # reduce 49 omitted
1620
+
1621
+ module_eval <<'.,.,', 'src/ctype.y', 121
1622
+ def _reduce_50( val, _values, result )
1623
+ result = val[0,3].join(' ')
1624
+ result
1625
+ end
1626
+ .,.,
1627
+
1628
+ module_eval <<'.,.,', 'src/ctype.y', 122
1629
+ def _reduce_51( val, _values, result )
1630
+ result = val[0,3].join(' ')
1631
+ result
1632
+ end
1633
+ .,.,
1634
+
1635
+ # reduce 52 omitted
1636
+
1637
+ module_eval <<'.,.,', 'src/ctype.y', 127
1638
+ def _reduce_53( val, _values, result )
1639
+ result = val[0,3].join(' ')
1640
+ result
1641
+ end
1642
+ .,.,
1643
+
1644
+ module_eval <<'.,.,', 'src/ctype.y', 128
1645
+ def _reduce_54( val, _values, result )
1646
+ result = val[0,3].join(' ')
1647
+ result
1648
+ end
1649
+ .,.,
1650
+
1651
+ # reduce 55 omitted
1652
+
1653
+ module_eval <<'.,.,', 'src/ctype.y', 133
1654
+ def _reduce_56( val, _values, result )
1655
+ result = val[0,3].join(' ')
1656
+ result
1657
+ end
1658
+ .,.,
1659
+
1660
+ module_eval <<'.,.,', 'src/ctype.y', 134
1661
+ def _reduce_57( val, _values, result )
1662
+ result = val[0,3].join(' ')
1663
+ result
1664
+ end
1665
+ .,.,
1666
+
1667
+ module_eval <<'.,.,', 'src/ctype.y', 135
1668
+ def _reduce_58( val, _values, result )
1669
+ result = val[0,3].join(' ')
1670
+ result
1671
+ end
1672
+ .,.,
1673
+
1674
+ module_eval <<'.,.,', 'src/ctype.y', 136
1675
+ def _reduce_59( val, _values, result )
1676
+ result = val[0,3].join(' ')
1677
+ result
1678
+ end
1679
+ .,.,
1680
+
1681
+ # reduce 60 omitted
1682
+
1683
+ module_eval <<'.,.,', 'src/ctype.y', 141
1684
+ def _reduce_61( val, _values, result )
1685
+ result = val[0,3].join(' ')
1686
+ result
1687
+ end
1688
+ .,.,
1689
+
1690
+ module_eval <<'.,.,', 'src/ctype.y', 142
1691
+ def _reduce_62( val, _values, result )
1692
+ result = val[0,3].join(' ')
1693
+ result
1694
+ end
1695
+ .,.,
1696
+
1697
+ # reduce 63 omitted
1698
+
1699
+ module_eval <<'.,.,', 'src/ctype.y', 147
1700
+ def _reduce_64( val, _values, result )
1701
+ result = val[0,3].join(' ')
1702
+ result
1703
+ end
1704
+ .,.,
1705
+
1706
+ # reduce 65 omitted
1707
+
1708
+ module_eval <<'.,.,', 'src/ctype.y', 152
1709
+ def _reduce_66( val, _values, result )
1710
+ result = val[0,3].join(' ')
1711
+ result
1712
+ end
1713
+ .,.,
1714
+
1715
+ # reduce 67 omitted
1716
+
1717
+ module_eval <<'.,.,', 'src/ctype.y', 157
1718
+ def _reduce_68( val, _values, result )
1719
+ result = val[0,3].join(' ')
1720
+ result
1721
+ end
1722
+ .,.,
1723
+
1724
+ # reduce 69 omitted
1725
+
1726
+ module_eval <<'.,.,', 'src/ctype.y', 162
1727
+ def _reduce_70( val, _values, result )
1728
+ result = val[0,3].join(' ')
1729
+ result
1730
+ end
1731
+ .,.,
1732
+
1733
+ # reduce 71 omitted
1734
+
1735
+ module_eval <<'.,.,', 'src/ctype.y', 167
1736
+ def _reduce_72( val, _values, result )
1737
+ result = val[0,3].join(' ')
1738
+ result
1739
+ end
1740
+ .,.,
1741
+
1742
+ # reduce 73 omitted
1743
+
1744
+ module_eval <<'.,.,', 'src/ctype.y', 172
1745
+ def _reduce_74( val, _values, result )
1746
+ result = val[0,3].join(' ')
1747
+ result
1748
+ end
1749
+ .,.,
1750
+
1751
+ # reduce 75 omitted
1752
+
1753
+ module_eval <<'.,.,', 'src/ctype.y', 186
1754
+ def _reduce_76( val, _values, result )
1755
+ result = val[1]
1756
+ result.add_declaration_specifiers(val[0])
1757
+ result.add_parameter_declarations(val[2])
1758
+ result
1759
+ end
1760
+ .,.,
1761
+
1762
+ module_eval <<'.,.,', 'src/ctype.y', 191
1763
+ def _reduce_77( val, _values, result )
1764
+ result = val[1]
1765
+ result.add_declaration_specifiers(val[0])
1766
+ result
1767
+ end
1768
+ .,.,
1769
+
1770
+ module_eval <<'.,.,', 'src/ctype.y', 194
1771
+ def _reduce_78( val, _values, result )
1772
+ result = val[0,1]; result.flatten!
1773
+ result
1774
+ end
1775
+ .,.,
1776
+
1777
+ module_eval <<'.,.,', 'src/ctype.y', 195
1778
+ def _reduce_79( val, _values, result )
1779
+ result = val[0] << val[1]; result.flatten!
1780
+ result
1781
+ end
1782
+ .,.,
1783
+
1784
+ module_eval <<'.,.,', 'src/ctype.y', 200
1785
+ def _reduce_80( val, _values, result )
1786
+ result = val[1].each { |d| d.add_declaration_specifiers(val[0]) }
1787
+ result
1788
+ end
1789
+ .,.,
1790
+
1791
+ module_eval <<'.,.,', 'src/ctype.y', 207
1792
+ def _reduce_81( val, _values, result )
1793
+ result = CType::Type.new()
1794
+ result.add_declaration_specifiers(val[0])
1795
+ result = [result]
1796
+ result
1797
+ end
1798
+ .,.,
1799
+
1800
+ module_eval <<'.,.,', 'src/ctype.y', 210
1801
+ def _reduce_82( val, _values, result )
1802
+ result = val[0,1]
1803
+ result
1804
+ end
1805
+ .,.,
1806
+
1807
+ module_eval <<'.,.,', 'src/ctype.y', 211
1808
+ def _reduce_83( val, _values, result )
1809
+ result = val[0] << val[2]
1810
+ result
1811
+ end
1812
+ .,.,
1813
+
1814
+ # reduce 84 omitted
1815
+
1816
+ # reduce 85 omitted
1817
+
1818
+ # reduce 86 omitted
1819
+
1820
+ module_eval <<'.,.,', 'src/ctype.y', 223
1821
+ def _reduce_87( val, _values, result )
1822
+ result = val[0,3].join(' ')
1823
+ result
1824
+ end
1825
+ .,.,
1826
+
1827
+ module_eval <<'.,.,', 'src/ctype.y', 224
1828
+ def _reduce_88( val, _values, result )
1829
+ result = val[0,4].join(' ')
1830
+ result
1831
+ end
1832
+ .,.,
1833
+
1834
+ # reduce 89 omitted
1835
+
1836
+ module_eval <<'.,.,', 'src/ctype.y', 229
1837
+ def _reduce_90( val, _values, result )
1838
+ result = val[0,3].join(' ')
1839
+ result
1840
+ end
1841
+ .,.,
1842
+
1843
+ # reduce 91 omitted
1844
+
1845
+ # reduce 92 omitted
1846
+
1847
+ module_eval <<'.,.,', 'src/ctype.y', 236
1848
+ def _reduce_93( val, _values, result )
1849
+ result = val[0,3].join(' ')
1850
+ result
1851
+ end
1852
+ .,.,
1853
+
1854
+ # reduce 94 omitted
1855
+
1856
+ # reduce 95 omitted
1857
+
1858
+ # reduce 96 omitted
1859
+
1860
+ # reduce 97 omitted
1861
+
1862
+ # reduce 98 omitted
1863
+
1864
+ # reduce 99 omitted
1865
+
1866
+ # reduce 100 omitted
1867
+
1868
+ # reduce 101 omitted
1869
+
1870
+ # reduce 102 omitted
1871
+
1872
+ # reduce 103 omitted
1873
+
1874
+ # reduce 104 omitted
1875
+
1876
+ module_eval <<'.,.,', 'src/ctype.y', 256
1877
+ def _reduce_105( val, _values, result )
1878
+ result = val[0,1]
1879
+ result
1880
+ end
1881
+ .,.,
1882
+
1883
+ module_eval <<'.,.,', 'src/ctype.y', 258
1884
+ def _reduce_106( val, _values, result )
1885
+ result = val[1]; result.insert(0,val[0])
1886
+ result
1887
+ end
1888
+ .,.,
1889
+
1890
+ module_eval <<'.,.,', 'src/ctype.y', 260
1891
+ def _reduce_107( val, _values, result )
1892
+ result = val[1]; result.last.add_qualifier(val[0])
1893
+ result
1894
+ end
1895
+ .,.,
1896
+
1897
+ module_eval <<'.,.,', 'src/ctype.y', 265
1898
+ def _reduce_108( val, _values, result )
1899
+ result = CType::Primitive.new(val[0])
1900
+ result
1901
+ end
1902
+ .,.,
1903
+
1904
+ module_eval <<'.,.,', 'src/ctype.y', 266
1905
+ def _reduce_109( val, _values, result )
1906
+ result = val[1].insert(val[0])
1907
+ result
1908
+ end
1909
+ .,.,
1910
+
1911
+ module_eval <<'.,.,', 'src/ctype.y', 271
1912
+ def _reduce_110( val, _values, result )
1913
+ result = CType::Base.new(val[0])
1914
+ result
1915
+ end
1916
+ .,.,
1917
+
1918
+ module_eval <<'.,.,', 'src/ctype.y', 272
1919
+ def _reduce_111( val, _values, result )
1920
+ result = CType::Base.new(val[0])
1921
+ result
1922
+ end
1923
+ .,.,
1924
+
1925
+ module_eval <<'.,.,', 'src/ctype.y', 273
1926
+ def _reduce_112( val, _values, result )
1927
+ result = CType::Base.new(val[0])
1928
+ result
1929
+ end
1930
+ .,.,
1931
+
1932
+ module_eval <<'.,.,', 'src/ctype.y', 274
1933
+ def _reduce_113( val, _values, result )
1934
+ result = CType::Base.new(val[0])
1935
+ result
1936
+ end
1937
+ .,.,
1938
+
1939
+ # reduce 114 omitted
1940
+
1941
+ module_eval <<'.,.,', 'src/ctype.y', 279
1942
+ def _reduce_115( val, _values, result )
1943
+ result = val[0].identifier
1944
+ result
1945
+ end
1946
+ .,.,
1947
+
1948
+ module_eval <<'.,.,', 'src/ctype.y', 284
1949
+ def _reduce_116( val, _values, result )
1950
+ result = CType::StructUnion.get(val[0], val[1], val[3])
1951
+ result
1952
+ end
1953
+ .,.,
1954
+
1955
+ module_eval <<'.,.,', 'src/ctype.y', 286
1956
+ def _reduce_117( val, _values, result )
1957
+ result = CType::StructUnion.get(val[0], nil, val[2])
1958
+ result
1959
+ end
1960
+ .,.,
1961
+
1962
+ module_eval <<'.,.,', 'src/ctype.y', 288
1963
+ def _reduce_118( val, _values, result )
1964
+ result = CType::StructUnion.get(val[0], val[1])
1965
+ result
1966
+ end
1967
+ .,.,
1968
+
1969
+ module_eval <<'.,.,', 'src/ctype.y', 293
1970
+ def _reduce_119( val, _values, result )
1971
+ result = val[0,1]
1972
+ result
1973
+ end
1974
+ .,.,
1975
+
1976
+ module_eval <<'.,.,', 'src/ctype.y', 294
1977
+ def _reduce_120( val, _values, result )
1978
+ result = val[0] << val[1]
1979
+ result
1980
+ end
1981
+ .,.,
1982
+
1983
+ module_eval <<'.,.,', 'src/ctype.y', 300
1984
+ def _reduce_121( val, _values, result )
1985
+ result = val[1].each { |d| d.base_type = val[0] }
1986
+ result
1987
+ end
1988
+ .,.,
1989
+
1990
+ module_eval <<'.,.,', 'src/ctype.y', 308
1991
+ def _reduce_122( val, _values, result )
1992
+ result = val[0].primitive
1993
+ raise "expecting a union" unless result.class == CType::Union
1994
+ result = result.get_members
1995
+ result
1996
+ end
1997
+ .,.,
1998
+
1999
+ # reduce 123 omitted
2000
+
2001
+ module_eval <<'.,.,', 'src/ctype.y', 314
2002
+ def _reduce_124( val, _values, result )
2003
+ result = val[1]; result.add_qualifier(val[0])
2004
+ result
2005
+ end
2006
+ .,.,
2007
+
2008
+ module_eval <<'.,.,', 'src/ctype.y', 318
2009
+ def _reduce_125( val, _values, result )
2010
+ result = val[0,1]
2011
+ result
2012
+ end
2013
+ .,.,
2014
+
2015
+ module_eval <<'.,.,', 'src/ctype.y', 319
2016
+ def _reduce_126( val, _values, result )
2017
+ result = val[0] << val[2]
2018
+ result
2019
+ end
2020
+ .,.,
2021
+
2022
+ # reduce 127 omitted
2023
+
2024
+ module_eval <<'.,.,', 'src/ctype.y', 325
2025
+ def _reduce_128( val, _values, result )
2026
+ result = CType::Type.new(); result.size = val[1]
2027
+ result
2028
+ end
2029
+ .,.,
2030
+
2031
+ module_eval <<'.,.,', 'src/ctype.y', 326
2032
+ def _reduce_129( val, _values, result )
2033
+ result = val[0]; result.size = val[2]
2034
+ result
2035
+ end
2036
+ .,.,
2037
+
2038
+ module_eval <<'.,.,', 'src/ctype.y', 330
2039
+ def _reduce_130( val, _values, result )
2040
+ result = val[0].first
2041
+ result
2042
+ end
2043
+ .,.,
2044
+
2045
+ module_eval <<'.,.,', 'src/ctype.y', 345
2046
+ def _reduce_131( val, _values, result )
2047
+ # the base type of the last element in the declarator sequence
2048
+ # is not a pointer. that pointer points to a new type which is
2049
+ # appended to the end of the declarator sequence
2050
+ result = val[1]
2051
+ result.last.base_type = val[0]
2052
+ result << val[0].base_type = CType::Type.new()
2053
+ result
2054
+ end
2055
+ .,.,
2056
+
2057
+ # reduce 132 omitted
2058
+
2059
+ # reduce 133 omitted
2060
+
2061
+ module_eval <<'.,.,', 'src/ctype.y', 355
2062
+ def _reduce_134( val, _values, result )
2063
+ result = [CType::Type.new(val[0])]
2064
+ result
2065
+ end
2066
+ .,.,
2067
+
2068
+ module_eval <<'.,.,', 'src/ctype.y', 357
2069
+ def _reduce_135( val, _values, result )
2070
+ result = val[1]
2071
+ result
2072
+ end
2073
+ .,.,
2074
+
2075
+ module_eval <<'.,.,', 'src/ctype.y', 359
2076
+ def _reduce_136( val, _values, result )
2077
+ result = val[0]; result.last.dimensions << val[2]
2078
+ result
2079
+ end
2080
+ .,.,
2081
+
2082
+ module_eval <<'.,.,', 'src/ctype.y', 361
2083
+ def _reduce_137( val, _values, result )
2084
+ result = val[0]; result.last.dimensions << nil
2085
+ result
2086
+ end
2087
+ .,.,
2088
+
2089
+ module_eval <<'.,.,', 'src/ctype.y', 363
2090
+ def _reduce_138( val, _values, result )
2091
+ result = val[0]; result.last.parameters = val[2]
2092
+ result
2093
+ end
2094
+ .,.,
2095
+
2096
+ module_eval <<'.,.,', 'src/ctype.y', 365
2097
+ def _reduce_139( val, _values, result )
2098
+ result = val[0]; result.last.parameters = val[2]
2099
+ result
2100
+ end
2101
+ .,.,
2102
+
2103
+ module_eval <<'.,.,', 'src/ctype.y', 367
2104
+ def _reduce_140( val, _values, result )
2105
+ result = val[0]; result.last.parameters = nil
2106
+ result
2107
+ end
2108
+ .,.,
2109
+
2110
+ module_eval <<'.,.,', 'src/ctype.y', 372
2111
+ def _reduce_141( val, _values, result )
2112
+ result = CType::Enum[val[1]]; result.add(val[3])
2113
+ result
2114
+ end
2115
+ .,.,
2116
+
2117
+ module_eval <<'.,.,', 'src/ctype.y', 374
2118
+ def _reduce_142( val, _values, result )
2119
+ result = CType::Enum[]; result.add(val[2])
2120
+ result
2121
+ end
2122
+ .,.,
2123
+
2124
+ module_eval <<'.,.,', 'src/ctype.y', 376
2125
+ def _reduce_143( val, _values, result )
2126
+ result = CType::Enum[val[1]]
2127
+ result
2128
+ end
2129
+ .,.,
2130
+
2131
+ # reduce 144 omitted
2132
+
2133
+ # reduce 145 omitted
2134
+
2135
+ module_eval <<'.,.,', 'src/ctype.y', 386
2136
+ def _reduce_146( val, _values, result )
2137
+ result = val[0,1]
2138
+ result
2139
+ end
2140
+ .,.,
2141
+
2142
+ module_eval <<'.,.,', 'src/ctype.y', 387
2143
+ def _reduce_147( val, _values, result )
2144
+ result = val[0] << val[2]
2145
+ result
2146
+ end
2147
+ .,.,
2148
+
2149
+ module_eval <<'.,.,', 'src/ctype.y', 391
2150
+ def _reduce_148( val, _values, result )
2151
+ result = val[0,1]
2152
+ result
2153
+ end
2154
+ .,.,
2155
+
2156
+ module_eval <<'.,.,', 'src/ctype.y', 392
2157
+ def _reduce_149( val, _values, result )
2158
+ result = [val[0], val[2]]
2159
+ result
2160
+ end
2161
+ .,.,
2162
+
2163
+ module_eval <<'.,.,', 'src/ctype.y', 397
2164
+ def _reduce_150( val, _values, result )
2165
+ result = CType::Pointer.new(val[1])
2166
+ result
2167
+ end
2168
+ .,.,
2169
+
2170
+ module_eval <<'.,.,', 'src/ctype.y', 399
2171
+ def _reduce_151( val, _values, result )
2172
+ result = CType::Pointer.new()
2173
+ result
2174
+ end
2175
+ .,.,
2176
+
2177
+ module_eval <<'.,.,', 'src/ctype.y', 405
2178
+ def _reduce_152( val, _values, result )
2179
+ result = val[2]
2180
+ result.base_type = CType::Pointer.new(val[1])
2181
+ result
2182
+ end
2183
+ .,.,
2184
+
2185
+ module_eval <<'.,.,', 'src/ctype.y', 410
2186
+ def _reduce_153( val, _values, result )
2187
+ result = val[1]
2188
+ result.base_type = CType::Pointer.new()
2189
+ result
2190
+ end
2191
+ .,.,
2192
+
2193
+ module_eval <<'.,.,', 'src/ctype.y', 414
2194
+ def _reduce_154( val, _values, result )
2195
+ result = val[0,1]
2196
+ result
2197
+ end
2198
+ .,.,
2199
+
2200
+ module_eval <<'.,.,', 'src/ctype.y', 415
2201
+ def _reduce_155( val, _values, result )
2202
+ result = val[0] << val[1]
2203
+ result
2204
+ end
2205
+ .,.,
2206
+
2207
+ module_eval <<'.,.,', 'src/ctype.y', 420
2208
+ def _reduce_156( val, _values, result )
2209
+ result = val[0].finalize
2210
+ result
2211
+ end
2212
+ .,.,
2213
+
2214
+ module_eval <<'.,.,', 'src/ctype.y', 421
2215
+ def _reduce_157( val, _values, result )
2216
+ result = val[0].with_ellipses
2217
+ result
2218
+ end
2219
+ .,.,
2220
+
2221
+ module_eval <<'.,.,', 'src/ctype.y', 426
2222
+ def _reduce_158( val, _values, result )
2223
+ result = CType::List.new << val[0]
2224
+ result
2225
+ end
2226
+ .,.,
2227
+
2228
+ module_eval <<'.,.,', 'src/ctype.y', 427
2229
+ def _reduce_159( val, _values, result )
2230
+ result = val[0] << val[2]
2231
+ result
2232
+ end
2233
+ .,.,
2234
+
2235
+ module_eval <<'.,.,', 'src/ctype.y', 433
2236
+ def _reduce_160( val, _values, result )
2237
+ result = val[1]; result.add_declaration_specifiers(val[0])
2238
+ result
2239
+ end
2240
+ .,.,
2241
+
2242
+ module_eval <<'.,.,', 'src/ctype.y', 435
2243
+ def _reduce_161( val, _values, result )
2244
+ result = val[1]; result.add_declaration_specifiers(val[0])
2245
+ result
2246
+ end
2247
+ .,.,
2248
+
2249
+ module_eval <<'.,.,', 'src/ctype.y', 437
2250
+ def _reduce_162( val, _values, result )
2251
+ result = CType::Type.new(); result.add_declaration_specifiers(val[0])
2252
+ result
2253
+ end
2254
+ .,.,
2255
+
2256
+ module_eval <<'.,.,', 'src/ctype.y', 446
2257
+ def _reduce_163( val, _values, result )
2258
+ result = val[0].finalize
2259
+ result
2260
+ end
2261
+ .,.,
2262
+
2263
+ module_eval <<'.,.,', 'src/ctype.y', 451
2264
+ def _reduce_164( val, _values, result )
2265
+ result = CType::List.new << val[0]
2266
+ result
2267
+ end
2268
+ .,.,
2269
+
2270
+ module_eval <<'.,.,', 'src/ctype.y', 452
2271
+ def _reduce_165( val, _values, result )
2272
+ result = val[0] << val[2]
2273
+ result
2274
+ end
2275
+ .,.,
2276
+
2277
+ module_eval <<'.,.,', 'src/ctype.y', 457
2278
+ def _reduce_166( val, _values, result )
2279
+ result = CType::Type.new(); result.base_type = val[0]
2280
+ result
2281
+ end
2282
+ .,.,
2283
+
2284
+ module_eval <<'.,.,', 'src/ctype.y', 459
2285
+ def _reduce_167( val, _values, result )
2286
+ result = val[1]; result.base_type = val[0]
2287
+ result
2288
+ end
2289
+ .,.,
2290
+
2291
+ module_eval <<'.,.,', 'src/ctype.y', 464
2292
+ def _reduce_168( val, _values, result )
2293
+ result = val[0].first
2294
+ result
2295
+ end
2296
+ .,.,
2297
+
2298
+ module_eval <<'.,.,', 'src/ctype.y', 477
2299
+ def _reduce_169( val, _values, result )
2300
+ # create new type, example: int (*)(const char *, const char *)
2301
+ result = [CType::Type.new(), CType::Type.new()]
2302
+ result.first.base_type = val[0] # pointer to a
2303
+ val[0].base_type = result.last # yet to be determined type
2304
+ result
2305
+ end
2306
+ .,.,
2307
+
2308
+ # reduce 170 omitted
2309
+
2310
+ module_eval <<'.,.,', 'src/ctype.y', 485
2311
+ def _reduce_171( val, _values, result )
2312
+ # see direct_declarator for more info
2313
+ result = val[1]
2314
+ result.last.base_type = val[0]
2315
+ result << val[0].base_type = CType::Type.new()
2316
+ result
2317
+ end
2318
+ .,.,
2319
+
2320
+ module_eval <<'.,.,', 'src/ctype.y', 489
2321
+ def _reduce_172( val, _values, result )
2322
+ result = val[1]
2323
+ result
2324
+ end
2325
+ .,.,
2326
+
2327
+ module_eval <<'.,.,', 'src/ctype.y', 496
2328
+ def _reduce_173( val, _values, result )
2329
+ # create new type
2330
+ result = [CType::Type.new()]
2331
+ result.last.dimensions << nil
2332
+ result
2333
+ end
2334
+ .,.,
2335
+
2336
+ module_eval <<'.,.,', 'src/ctype.y', 502
2337
+ def _reduce_174( val, _values, result )
2338
+ # create new type
2339
+ result = [CType::Type.new()]
2340
+ result.last.dimensions << val[1]
2341
+ result
2342
+ end
2343
+ .,.,
2344
+
2345
+ module_eval <<'.,.,', 'src/ctype.y', 503
2346
+ def _reduce_175( val, _values, result )
2347
+ result = val[0]; result.last.dimensions << nil
2348
+ result
2349
+ end
2350
+ .,.,
2351
+
2352
+ module_eval <<'.,.,', 'src/ctype.y', 505
2353
+ def _reduce_176( val, _values, result )
2354
+ result = val[0]; result.last.dimensions << val[2]
2355
+ result
2356
+ end
2357
+ .,.,
2358
+
2359
+ module_eval <<'.,.,', 'src/ctype.y', 512
2360
+ def _reduce_177( val, _values, result )
2361
+ # create new type
2362
+ result = [CType::Type.new()]
2363
+ result.last.parameters = nil
2364
+ result
2365
+ end
2366
+ .,.,
2367
+
2368
+ module_eval <<'.,.,', 'src/ctype.y', 518
2369
+ def _reduce_178( val, _values, result )
2370
+ # create new type
2371
+ result = [CType::Type.new()]
2372
+ result.last.parameters = val[1]
2373
+ result
2374
+ end
2375
+ .,.,
2376
+
2377
+ module_eval <<'.,.,', 'src/ctype.y', 519
2378
+ def _reduce_179( val, _values, result )
2379
+ result = val[0]; result.last.parameters = nil
2380
+ result
2381
+ end
2382
+ .,.,
2383
+
2384
+ module_eval <<'.,.,', 'src/ctype.y', 521
2385
+ def _reduce_180( val, _values, result )
2386
+ result = val[0]; result.last.parameters = val[2]
2387
+ result
2388
+ end
2389
+ .,.,
2390
+
2391
+ def _reduce_none( val, _values, result )
2392
+ result
2393
+ end
2394
+
2395
+ end # class Parser
2396
+
2397
+ end # module CType