dbc 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,132 @@
1
+ # Copyright (c) 2004 Charles M Mills
2
+ # This document is licenced under The MIT Licence.
3
+ # THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
4
+ # See included LICENCE file.
5
+
6
+ require 'dbc/ctokenizer'
7
+
8
+ def expand_function(conditions, context, body, start_line, line_info)
9
+ raise 'should be a function' unless context.function?
10
+
11
+ context_str = context.short_name
12
+ f_cond = conditions[context_str]
13
+
14
+ pre_text = '' # preconditions
15
+ post_text = '' # postconditions
16
+ inv_text = '' # invariants
17
+ init_text = '' # initializations
18
+ final_text = '' # stuff at the end
19
+
20
+ if f_cond
21
+ # get the conditions
22
+ f_cond.conditions.each do |c|
23
+ case c.type
24
+ when "pre"
25
+ pre_text
26
+ when "post"
27
+ post_text
28
+ else
29
+ raise ParseError, "unexpected condition type: #{c.type} for #{context_str}"
30
+ end << c.to_cexp("\t")
31
+ end
32
+ # set up old values
33
+ f_cond.old_values.each do |identifier, var_used|
34
+ # figures out the type of identifiers such as a->b->c
35
+ begin
36
+ p_type = context.evaluate(identifier)
37
+ rescue CType::EvaluationError
38
+ raise CType::EvaluationError, "#{line_info}: in #{context_str}, #{$!} for #{identifier}"
39
+ end
40
+ init_text << "\t" << p_type.to_init_s(var_used)
41
+ init_text << ' = ' << identifier << ";\n"
42
+ end
43
+ end
44
+
45
+ context.parameters.each do |p|
46
+ inv = conditions[p.short_name]
47
+ if inv then inv.conditions.each do |c|
48
+ raise ParseError, "expecting invariant got #{c.long_type} for #{p.to_s}" \
49
+ unless c.type == "inv"
50
+ exp_str = c.to_cexp("\t", context_str)
51
+ # fix me - this could be better
52
+ sub_str = '\1' + p.identifier + '\2'
53
+ exp_str.gsub!(/(\W)self(\W+)/, sub_str)
54
+ inv_text << exp_str
55
+ end; end
56
+ end
57
+
58
+ void_return_type = (context.base_type.to_s == 'void')
59
+
60
+ unless void_return_type or \
61
+ (post_text.empty? and inv_text.empty?)
62
+ init_text << "\t" << context.base_type.to_init_s('ocl__ret_val') << ";\n"
63
+ end
64
+
65
+ outstr = ''
66
+
67
+ if pre_text.empty? and post_text.empty? and inv_text.empty?
68
+ # we're done early
69
+ body.each do |t|
70
+ outstr << t[1]
71
+ end
72
+ return outstr
73
+ end
74
+
75
+ outstr << "\n" << init_text
76
+
77
+ # output invariants and preconditions
78
+ outstr << "\t/* Invariants: */\n" << inv_text unless inv_text.empty?
79
+ outstr << "\t/* Preconditions: */\n" << pre_text unless pre_text.empty?
80
+
81
+ outstr << "{\n"
82
+ outstr << '#line ' << start_line.to_s << "\n" if line_info
83
+
84
+ # output function body
85
+ if post_text.empty? and inv_text.empty?
86
+ body.each do |t|
87
+ outstr << t[1]
88
+ start_line += CTokenizer.line_count(t[1])
89
+ end
90
+ else
91
+ output_label = false
92
+ body = body.dup
93
+ until body.empty?
94
+ t = body.shift
95
+ start_line += CTokenizer.line_count(t[1])
96
+ # replace return statements with goto statements.
97
+ # if a value is returned this value is saved in ocl__ret_val
98
+ if t[1] == 'return'
99
+ output_label = true
100
+ if void_return_type
101
+ outstr << 'goto ocl__return_here'
102
+ else
103
+ outstr << '{ ocl__ret_val = ( '
104
+ loop do
105
+ raise "syntax error" if body.empty?
106
+ t = body.shift
107
+ start_line += CTokenizer.line_count(t[1])
108
+ break if t[1] == ';'
109
+ outstr << t[1]
110
+ end
111
+ outstr << ' ); goto ocl__return_here; }'
112
+ end
113
+ else # output all other tokens
114
+ outstr << t[1]
115
+ end
116
+ end
117
+ outstr << "\nocl__return_here:\n" if output_label
118
+ # must explicitly return the return value unless return value is void
119
+ final_text << "\treturn ocl__ret_val;\n" unless void_return_type
120
+ end
121
+ outstr << "\n"
122
+
123
+ # output postconditions and invariants
124
+ outstr << "\t/* Postconditions: */\n" << post_text unless post_text.empty?
125
+ outstr << "\t/* Invariants: */\n" << inv_text unless inv_text.empty?
126
+
127
+ outstr << final_text
128
+ outstr << "}\n"
129
+ outstr << '#line ' << start_line.to_s << "\n" if line_info
130
+ outstr
131
+ end
132
+
@@ -0,0 +1,2166 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by racc 1.4.4
4
+ # from racc grammer file "src/ocl.y".
5
+ #
6
+
7
+ require 'racc/parser'
8
+
9
+
10
+
11
+ require 'dbc/ctype'
12
+ require 'dbc/ctokenizer'
13
+ require 'dbc/parseerrorhandler'
14
+
15
+ class String
16
+ def cexp?; true end
17
+ def to_cexp; self end
18
+ end
19
+
20
+ module OCL
21
+
22
+ class Label
23
+
24
+ def initialize(message, file, line)
25
+ @message = message
26
+ if message =~ /\n\r"/
27
+ raise ParseError, "label '#{message}' contains invalid characters: '\\n', '\\r', or '\"'"
28
+ end
29
+ @file = file
30
+ @line = line
31
+ end
32
+
33
+ attr_reader :message, :file, :line
34
+
35
+ def to_s(context = nil)
36
+ if @file
37
+ tag = "\"#{@file}:#{@line}: "
38
+ else
39
+ tag = " __FILE__ \":#{@line}: "
40
+ end
41
+ # C string is open
42
+ tag << context << ': ' if context
43
+ tag << ' ' << @message if @message
44
+ tag << "\"" # close C string
45
+ end
46
+
47
+ end # Label
48
+
49
+ class Range
50
+ def initialize(first, last, exclude_end)
51
+ @first = first
52
+ @last = last
53
+ @exclude_end = (exclude_end == true)
54
+ end
55
+ def exclude_end?
56
+ @exclude_end
57
+ end
58
+ def test_expression(expression)
59
+ if @exclude_end
60
+ s = '<'
61
+ else
62
+ s = '<='
63
+ end
64
+ "(((#{@first}) <= (#{expression})) && ((#{expression}) #{s} (#{@last})))"
65
+ end
66
+ attr_reader :first, :last
67
+ end # Range
68
+
69
+ class IteratorRange
70
+ def initialize(declaration, boundry)
71
+ @declaration = declaration
72
+ @boundry = boundry
73
+ end
74
+ def declare(indent_str)
75
+ str = indent_str.dup
76
+ # initialization of variable
77
+ str << @declaration.to_s << ";\n"
78
+ end
79
+ def open(indent_str)
80
+ identifier = @declaration.identifier
81
+ str = ''
82
+ str << indent_str << "for (#{identifier} = #{@boundry.first}; "
83
+ if @boundry.exclude_end?
84
+ str << "#{identifier} < #{@boundry.last}; "
85
+ else
86
+ str << "#{identifier} <= #{@boundry.last}; "
87
+ end
88
+ str << "#{identifier}++) {\n"
89
+ end
90
+ def close(indent_str)
91
+ "#{indent_str}}\n"
92
+ end
93
+ end # IteratorRange
94
+
95
+ class Block
96
+ @@results = 0
97
+ def Block.result
98
+ "__ocl_#{@@results += 1}_"
99
+ end
100
+ def Block.check_condition(condition, result, indent_str = '')
101
+ "#{indent_str}#{result} = (int)(#{condition});\n"
102
+ end
103
+
104
+ def to_s
105
+ raise ParseError, "invalid expression" unless cexp?
106
+ to_cexp
107
+ end
108
+ end # Block
109
+
110
+ class Paren < Block
111
+ def initialize(exp)
112
+ @expression = exp
113
+ end
114
+ def cexp?
115
+ @expression.cexp?
116
+ end
117
+ def to_exp(result, indent_str = '')
118
+ @expression.to_exp(result, indent_str)
119
+ end
120
+ def to_cexp
121
+ "(#{@expression})"
122
+ end
123
+ end # Parens
124
+
125
+ class Implies < Block
126
+ def initialize(condition, implication)
127
+ @condition = condition
128
+ @implication = implication
129
+ end
130
+
131
+ def to_exp(result, indent_str = '')
132
+ str = ''
133
+ # implies statements are true by default
134
+ str << indent_str << "#{result} = 1;\n"
135
+ if @condition.cexp?
136
+ expression = @condition.to_cexp
137
+ else
138
+ expression = Block.result
139
+ str << @condition.to_exp(expression, indent_str)
140
+ end
141
+ # if the expression is true then that implies the condition
142
+ str << indent_str << "if (#{expression}) {\n"
143
+ if @implication.cexp?
144
+ str << check_condition(@implication.to_cexp, result, "\t" << indent_str)
145
+ else
146
+ str << @implication.to_exp(result, "\t" << indent_str)
147
+ end
148
+ str << indent_str << "}\n"
149
+ end
150
+
151
+ def cexp?
152
+ @condition.cexp? and @implication.cexp?
153
+ end
154
+
155
+ def to_cexp
156
+ "#{@condition.to_cexp} ? #{@implication.to_cexp} : 1"
157
+ end
158
+ end # Implies
159
+
160
+ class Binary < Block
161
+ def initialize(exp1, exp2)
162
+ @expression1 = exp1
163
+ @expression2 = exp2
164
+ end
165
+ def cexp?
166
+ @expression1.cexp? and @expression2.cexp?
167
+ end
168
+ def to_cexp
169
+ "(#{@expression1.to_cexp} #{csymbol} #{@expression2.to_cexp})"
170
+ end
171
+ end # Binary
172
+
173
+ class And < Binary
174
+ def to_exp(result, indent_str = '')
175
+ str = ''
176
+ if @expression1.cexp?
177
+ str << Block.check_condition(@expression1.to_cexp, result, indent_str)
178
+ else
179
+ str << @expression1.to_exp(result, indent_str)
180
+ end
181
+ # if expression1 is true we must check condtion
182
+ str << indent_str << "if (#{result}) {\n"
183
+ if @expression2.cexp?
184
+ str << Block.check_condition(@expression2.to_cexp, result, "\t" << indent_str)
185
+ else
186
+ str << @expression2.to_exp(result, "\t" << indent_str)
187
+ end
188
+ str << indent_str << "}\n"
189
+ end
190
+ def csymbol; '&&' end
191
+ end # And
192
+
193
+ class Or < Binary
194
+ def to_exp(result, indent_str = '')
195
+ str = ''
196
+ if @expression1.cexp?
197
+ str << Block.check_condition(@expression1.to_cexp, result, indent_str)
198
+ else
199
+ str << @expression1.to_exp(result, indent_str)
200
+ end
201
+ # if expression1 is true we must check condtion
202
+ str << indent_str << "if (!#{result}) {\n"
203
+ if @expression2.cexp?
204
+ str << Block.check_condition(@expression2.to_cexp, result, "\t" << indent_str)
205
+ else
206
+ str << @expression2.to_exp(result, "\t" << indent_str)
207
+ end
208
+ str << indent_str << "}\n"
209
+ end
210
+ def csymbol; '||' end
211
+ end # Or
212
+
213
+ class Xor < Binary
214
+ def to_exp(result, indent_str = '')
215
+ raise "XOR not implemented yet..."
216
+ end
217
+ end # Xor
218
+
219
+ class Unary < Block
220
+ def initialize(exp)
221
+ @expression = exp
222
+ end
223
+ def cexp?
224
+ @expression.cexp?
225
+ end
226
+ def to_cexp
227
+ "#{csymbol}#{@expression.to_cexp}"
228
+ end
229
+ def to_exp(result, indent_str = '')
230
+ # expresssion should be a block
231
+ str = ''
232
+ str << @expression.to_exp(result, indent_str)
233
+ str << indent_str << "#{result} = #{csymbol}#{result};\n"
234
+ end
235
+ end # Unary
236
+
237
+ class Not < Unary
238
+ def csymbol; '!' end
239
+ end
240
+
241
+ class UMinus < Unary
242
+ def csymbol; '-' end
243
+ end
244
+
245
+ class UPlus < Unary
246
+ def csymbol; '+' end
247
+ end
248
+
249
+ # only allows C expression
250
+ class CUnary < Unary
251
+ def initialize(exp)
252
+ @expression = exp.to_cexp
253
+ end
254
+ def cexp?; true end
255
+ end
256
+
257
+ class SizeOf < Block
258
+ def initialize(exp)
259
+ raise ParseError, "cannot take the size of a condition" unless exp.cexp?
260
+ super
261
+ end
262
+ def to_cexp
263
+ "sizeof(#{expression})"
264
+ end
265
+ end # SizeOf
266
+
267
+ class UAddrs < CUnary
268
+ def initialize(exp)
269
+ raise ParseError, "cannot reference a condition" unless exp.cexp?
270
+ super
271
+ end
272
+ def csymbol; '&' end
273
+ def cexp?; true end
274
+ end
275
+
276
+ class UDeref < CUnary
277
+ def initialize(exp)
278
+ raise ParseError, "cannot dereference a condition" unless exp.cexp?
279
+ super
280
+ end
281
+ def csymbol; '*' end
282
+ def cexp?; true end
283
+ end
284
+
285
+ class IterBlock < Block
286
+ def initialize(iterator, expression)
287
+ @iterator = iterator
288
+ @expression = expression
289
+ end
290
+ def cexp?
291
+ false
292
+ end
293
+ def to_cexp
294
+ raise "cannot convert #{self.class} to C expression"
295
+ end
296
+ def to_exp(result, indent_str = '')
297
+ # if the condition is true for a single element then we mark result
298
+ # as true and break (since the condition must be true for only one element).
299
+ str = ''
300
+ str << self.initialize_iterator(result, indent_str)
301
+ str << indent_str << "{\n"
302
+ indent = "\t" << indent_str # increase indent
303
+ if @expression.cexp?
304
+ check_exp = @expression.to_cexp
305
+ inside_iterator = ''
306
+ else
307
+ check_exp = Block.result
308
+ str << indent << "int #{check_exp} = 0;\n"
309
+ inside_iterator = @expression.to_exp(check_exp, "\t" << indent)
310
+ end
311
+ str << @iterator.declare(indent)
312
+ str << @iterator.open(indent)
313
+ # inside_iterator does checks / calcs necessary for check_exp to be valid
314
+ str << inside_iterator
315
+ str << self.check_iteration(check_exp, result, indent)
316
+ str << @iterator.close(indent)
317
+ str << indent_str << "}\n"
318
+ end
319
+ end # IterBlock
320
+
321
+ class Exists < IterBlock
322
+ def initialize_iterator(result, indent_str)
323
+ '' << indent_str << "#{result} = 0;\n"
324
+ end
325
+
326
+ def check_iteration(expression, result, indent_str)
327
+ str = ''
328
+ str << indent_str << "\tif (#{expression}) {\n"
329
+ str << indent_str << "\t\t#{result} = 1;\n"
330
+ str << indent_str << "\t\tbreak;\n"
331
+ str << indent_str << "\t}\n"
332
+ end
333
+ end # Exists
334
+
335
+ class Forall < IterBlock
336
+ def initialize_iterator(result, indent_str)
337
+ '' << indent_str << "#{result} = 1;\n"
338
+ end
339
+ def check_iteration(expression, result, indent_str)
340
+ str = ''
341
+ str << indent_str << "\tif (!(#{expression})) {\n"
342
+ str << indent_str << "\t\t#{result} = 0;\n"
343
+ str << indent_str << "\t\tbreak;\n"
344
+ str << indent_str << "\t}\n"
345
+ end
346
+ end # Forall
347
+
348
+ # Needs to be able to deal with old values!
349
+ class Condition
350
+ DEFAULT_ERROR_FUNCTION = 'dbc_error'.freeze
351
+
352
+ @@mappings = {
353
+ 'pre' => 'precondition',
354
+ 'post' => 'postcondition',
355
+ 'inv' => 'invariant'
356
+ }.freeze
357
+
358
+ def initialize(type, label)
359
+ @old_values = nil
360
+ @type = type
361
+ raise "invalid condition type #{type}" unless @type
362
+ @label = label
363
+ @error_function = DEFAULT_ERROR_FUNCTION
364
+ end
365
+
366
+ def condition=(expression)
367
+ raise "condition already set" if @condition
368
+ @condition = expression
369
+ end
370
+
371
+ attr_accessor :error_function
372
+ attr_reader :type, :label, :old_values
373
+
374
+ def long_type
375
+ @@mappings[@type]
376
+ end
377
+
378
+ def to_cexp(indent='', context=nil)
379
+ raise "condition not set" unless @condition
380
+
381
+ error_tag = "#{@label.to_s(context)} \"#{long_type} failed\""
382
+
383
+ str = ''
384
+ str << indent << "{\n"
385
+ if @condition.cexp?
386
+ result = @condition.to_cexp
387
+ else
388
+ result = "__ocl_result_"
389
+ str << indent << "\tint #{result};\n"
390
+ str << @condition.to_exp(result, "\t" << indent)
391
+ end
392
+ str << abort_condition(error_tag, result, "\t" << indent)
393
+ str << indent << "}\n"
394
+ end
395
+
396
+ def abort_condition(error_info, result, indent_str='')
397
+ str = ''
398
+ str << indent_str << "if (!(#{result})) {\n"
399
+ str << indent_str << "\t#{@error_function}(#{error_info});\n"
400
+ str << indent_str << "}\n"
401
+ end
402
+
403
+ def to_s
404
+ "#{@type}:"
405
+ end
406
+
407
+ end # Condition
408
+
409
+ end # module OCL
410
+
411
+
412
+ module OCL
413
+
414
+ class Parser < Racc::Parser
415
+
416
+ module_eval <<'..end src/ocl.y modeval..id980a140244', 'src/ocl.y', 849
417
+
418
+ def Parser.reserved_word?(str)
419
+ (str =~ /\A(?:context|forall|exists|in|and|or|implies|not|xor)\Z/o) != nil
420
+ end
421
+
422
+ def initialize(str, file, line)
423
+ @line = line
424
+ @file = file
425
+
426
+ @old_values = []
427
+ @context = nil
428
+ begin
429
+ get_tokens(str)
430
+ @conditions = do_parse
431
+ rescue ParseError
432
+ CTokenizer.error(@file, @line, $!)
433
+ end
434
+ @q = nil # done with tokens
435
+ end
436
+
437
+ attr_reader :file, :line, :old_values, :conditions, :context
438
+
439
+ def context=(val)
440
+ raise "context already set" if @context
441
+ @context = val
442
+ end
443
+
444
+ protected
445
+ include ParseErrorHandler
446
+
447
+ def add_old(identifier)
448
+ # reuse variables if possible
449
+ id_var = @old_values.find do |pair|
450
+ pair[0] == identifier
451
+ end
452
+ if id_var
453
+ var_used = id_var[1]
454
+ else
455
+ var_used = "ocl__old_value#{@old_values.length}"
456
+ @old_values.push [identifier, var_used]
457
+ end
458
+ var_used
459
+ end
460
+
461
+ def get_tokens(str)
462
+ @q = []
463
+ line = @line
464
+ until str.empty?
465
+ case str
466
+ when /\A(@)[ \t]*(pre)/o
467
+ @q.push ['@pre', '@pre']
468
+ str = $'
469
+ when /\A(inv|pre|post)(?:[ \t]+([^:]+))?[ \t]*:/o
470
+ @q.push [:END_OF_STATEMENT, ''] unless @q.empty?
471
+ @q.push [$1, $1]
472
+ @q.push [:LABEL, Label.new($2, @file, line)]
473
+ str = $'
474
+ when /\A\.\.\.?/
475
+ @q.push [$&, $&]
476
+ str = $'
477
+ else
478
+ # get C token
479
+ t, str = CTokenizer.split_token(str)
480
+ line += CTokenizer.line_count(t[1])
481
+ case t[0]
482
+ when :SYMBOL
483
+ t = [t[1], t[1]]
484
+ when :IDENTIFIER
485
+ if CTokenizer::CLexer.reserved_word?(t[1]) or \
486
+ Parser.reserved_word?(t[1])
487
+ t = [t[1], t[1]].freeze
488
+ elsif tdef = CType[t[1]]
489
+ t = [:TYPEDEF_NAME, tdef]
490
+ end
491
+ when :COMMENT
492
+ raise ParseError, "comment embedded inside a comment"
493
+ when :SPACE
494
+ next # skip
495
+ end
496
+ @q.push t
497
+ end
498
+ end # until
499
+ @q.push [:END_OF_STATEMENT, false]
500
+ @q.push [false, false]
501
+ end
502
+
503
+ def next_token
504
+ t = @q.shift
505
+ while t and t[0] == :NEWLINE
506
+ @line += 1
507
+ t = @q.shift
508
+ end
509
+ t
510
+ end
511
+
512
+ ..end src/ocl.y modeval..id980a140244
513
+
514
+ ##### racc 1.4.4 generates ###
515
+
516
+ racc_reduce_table = [
517
+ 0, 0, :racc_error,
518
+ 1, 69, :_reduce_none,
519
+ 1, 70, :_reduce_none,
520
+ 2, 70, :_reduce_3,
521
+ 1, 70, :_reduce_4,
522
+ 1, 71, :_reduce_5,
523
+ 2, 71, :_reduce_6,
524
+ 3, 72, :_reduce_7,
525
+ 1, 74, :_reduce_none,
526
+ 1, 74, :_reduce_none,
527
+ 3, 73, :_reduce_10,
528
+ 2, 77, :_reduce_11,
529
+ 1, 79, :_reduce_none,
530
+ 1, 79, :_reduce_none,
531
+ 1, 79, :_reduce_none,
532
+ 1, 80, :_reduce_none,
533
+ 1, 80, :_reduce_none,
534
+ 1, 80, :_reduce_none,
535
+ 1, 80, :_reduce_none,
536
+ 1, 80, :_reduce_none,
537
+ 3, 80, :_reduce_20,
538
+ 1, 76, :_reduce_none,
539
+ 1, 76, :_reduce_22,
540
+ 1, 76, :_reduce_none,
541
+ 1, 76, :_reduce_none,
542
+ 1, 81, :_reduce_none,
543
+ 4, 81, :_reduce_26,
544
+ 4, 81, :_reduce_27,
545
+ 3, 81, :_reduce_28,
546
+ 3, 81, :_reduce_29,
547
+ 3, 81, :_reduce_30,
548
+ 1, 83, :_reduce_none,
549
+ 2, 83, :_reduce_32,
550
+ 1, 82, :_reduce_none,
551
+ 3, 82, :_reduce_34,
552
+ 1, 84, :_reduce_none,
553
+ 1, 84, :_reduce_none,
554
+ 1, 86, :_reduce_none,
555
+ 2, 86, :_reduce_38,
556
+ 2, 86, :_reduce_39,
557
+ 2, 86, :_reduce_40,
558
+ 2, 86, :_reduce_41,
559
+ 2, 86, :_reduce_42,
560
+ 2, 86, :_reduce_43,
561
+ 4, 86, :_reduce_44,
562
+ 6, 86, :_reduce_45,
563
+ 6, 86, :_reduce_46,
564
+ 1, 87, :_reduce_none,
565
+ 4, 87, :_reduce_48,
566
+ 1, 89, :_reduce_none,
567
+ 3, 89, :_reduce_50,
568
+ 3, 89, :_reduce_51,
569
+ 3, 89, :_reduce_52,
570
+ 1, 90, :_reduce_none,
571
+ 3, 90, :_reduce_54,
572
+ 3, 90, :_reduce_55,
573
+ 1, 91, :_reduce_none,
574
+ 3, 91, :_reduce_57,
575
+ 1, 93, :_reduce_none,
576
+ 3, 93, :_reduce_59,
577
+ 3, 93, :_reduce_60,
578
+ 3, 93, :_reduce_61,
579
+ 3, 93, :_reduce_62,
580
+ 3, 93, :_reduce_63,
581
+ 3, 93, :_reduce_64,
582
+ 1, 94, :_reduce_none,
583
+ 3, 94, :_reduce_66,
584
+ 1, 95, :_reduce_none,
585
+ 3, 95, :_reduce_68,
586
+ 1, 96, :_reduce_none,
587
+ 3, 96, :_reduce_70,
588
+ 1, 78, :_reduce_none,
589
+ 3, 78, :_reduce_72,
590
+ 3, 88, :_reduce_73,
591
+ 3, 92, :_reduce_74,
592
+ 3, 92, :_reduce_75,
593
+ 1, 97, :_reduce_none,
594
+ 1, 97, :_reduce_none,
595
+ 1, 97, :_reduce_none,
596
+ 1, 97, :_reduce_none,
597
+ 1, 97, :_reduce_none,
598
+ 1, 97, :_reduce_none,
599
+ 1, 97, :_reduce_none,
600
+ 1, 97, :_reduce_none,
601
+ 1, 97, :_reduce_none,
602
+ 1, 98, :_reduce_none,
603
+ 1, 98, :_reduce_none,
604
+ 1, 99, :_reduce_none,
605
+ 1, 99, :_reduce_none,
606
+ 2, 75, :_reduce_89,
607
+ 1, 75, :_reduce_90,
608
+ 1, 102, :_reduce_91,
609
+ 2, 102, :_reduce_92,
610
+ 1, 103, :_reduce_93,
611
+ 1, 103, :_reduce_94,
612
+ 1, 103, :_reduce_95,
613
+ 1, 103, :_reduce_96,
614
+ 1, 106, :_reduce_none,
615
+ 1, 106, :_reduce_none,
616
+ 2, 104, :_reduce_99,
617
+ 1, 100, :_reduce_none,
618
+ 2, 100, :_reduce_101,
619
+ 1, 101, :_reduce_102,
620
+ 2, 107, :_reduce_103,
621
+ 1, 107, :_reduce_none,
622
+ 1, 110, :_reduce_none,
623
+ 1, 109, :_reduce_106,
624
+ 3, 109, :_reduce_107,
625
+ 4, 109, :_reduce_108,
626
+ 3, 109, :_reduce_109,
627
+ 4, 109, :_reduce_110,
628
+ 4, 109, :_reduce_111,
629
+ 3, 109, :_reduce_112,
630
+ 2, 105, :_reduce_113,
631
+ 2, 108, :_reduce_114,
632
+ 1, 108, :_reduce_115,
633
+ 3, 108, :_reduce_116,
634
+ 2, 108, :_reduce_117,
635
+ 1, 113, :_reduce_118,
636
+ 2, 113, :_reduce_119,
637
+ 1, 111, :_reduce_120,
638
+ 3, 111, :_reduce_121,
639
+ 1, 114, :_reduce_122,
640
+ 3, 114, :_reduce_123,
641
+ 2, 115, :_reduce_124,
642
+ 2, 115, :_reduce_125,
643
+ 1, 115, :_reduce_126,
644
+ 1, 112, :_reduce_127,
645
+ 1, 117, :_reduce_128,
646
+ 3, 117, :_reduce_129,
647
+ 1, 85, :_reduce_130,
648
+ 2, 85, :_reduce_131,
649
+ 1, 116, :_reduce_132,
650
+ 1, 118, :_reduce_133,
651
+ 1, 118, :_reduce_none,
652
+ 2, 118, :_reduce_135,
653
+ 3, 119, :_reduce_none,
654
+ 2, 119, :_reduce_137,
655
+ 3, 119, :_reduce_138,
656
+ 3, 119, :_reduce_139,
657
+ 4, 119, :_reduce_140,
658
+ 2, 119, :_reduce_141,
659
+ 3, 119, :_reduce_142,
660
+ 3, 119, :_reduce_143,
661
+ 4, 119, :_reduce_144 ]
662
+
663
+ racc_reduce_n = 145
664
+
665
+ racc_shift_n = 228
666
+
667
+ racc_action_table = [
668
+ 37, 40, 13, 79, 79, 20, 22, 79, 113, 115,
669
+ 79, 167, 113, 81, 82, 166, 117, 98, 222, 158,
670
+ 32, 35, 38, 42, 47, 16, 217, 121, 25, 225,
671
+ 87, 88, 34, 139, 41, 14, 89, 81, 82, 23,
672
+ 27, 108, 31, 80, 113, 70, 49, 52, 53, 55,
673
+ 57, 59, 61, 62, 63, 66, 69, 48, 50, 37,
674
+ 40, 13, 69, 48, 20, 22, 69, 48, 185, 90,
675
+ 79, 79, 184, 86, 154, 168, 169, 79, 152, 32,
676
+ 35, 38, 42, 47, 16, 175, 79, 25, 100, 205,
677
+ 170, 34, 221, 41, 14, 78, 167, 206, 23, 27,
678
+ 166, 31, 113, 113, 70, 49, 52, 53, 55, 57,
679
+ 59, 61, 62, 63, 66, 69, 48, 50, 37, 40,
680
+ 13, 113, 172, 20, 22, 115, 115, 171, 81, 82,
681
+ 185, 154, 209, 117, 184, 152, 152, 99, 32, 35,
682
+ 38, 42, 47, 16, 115, 211, 25, 212, 115, 99,
683
+ 34, 117, 41, 14, 97, 209, 98, 23, 27, 152,
684
+ 31, 81, 82, 70, 49, 52, 53, 55, 57, 59,
685
+ 61, 62, 63, 66, 69, 48, 50, 37, 40, 13,
686
+ 110, 16, 20, 22, 25, 110, 16, 174, 218, 25,
687
+ 41, 14, 75, 76, 77, 41, 14, 32, 35, 38,
688
+ 42, 47, 16, 219, 220, 25, 7, 9, 11, 34,
689
+ 159, 41, 14, 79, 113, 173, 23, 27, 188, 31,
690
+ 191, 101, 70, 49, 52, 53, 55, 57, 59, 61,
691
+ 62, 63, 66, 69, 48, 50, 47, 115, 3, 5,
692
+ 7, 9, 11, 16, 209, 183, 25, 45, 152, 113,
693
+ 44, 226, 41, 14, 7, 9, 11, 70, 49, 52,
694
+ 53, 55, 57, 59, 61, 62, 63, 66, 69, 48,
695
+ 50, 47, 16, 101, nil, 25, 75, 76, 77, 154,
696
+ 183, 41, 14, 152, 93, 94, 95, 96, 91, 92,
697
+ nil, nil, 70, 49, 52, 53, 55, 57, 59, 61,
698
+ 62, 63, 66, 69, 48, 50, 37, 40, 13, nil,
699
+ 16, 20, 22, 25, 7, 9, 11, nil, nil, 41,
700
+ 14, 75, 76, 77, nil, nil, 32, 35, 38, 42,
701
+ nil, 16, nil, nil, 25, nil, nil, nil, 106, nil,
702
+ 41, 14, nil, nil, nil, 23, 27, nil, 31, 37,
703
+ 40, 13, nil, nil, 20, 22, 70, 49, 52, 53,
704
+ 55, 57, 59, 61, 62, nil, nil, nil, nil, 32,
705
+ 35, 38, 42, nil, 16, nil, nil, 25, nil, nil,
706
+ nil, 34, nil, 41, 14, nil, 193, nil, 23, 27,
707
+ nil, 31, 37, 40, 13, nil, nil, 20, 22, 93,
708
+ 94, 95, 96, 91, 92, nil, nil, nil, nil, nil,
709
+ nil, nil, 32, 35, 38, 42, nil, 16, nil, nil,
710
+ 25, nil, nil, nil, 34, nil, 41, 14, nil, nil,
711
+ nil, 23, 27, nil, 31, 37, 40, 13, nil, nil,
712
+ 20, 22, nil, nil, nil, nil, nil, nil, nil, nil,
713
+ nil, nil, nil, nil, nil, 32, 35, 38, 42, nil,
714
+ 16, nil, nil, 25, nil, nil, nil, 34, nil, 41,
715
+ 14, nil, nil, nil, 23, 27, nil, 31, 37, 40,
716
+ 13, nil, nil, 20, 22, nil, nil, nil, nil, nil,
717
+ nil, nil, nil, nil, nil, nil, nil, nil, 32, 35,
718
+ 38, 42, nil, 16, nil, nil, 25, nil, nil, nil,
719
+ 34, nil, 41, 14, nil, nil, nil, 23, 27, nil,
720
+ 31, 37, 40, 13, nil, nil, 20, 22, nil, nil,
721
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
722
+ nil, 32, 35, 38, 42, nil, 16, nil, nil, 25,
723
+ nil, nil, nil, 34, nil, 41, 14, nil, nil, nil,
724
+ 23, 27, nil, 31, 37, 40, 13, nil, nil, 20,
725
+ 22, nil, nil, nil, nil, nil, nil, nil, nil, nil,
726
+ nil, nil, nil, nil, 32, 35, 38, 42, nil, 16,
727
+ nil, nil, 25, nil, nil, nil, 34, nil, 41, 14,
728
+ nil, 177, nil, 23, 27, nil, 31, 37, 40, 13,
729
+ nil, nil, 20, 22, nil, nil, nil, nil, nil, nil,
730
+ nil, nil, nil, nil, nil, nil, nil, 32, 35, 38,
731
+ 42, nil, 16, nil, nil, 25, nil, nil, nil, 34,
732
+ nil, 41, 14, nil, nil, nil, 23, 27, nil, 31,
733
+ 37, 40, 13, nil, nil, 20, 22, nil, nil, nil,
734
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
735
+ 32, 35, 38, 42, nil, 16, nil, nil, 25, nil,
736
+ nil, nil, 34, nil, 41, 14, nil, 214, nil, 23,
737
+ 27, nil, 31, 37, 40, 13, nil, nil, 20, 22,
738
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
739
+ nil, nil, nil, 32, 35, 38, 42, nil, 16, nil,
740
+ nil, 25, nil, nil, nil, 34, nil, 41, 14, nil,
741
+ nil, nil, 23, 27, nil, 31, 37, 40, 13, nil,
742
+ nil, 20, 22, nil, nil, nil, nil, nil, nil, nil,
743
+ nil, nil, nil, nil, nil, nil, 32, 35, 38, 42,
744
+ nil, 16, nil, nil, 25, nil, nil, nil, 34, nil,
745
+ 41, 14, nil, nil, nil, 23, 27, nil, 31, 37,
746
+ 40, 13, nil, nil, 20, 22, nil, nil, nil, nil,
747
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 32,
748
+ 35, 38, 42, nil, 16, nil, nil, 25, nil, nil,
749
+ nil, 34, nil, 41, 14, nil, nil, nil, 23, 27,
750
+ nil, 31, 37, 40, 13, nil, nil, 20, 22, nil,
751
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
752
+ nil, nil, 32, 35, 38, 42, nil, 16, nil, nil,
753
+ 25, nil, nil, nil, 34, nil, 41, 14, nil, nil,
754
+ nil, 23, 27, nil, 31, 37, 40, 13, nil, nil,
755
+ 20, 22, nil, nil, nil, nil, nil, nil, nil, nil,
756
+ nil, nil, nil, nil, nil, 32, 35, 38, 42, nil,
757
+ 16, nil, nil, 25, nil, nil, nil, 34, nil, 41,
758
+ 14, nil, nil, nil, 23, 27, nil, 31, 37, 40,
759
+ 13, nil, nil, 20, 22, nil, nil, nil, nil, nil,
760
+ nil, nil, nil, nil, nil, nil, nil, nil, 32, 35,
761
+ 38, 42, nil, 16, nil, nil, 25, nil, nil, nil,
762
+ 34, nil, 41, 14, nil, nil, nil, 23, 27, nil,
763
+ 31, 37, 40, 13, nil, nil, 20, 22, nil, nil,
764
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
765
+ nil, 32, 35, 38, 42, nil, 16, nil, nil, 25,
766
+ nil, nil, nil, 34, nil, 41, 14, nil, nil, nil,
767
+ 23, 27, nil, 31, 37, 40, 13, nil, nil, 20,
768
+ 22, nil, nil, nil, nil, nil, nil, nil, nil, nil,
769
+ nil, nil, nil, nil, 32, 35, 38, 42, nil, 16,
770
+ nil, nil, 25, nil, nil, nil, 34, nil, 41, 14,
771
+ nil, nil, nil, 23, 27, nil, 31, 37, 40, 13,
772
+ nil, nil, 20, 22, nil, nil, nil, nil, nil, nil,
773
+ nil, nil, nil, nil, nil, nil, nil, 32, 35, 38,
774
+ 42, nil, 16, nil, nil, 25, nil, nil, nil, 34,
775
+ nil, 41, 14, nil, nil, nil, 23, 27, nil, 31,
776
+ 37, 40, 13, nil, nil, 20, 22, nil, nil, nil,
777
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
778
+ 32, 35, 38, 42, nil, 16, nil, nil, 25, nil,
779
+ nil, nil, 34, nil, 41, 14, nil, nil, nil, 23,
780
+ 27, nil, 31, 37, 40, 13, nil, nil, 20, 22,
781
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
782
+ nil, nil, nil, 32, 35, 38, 42, nil, 16, nil,
783
+ nil, 25, nil, nil, nil, 34, nil, 41, 14, nil,
784
+ nil, nil, 23, 27, nil, 31, 37, 40, 13, nil,
785
+ nil, 20, 22, nil, nil, nil, nil, nil, nil, nil,
786
+ nil, nil, nil, nil, nil, nil, 32, 35, 38, 42,
787
+ nil, 16, nil, nil, 25, nil, nil, nil, 34, nil,
788
+ 41, 14, nil, nil, nil, 23, 27, nil, 31, 37,
789
+ 40, 13, nil, nil, 20, 22, nil, nil, nil, nil,
790
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 32,
791
+ 35, 38, 42, nil, 16, nil, nil, 25, nil, nil,
792
+ nil, 34, nil, 41, 14, nil, nil, nil, 23, 27,
793
+ nil, 31, 37, 40, 13, nil, nil, 20, 22, nil,
794
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
795
+ nil, nil, 32, 35, 38, 42, nil, 16, nil, nil,
796
+ 25, nil, nil, nil, 34, nil, 41, 14, nil, nil,
797
+ nil, 23, 27, nil, 31, 37, 40, 13, nil, nil,
798
+ 20, 22, nil, nil, nil, nil, nil, nil, nil, nil,
799
+ nil, nil, nil, nil, nil, 32, 35, 38, 42, nil,
800
+ 16, nil, nil, 25, nil, nil, nil, 34, nil, 41,
801
+ 14, nil, nil, nil, 23, 27, nil, 31, 37, 40,
802
+ 13, nil, nil, 20, 22, nil, nil, nil, nil, nil,
803
+ nil, nil, nil, nil, nil, nil, nil, nil, 32, 35,
804
+ 38, 42, nil, 16, nil, nil, 25, nil, nil, nil,
805
+ 34, nil, 41, 14, nil, nil, nil, 23, 27, nil,
806
+ 31, 37, 40, 13, nil, nil, 20, 22, nil, nil,
807
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
808
+ nil, 32, 35, 38, 42, nil, 16, nil, nil, 25,
809
+ nil, nil, nil, 34, nil, 41, 14, nil, nil, nil,
810
+ 23, 27, nil, 31, 37, 40, 13, nil, nil, 20,
811
+ 22, nil, nil, nil, nil, nil, nil, nil, nil, nil,
812
+ nil, nil, nil, nil, 32, 35, 38, 42, nil, 16,
813
+ nil, nil, 25, nil, nil, nil, 34, nil, 41, 14,
814
+ nil, nil, nil, 23, 27, nil, 31, 37, 40, 13,
815
+ nil, nil, 20, 22, nil, nil, nil, nil, nil, nil,
816
+ nil, nil, nil, nil, nil, nil, nil, 32, 35, 38,
817
+ 42, nil, 16, nil, nil, 25, nil, nil, nil, 34,
818
+ nil, 41, 14, nil, nil, nil, 23, 27, nil, 31,
819
+ 37, 40, 13, nil, nil, 20, 22, nil, nil, nil,
820
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
821
+ 32, 35, 38, 42, nil, 16, nil, nil, 25, nil,
822
+ nil, nil, 34, nil, 41, 14, nil, nil, nil, 23,
823
+ 27, nil, 31, 37, 40, 13, nil, nil, 20, 22,
824
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
825
+ nil, nil, nil, 32, 35, 38, 42, nil, 16, nil,
826
+ nil, 25, nil, nil, nil, 34, nil, 41, 14, nil,
827
+ nil, nil, 23, 27, nil, 31, 37, 40, 13, nil,
828
+ nil, 20, 22, nil, nil, nil, nil, nil, nil, nil,
829
+ nil, nil, nil, nil, nil, nil, 32, 35, 38, 42,
830
+ nil, 16, nil, nil, 25, nil, nil, nil, 34, nil,
831
+ 41, 14, nil, nil, nil, 23, 27, nil, 31, 37,
832
+ 40, 13, nil, nil, 20, 22, nil, nil, nil, nil,
833
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 32,
834
+ 35, 38, 42, nil, 16, nil, nil, 25, nil, nil,
835
+ nil, 34, nil, 41, 14, nil, nil, nil, 23, 27,
836
+ nil, 31, 37, 40, 13, nil, nil, 20, 22, nil,
837
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
838
+ nil, nil, 32, 35, 38, 42, 47, 16, nil, nil,
839
+ 25, nil, nil, nil, 34, nil, 41, 14, nil, nil,
840
+ 47, 23, 27, nil, 31, nil, nil, 70, 49, 52,
841
+ 53, 55, 57, 59, 61, 62, 63, 66, 69, 48,
842
+ 50, 70, 49, 52, 53, 55, 57, 59, 61, 62,
843
+ 63, 66, 69, 48, 50, 47, nil, nil, nil, nil,
844
+ nil, nil, nil, nil, 216, nil, nil, nil, nil, nil,
845
+ nil, nil, nil, nil, nil, nil, 70, 49, 52, 53,
846
+ 55, 57, 59, 61, 62, 63, 66, 69, 48, 50,
847
+ 47, 16, nil, nil, 25, nil, nil, nil, nil, nil,
848
+ 41, 14, nil, nil, nil, 47, nil, nil, nil, nil,
849
+ nil, 70, 49, 52, 53, 55, 57, 59, 61, 62,
850
+ 63, 66, 69, 48, 50, 224, 70, 49, 52, 53,
851
+ 55, 57, 59, 61, 62, 63, 66, 69, 48, 50,
852
+ 47, 16, nil, nil, 25, nil, nil, nil, nil, 197,
853
+ 41, 14, nil, nil, 47, nil, nil, nil, nil, nil,
854
+ nil, 70, 49, 52, 53, 55, 57, 59, 61, 62,
855
+ 63, 66, 69, 48, 50, 70, 49, 52, 53, 55,
856
+ 57, 59, 61, 62, 63, 66, 69, 48, 50 ]
857
+
858
+ racc_action_check = [
859
+ 90, 90, 90, 204, 103, 90, 90, 192, 113, 119,
860
+ 213, 165, 162, 18, 18, 165, 119, 28, 204, 103,
861
+ 90, 90, 90, 90, 90, 90, 192, 64, 90, 213,
862
+ 24, 24, 90, 90, 90, 90, 24, 128, 128, 90,
863
+ 90, 45, 90, 18, 102, 90, 90, 90, 90, 90,
864
+ 90, 90, 90, 90, 90, 90, 90, 90, 90, 171,
865
+ 171, 171, 113, 113, 171, 171, 162, 162, 186, 24,
866
+ 176, 132, 186, 24, 102, 128, 128, 202, 102, 171,
867
+ 171, 171, 171, 171, 171, 150, 17, 171, 31, 176,
868
+ 132, 171, 202, 171, 171, 17, 120, 178, 171, 171,
869
+ 120, 171, 179, 117, 171, 171, 171, 171, 171, 171,
870
+ 171, 171, 171, 171, 171, 171, 171, 171, 106, 106,
871
+ 106, 51, 136, 106, 106, 179, 117, 136, 199, 199,
872
+ 156, 157, 179, 117, 156, 157, 179, 30, 106, 106,
873
+ 106, 106, 106, 106, 51, 180, 106, 182, 210, 151,
874
+ 106, 51, 106, 106, 27, 210, 149, 106, 106, 210,
875
+ 106, 200, 200, 106, 106, 106, 106, 106, 106, 106,
876
+ 106, 106, 106, 106, 106, 106, 106, 34, 34, 34,
877
+ 50, 50, 34, 34, 50, 68, 68, 147, 194, 68,
878
+ 50, 50, 130, 130, 130, 68, 68, 34, 34, 34,
879
+ 34, 34, 34, 195, 196, 34, 8, 8, 8, 34,
880
+ 104, 34, 34, 135, 209, 146, 34, 34, 160, 34,
881
+ 164, 127, 34, 34, 34, 34, 34, 34, 34, 34,
882
+ 34, 34, 34, 34, 34, 34, 209, 209, 0, 0,
883
+ 0, 0, 0, 87, 209, 209, 87, 4, 209, 154,
884
+ 2, 215, 87, 87, 10, 10, 10, 209, 209, 209,
885
+ 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
886
+ 209, 154, 88, 33, nil, 88, 15, 15, 15, 154,
887
+ 154, 88, 88, 154, 148, 148, 148, 148, 148, 148,
888
+ nil, nil, 154, 154, 154, 154, 154, 154, 154, 154,
889
+ 154, 154, 154, 154, 154, 154, 40, 40, 40, nil,
890
+ 220, 40, 40, 220, 73, 73, 73, nil, nil, 220,
891
+ 220, 131, 131, 131, nil, nil, 40, 40, 40, 40,
892
+ nil, 40, nil, nil, 40, nil, nil, nil, 40, nil,
893
+ 40, 40, nil, nil, nil, 40, 40, nil, 40, 166,
894
+ 166, 166, nil, nil, 166, 166, 65, 65, 65, 65,
895
+ 65, 65, 65, 65, 65, nil, nil, nil, nil, 166,
896
+ 166, 166, 166, nil, 166, nil, nil, 166, nil, nil,
897
+ nil, 166, nil, 166, 166, nil, 166, nil, 166, 166,
898
+ nil, 166, 20, 20, 20, nil, nil, 20, 20, 26,
899
+ 26, 26, 26, 26, 26, nil, nil, nil, nil, nil,
900
+ nil, nil, 20, 20, 20, 20, nil, 20, nil, nil,
901
+ 20, nil, nil, nil, 20, nil, 20, 20, nil, nil,
902
+ nil, 20, 20, nil, 20, 22, 22, 22, nil, nil,
903
+ 22, 22, nil, nil, nil, nil, nil, nil, nil, nil,
904
+ nil, nil, nil, nil, nil, 22, 22, 22, 22, nil,
905
+ 22, nil, nil, 22, nil, nil, nil, 22, nil, 22,
906
+ 22, nil, nil, nil, 22, 22, nil, 22, 23, 23,
907
+ 23, nil, nil, 23, 23, nil, nil, nil, nil, nil,
908
+ nil, nil, nil, nil, nil, nil, nil, nil, 23, 23,
909
+ 23, 23, nil, 23, nil, nil, 23, nil, nil, nil,
910
+ 23, nil, 23, 23, nil, nil, nil, 23, 23, nil,
911
+ 23, 13, 13, 13, nil, nil, 13, 13, nil, nil,
912
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
913
+ nil, 13, 13, 13, 13, nil, 13, nil, nil, 13,
914
+ nil, nil, nil, 13, nil, 13, 13, nil, nil, nil,
915
+ 13, 13, nil, 13, 152, 152, 152, nil, nil, 152,
916
+ 152, nil, nil, nil, nil, nil, nil, nil, nil, nil,
917
+ nil, nil, nil, nil, 152, 152, 152, 152, nil, 152,
918
+ nil, nil, 152, nil, nil, nil, 152, nil, 152, 152,
919
+ nil, 152, nil, 152, 152, nil, 152, 95, 95, 95,
920
+ nil, nil, 95, 95, nil, nil, nil, nil, nil, nil,
921
+ nil, nil, nil, nil, nil, nil, nil, 95, 95, 95,
922
+ 95, nil, 95, nil, nil, 95, nil, nil, nil, 95,
923
+ nil, 95, 95, nil, nil, nil, 95, 95, nil, 95,
924
+ 184, 184, 184, nil, nil, 184, 184, nil, nil, nil,
925
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
926
+ 184, 184, 184, 184, nil, 184, nil, nil, 184, nil,
927
+ nil, nil, 184, nil, 184, 184, nil, 184, nil, 184,
928
+ 184, nil, 184, 94, 94, 94, nil, nil, 94, 94,
929
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
930
+ nil, nil, nil, 94, 94, 94, 94, nil, 94, nil,
931
+ nil, 94, nil, nil, nil, 94, nil, 94, 94, nil,
932
+ nil, nil, 94, 94, nil, 94, 96, 96, 96, nil,
933
+ nil, 96, 96, nil, nil, nil, nil, nil, nil, nil,
934
+ nil, nil, nil, nil, nil, nil, 96, 96, 96, 96,
935
+ nil, 96, nil, nil, 96, nil, nil, nil, 96, nil,
936
+ 96, 96, nil, nil, nil, 96, 96, nil, 96, 175,
937
+ 175, 175, nil, nil, 175, 175, nil, nil, nil, nil,
938
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 175,
939
+ 175, 175, 175, nil, 175, nil, nil, 175, nil, nil,
940
+ nil, 175, nil, 175, 175, nil, nil, nil, 175, 175,
941
+ nil, 175, 99, 99, 99, nil, nil, 99, 99, nil,
942
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
943
+ nil, nil, 99, 99, 99, 99, nil, 99, nil, nil,
944
+ 99, nil, nil, nil, 99, nil, 99, 99, nil, nil,
945
+ nil, 99, 99, nil, 99, 37, 37, 37, nil, nil,
946
+ 37, 37, nil, nil, nil, nil, nil, nil, nil, nil,
947
+ nil, nil, nil, nil, nil, 37, 37, 37, 37, nil,
948
+ 37, nil, nil, 37, nil, nil, nil, 37, nil, 37,
949
+ 37, nil, nil, nil, 37, 37, nil, 37, 98, 98,
950
+ 98, nil, nil, 98, 98, nil, nil, nil, nil, nil,
951
+ nil, nil, nil, nil, nil, nil, nil, nil, 98, 98,
952
+ 98, 98, nil, 98, nil, nil, 98, nil, nil, nil,
953
+ 98, nil, 98, 98, nil, nil, nil, 98, 98, nil,
954
+ 98, 174, 174, 174, nil, nil, 174, 174, nil, nil,
955
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
956
+ nil, 174, 174, 174, 174, nil, 174, nil, nil, 174,
957
+ nil, nil, nil, 174, nil, 174, 174, nil, nil, nil,
958
+ 174, 174, nil, 174, 93, 93, 93, nil, nil, 93,
959
+ 93, nil, nil, nil, nil, nil, nil, nil, nil, nil,
960
+ nil, nil, nil, nil, 93, 93, 93, 93, nil, 93,
961
+ nil, nil, 93, nil, nil, nil, 93, nil, 93, 93,
962
+ nil, nil, nil, 93, 93, nil, 93, 91, 91, 91,
963
+ nil, nil, 91, 91, nil, nil, nil, nil, nil, nil,
964
+ nil, nil, nil, nil, nil, nil, nil, 91, 91, 91,
965
+ 91, nil, 91, nil, nil, 91, nil, nil, nil, 91,
966
+ nil, 91, 91, nil, nil, nil, 91, 91, nil, 91,
967
+ 168, 168, 168, nil, nil, 168, 168, nil, nil, nil,
968
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
969
+ 168, 168, 168, 168, nil, 168, nil, nil, 168, nil,
970
+ nil, nil, 168, nil, 168, 168, nil, nil, nil, 168,
971
+ 168, nil, 168, 173, 173, 173, nil, nil, 173, 173,
972
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
973
+ nil, nil, nil, 173, 173, 173, 173, nil, 173, nil,
974
+ nil, 173, nil, nil, nil, 173, nil, 173, 173, nil,
975
+ nil, nil, 173, 173, nil, 173, 1, 1, 1, nil,
976
+ nil, 1, 1, nil, nil, nil, nil, nil, nil, nil,
977
+ nil, nil, nil, nil, nil, nil, 1, 1, 1, 1,
978
+ nil, 1, nil, nil, 1, nil, nil, nil, 1, nil,
979
+ 1, 1, nil, nil, nil, 1, 1, nil, 1, 92,
980
+ 92, 92, nil, nil, 92, 92, nil, nil, nil, nil,
981
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 92,
982
+ 92, 92, 92, nil, 92, nil, nil, 92, nil, nil,
983
+ nil, 92, nil, 92, 92, nil, nil, nil, 92, 92,
984
+ nil, 92, 169, 169, 169, nil, nil, 169, 169, nil,
985
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
986
+ nil, nil, 169, 169, 169, 169, nil, 169, nil, nil,
987
+ 169, nil, nil, nil, 169, nil, 169, 169, nil, nil,
988
+ nil, 169, 169, nil, 169, 75, 75, 75, nil, nil,
989
+ 75, 75, nil, nil, nil, nil, nil, nil, nil, nil,
990
+ nil, nil, nil, nil, nil, 75, 75, 75, 75, nil,
991
+ 75, nil, nil, 75, nil, nil, nil, 75, nil, 75,
992
+ 75, nil, nil, nil, 75, 75, nil, 75, 76, 76,
993
+ 76, nil, nil, 76, 76, nil, nil, nil, nil, nil,
994
+ nil, nil, nil, nil, nil, nil, nil, nil, 76, 76,
995
+ 76, 76, nil, 76, nil, nil, 76, nil, nil, nil,
996
+ 76, nil, 76, 76, nil, nil, nil, 76, 76, nil,
997
+ 76, 77, 77, 77, nil, nil, 77, 77, nil, nil,
998
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
999
+ nil, 77, 77, 77, 77, nil, 77, nil, nil, 77,
1000
+ nil, nil, nil, 77, nil, 77, 77, nil, nil, nil,
1001
+ 77, 77, nil, 77, 79, 79, 79, nil, nil, 79,
1002
+ 79, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1003
+ nil, nil, nil, nil, 79, 79, 79, 79, nil, 79,
1004
+ nil, nil, 79, nil, nil, nil, 79, nil, 79, 79,
1005
+ nil, nil, nil, 79, 79, nil, 79, 80, 80, 80,
1006
+ nil, nil, 80, 80, nil, nil, nil, nil, nil, nil,
1007
+ nil, nil, nil, nil, nil, nil, nil, 80, 80, 80,
1008
+ 80, nil, 80, nil, nil, 80, nil, nil, nil, 80,
1009
+ nil, 80, 80, nil, nil, nil, 80, 80, nil, 80,
1010
+ 81, 81, 81, nil, nil, 81, 81, nil, nil, nil,
1011
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1012
+ 81, 81, 81, 81, nil, 81, nil, nil, 81, nil,
1013
+ nil, nil, 81, nil, 81, 81, nil, nil, nil, 81,
1014
+ 81, nil, 81, 82, 82, 82, nil, nil, 82, 82,
1015
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1016
+ nil, nil, nil, 82, 82, 82, 82, nil, 82, nil,
1017
+ nil, 82, nil, nil, nil, 82, nil, 82, 82, nil,
1018
+ nil, nil, 82, 82, nil, 82, 86, 86, 86, nil,
1019
+ nil, 86, 86, nil, nil, nil, nil, nil, nil, nil,
1020
+ nil, nil, nil, nil, nil, nil, 86, 86, 86, 86,
1021
+ nil, 86, nil, nil, 86, nil, nil, nil, 86, nil,
1022
+ 86, 86, nil, nil, nil, 86, 86, nil, 86, 101,
1023
+ 101, 101, nil, nil, 101, 101, nil, nil, nil, nil,
1024
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 101,
1025
+ 101, 101, 101, nil, 101, nil, nil, 101, nil, nil,
1026
+ nil, 101, nil, 101, 101, nil, nil, nil, 101, 101,
1027
+ nil, 101, 159, 159, 159, nil, nil, 159, 159, nil,
1028
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1029
+ nil, nil, 159, 159, 159, 159, 46, 159, nil, nil,
1030
+ 159, nil, nil, nil, 159, nil, 159, 159, nil, nil,
1031
+ 100, 159, 159, nil, 159, nil, nil, 46, 46, 46,
1032
+ 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
1033
+ 46, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1034
+ 100, 100, 100, 100, 100, 185, nil, nil, nil, nil,
1035
+ nil, nil, nil, nil, 185, nil, nil, nil, nil, nil,
1036
+ nil, nil, nil, nil, nil, nil, 185, 185, 185, 185,
1037
+ 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
1038
+ 5, 5, nil, nil, 5, nil, nil, nil, nil, nil,
1039
+ 5, 5, nil, nil, nil, 211, nil, nil, nil, nil,
1040
+ nil, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1041
+ 5, 5, 5, 5, 5, 211, 211, 211, 211, 211,
1042
+ 211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
1043
+ 167, 167, nil, nil, 167, nil, nil, nil, nil, 167,
1044
+ 167, 167, nil, nil, 97, nil, nil, nil, nil, nil,
1045
+ nil, 167, 167, 167, 167, 167, 167, 167, 167, 167,
1046
+ 167, 167, 167, 167, 167, 97, 97, 97, 97, 97,
1047
+ 97, 97, 97, 97, 97, 97, 97, 97, 97 ]
1048
+
1049
+ racc_action_pointer = [
1050
+ 202, 1157, 215, nil, 247, 1757, nil, nil, 168, nil,
1051
+ 216, nil, nil, 512, nil, 265, nil, 59, -1, nil,
1052
+ 383, nil, 426, 469, 28, nil, 381, 113, -7, nil,
1053
+ 112, 47, nil, 247, 168, nil, nil, 856, nil, nil,
1054
+ 297, nil, nil, nil, nil, 41, 1673, nil, nil, nil,
1055
+ 147, 110, nil, nil, nil, nil, nil, nil, nil, nil,
1056
+ nil, nil, nil, nil, -9, 302, nil, nil, 152, nil,
1057
+ nil, nil, nil, 276, nil, 1286, 1329, 1372, nil, 1415,
1058
+ 1458, 1501, 1544, nil, nil, nil, 1587, 209, 238, nil,
1059
+ -9, 1028, 1200, 985, 684, 598, 727, 1821, 899, 813,
1060
+ 1687, 1630, 33, -23, 168, nil, 109, nil, nil, nil,
1061
+ nil, nil, nil, -3, nil, nil, nil, 92, nil, -25,
1062
+ 55, nil, nil, nil, nil, nil, nil, 195, 23, nil,
1063
+ 181, 310, 44, nil, nil, 186, 80, nil, nil, nil,
1064
+ nil, nil, nil, nil, nil, nil, 165, 143, 266, 132,
1065
+ 35, 124, 555, nil, 238, nil, 89, 90, nil, 1673,
1066
+ 176, nil, 1, nil, 178, -30, 340, 1807, 1071, 1243,
1067
+ nil, 50, nil, 1114, 942, 770, 43, nil, 55, 91,
1068
+ 98, nil, 105, nil, 641, 1722, 27, nil, nil, nil,
1069
+ nil, nil, -20, nil, 146, 161, 157, nil, nil, 114,
1070
+ 147, nil, 50, nil, -24, nil, nil, nil, nil, 203,
1071
+ 114, 1772, nil, -17, nil, 209, nil, nil, nil, nil,
1072
+ 276, nil, nil, nil, nil, nil, nil, nil ]
1073
+
1074
+ racc_action_default = [
1075
+ -145, -145, -145, -4, -145, -145, -1, -12, -2, -13,
1076
+ -145, -14, -5, -145, -24, -53, -21, -145, -56, -58,
1077
+ -145, -25, -145, -145, -31, -23, -65, -145, -67, -37,
1078
+ -69, -145, -16, -71, -145, -18, -47, -145, -17, -49,
1079
+ -145, -22, -19, -15, -11, -145, -145, -96, -88, -77,
1080
+ -145, -90, -78, -79, -93, -80, -100, -81, -94, -82,
1081
+ -95, -83, -84, -85, -145, -91, -86, -8, -145, -87,
1082
+ -76, -9, -6, -3, -39, -145, -145, -145, -10, -145,
1083
+ -145, -145, -145, -40, -41, -38, -145, -145, -145, -32,
1084
+ -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
1085
+ -145, -145, -130, -145, -145, -42, -145, -43, 228, -101,
1086
+ -98, -113, -97, -115, -106, -105, -89, -145, -102, -145,
1087
+ -104, -7, -92, -99, -50, -51, -52, -72, -145, -57,
1088
+ -54, -55, -145, -29, -30, -35, -145, -33, -36, -28,
1089
+ -63, -64, -59, -61, -60, -62, -145, -145, -66, -68,
1090
+ -145, -70, -145, -131, -145, -132, -134, -133, -20, -145,
1091
+ -145, -118, -114, -117, -145, -103, -145, -145, -145, -145,
1092
+ -26, -145, -27, -145, -145, -145, -145, -137, -145, -126,
1093
+ -120, -122, -145, -141, -145, -145, -135, -48, -44, -119,
1094
+ -116, -107, -145, -109, -145, -145, -127, -112, -128, -74,
1095
+ -75, -34, -145, -73, -145, -138, -142, -124, -125, -145,
1096
+ -133, -145, -136, -145, -139, -145, -143, -108, -110, -111,
1097
+ -145, -45, -46, -123, -121, -140, -144, -129 ]
1098
+
1099
+ racc_goto_table = [
1100
+ 71, 17, 51, 74, 116, 129, 164, 128, 157, 165,
1101
+ 83, 137, 84, 85, 153, 72, 104, 182, 186, 163,
1102
+ 161, 194, 111, 8, 148, 146, 151, 105, 150, 130,
1103
+ 131, 102, 149, 73, 122, 127, 107, 136, 67, 215,
1104
+ 123, 64, 195, 109, 162, 112, 140, 141, 142, 143,
1105
+ 144, 145, 223, 10, 196, 6, 4, nil, nil, nil,
1106
+ 157, nil, nil, 112, nil, 124, 125, 126, 190, 189,
1107
+ nil, 186, 182, nil, nil, nil, nil, nil, nil, nil,
1108
+ 72, nil, 133, 134, nil, 210, 132, 102, 160, nil,
1109
+ 135, 208, 201, nil, 51, 199, 200, 51, 164, 203,
1110
+ 165, 128, nil, 102, nil, nil, nil, nil, nil, nil,
1111
+ nil, nil, nil, nil, nil, 210, nil, nil, nil, nil,
1112
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1113
+ nil, nil, 207, nil, nil, nil, nil, nil, nil, nil,
1114
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 187,
1115
+ nil, nil, 176, nil, nil, nil, nil, nil, nil, nil,
1116
+ nil, nil, 198, nil, nil, nil, 192, nil, 102, nil,
1117
+ nil, 135, nil, 202, nil, 204, nil, nil, nil, nil,
1118
+ nil, nil, nil, nil, 213, nil, nil, nil, nil, nil,
1119
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1120
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1121
+ nil, nil, nil, nil, nil, 227 ]
1122
+
1123
+ racc_goto_check = [
1124
+ 8, 10, 32, 19, 33, 24, 39, 22, 40, 41,
1125
+ 19, 16, 19, 19, 48, 5, 17, 50, 51, 40,
1126
+ 31, 43, 38, 3, 25, 20, 27, 19, 20, 21,
1127
+ 21, 32, 26, 3, 34, 28, 18, 14, 7, 43,
1128
+ 38, 6, 44, 32, 45, 8, 23, 23, 23, 23,
1129
+ 23, 23, 47, 4, 49, 2, 1, nil, nil, nil,
1130
+ 40, nil, nil, 8, nil, 19, 19, 19, 40, 31,
1131
+ nil, 51, 50, nil, nil, nil, nil, nil, nil, nil,
1132
+ 5, nil, 8, 8, nil, 40, 10, 32, 17, nil,
1133
+ 10, 48, 16, nil, 32, 22, 22, 32, 39, 24,
1134
+ 41, 22, nil, 32, nil, nil, nil, nil, nil, nil,
1135
+ nil, nil, nil, nil, nil, 40, nil, nil, nil, nil,
1136
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1137
+ nil, nil, 33, nil, nil, nil, nil, nil, nil, nil,
1138
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 19,
1139
+ nil, nil, 10, nil, nil, nil, nil, nil, nil, nil,
1140
+ nil, nil, 8, nil, nil, nil, 10, nil, 32, nil,
1141
+ nil, 10, nil, 10, nil, 10, nil, nil, nil, nil,
1142
+ nil, nil, nil, nil, 10, nil, nil, nil, nil, nil,
1143
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1144
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
1145
+ nil, nil, nil, nil, nil, 8 ]
1146
+
1147
+ racc_goto_pointer = [
1148
+ nil, 56, 55, 23, 53, 7, 36, 33, -5, nil,
1149
+ 0, nil, nil, nil, -53, nil, -79, -18, -4, -10,
1150
+ -72, -52, -73, -45, -75, -74, -67, -75, -44, nil,
1151
+ nil, -93, -3, -47, -31, nil, nil, nil, -28, -111,
1152
+ -94, -110, nil, -146, -125, -69, nil, -159, -88, -113,
1153
+ -137, -139 ]
1154
+
1155
+ racc_goto_default = [
1156
+ nil, nil, nil, nil, nil, 12, nil, 147, 43, 1,
1157
+ 103, 2, 21, 24, nil, 29, nil, 138, 36, 39,
1158
+ nil, 15, 18, 19, nil, 26, 28, 30, 33, 65,
1159
+ 68, 46, 179, nil, 54, 56, 58, 60, nil, 118,
1160
+ 119, 120, 114, 178, nil, nil, 180, 181, nil, nil,
1161
+ 155, 156 ]
1162
+
1163
+ racc_token_table = {
1164
+ false => 0,
1165
+ Object.new => 1,
1166
+ "." => 2,
1167
+ "->" => 3,
1168
+ :UADDRS => 4,
1169
+ :UDEREF => 5,
1170
+ :UPLUS => 6,
1171
+ :UMINUS => 7,
1172
+ "@pre" => 8,
1173
+ "not" => 9,
1174
+ "sizeof" => 10,
1175
+ "*" => 11,
1176
+ "/" => 12,
1177
+ "%" => 13,
1178
+ "+" => 14,
1179
+ "-" => 15,
1180
+ :RANGE => 16,
1181
+ :IN_RANGE => 17,
1182
+ "<" => 18,
1183
+ "<=" => 19,
1184
+ ">" => 20,
1185
+ ">=" => 21,
1186
+ "==" => 22,
1187
+ "!=" => 23,
1188
+ "and" => 24,
1189
+ "or" => 25,
1190
+ "xor" => 26,
1191
+ "implies" => 27,
1192
+ :POINTER => 28,
1193
+ :INTEGER => 29,
1194
+ :FLOATING => 30,
1195
+ :CHARACTER => 31,
1196
+ :STRING => 32,
1197
+ :TYPEDEF_NAME => 33,
1198
+ :IDENTIFIER => 34,
1199
+ :LABEL => 35,
1200
+ :END_OF_STATEMENT => 36,
1201
+ "context" => 37,
1202
+ "inv" => 38,
1203
+ "pre" => 39,
1204
+ "post" => 40,
1205
+ "(" => 41,
1206
+ ")" => 42,
1207
+ "return" => 43,
1208
+ "in" => 44,
1209
+ "[" => 45,
1210
+ "]" => 46,
1211
+ "," => 47,
1212
+ "&" => 48,
1213
+ "forall" => 49,
1214
+ "|" => 50,
1215
+ "exists" => 51,
1216
+ ".." => 52,
1217
+ "..." => 53,
1218
+ "void" => 54,
1219
+ "char" => 55,
1220
+ "short" => 56,
1221
+ "int" => 57,
1222
+ "long" => 58,
1223
+ "float" => 59,
1224
+ "double" => 60,
1225
+ "signed" => 61,
1226
+ "unsigned" => 62,
1227
+ "struct" => 63,
1228
+ "union" => 64,
1229
+ "const" => 65,
1230
+ "volatile" => 66,
1231
+ "enum" => 67 }
1232
+
1233
+ racc_use_result_var = true
1234
+
1235
+ racc_nt_base = 68
1236
+
1237
+ Racc_arg = [
1238
+ racc_action_table,
1239
+ racc_action_check,
1240
+ racc_action_default,
1241
+ racc_action_pointer,
1242
+ racc_goto_table,
1243
+ racc_goto_check,
1244
+ racc_goto_default,
1245
+ racc_goto_pointer,
1246
+ racc_nt_base,
1247
+ racc_reduce_table,
1248
+ racc_token_table,
1249
+ racc_shift_n,
1250
+ racc_reduce_n,
1251
+ racc_use_result_var ]
1252
+
1253
+ Racc_token_to_s_table = [
1254
+ '$end',
1255
+ 'error',
1256
+ '"."',
1257
+ '"->"',
1258
+ 'UADDRS',
1259
+ 'UDEREF',
1260
+ 'UPLUS',
1261
+ 'UMINUS',
1262
+ '"@pre"',
1263
+ '"not"',
1264
+ '"sizeof"',
1265
+ '"*"',
1266
+ '"/"',
1267
+ '"%"',
1268
+ '"+"',
1269
+ '"-"',
1270
+ 'RANGE',
1271
+ 'IN_RANGE',
1272
+ '"<"',
1273
+ '"<="',
1274
+ '">"',
1275
+ '">="',
1276
+ '"=="',
1277
+ '"!="',
1278
+ '"and"',
1279
+ '"or"',
1280
+ '"xor"',
1281
+ '"implies"',
1282
+ 'POINTER',
1283
+ 'INTEGER',
1284
+ 'FLOATING',
1285
+ 'CHARACTER',
1286
+ 'STRING',
1287
+ 'TYPEDEF_NAME',
1288
+ 'IDENTIFIER',
1289
+ 'LABEL',
1290
+ 'END_OF_STATEMENT',
1291
+ '"context"',
1292
+ '"inv"',
1293
+ '"pre"',
1294
+ '"post"',
1295
+ '"("',
1296
+ '")"',
1297
+ '"return"',
1298
+ '"in"',
1299
+ '"["',
1300
+ '"]"',
1301
+ '","',
1302
+ '"&"',
1303
+ '"forall"',
1304
+ '"|"',
1305
+ '"exists"',
1306
+ '".."',
1307
+ '"..."',
1308
+ '"void"',
1309
+ '"char"',
1310
+ '"short"',
1311
+ '"int"',
1312
+ '"long"',
1313
+ '"float"',
1314
+ '"double"',
1315
+ '"signed"',
1316
+ '"unsigned"',
1317
+ '"struct"',
1318
+ '"union"',
1319
+ '"const"',
1320
+ '"volatile"',
1321
+ '"enum"',
1322
+ '$start',
1323
+ 'target',
1324
+ 'statement',
1325
+ 'conditions',
1326
+ 'context',
1327
+ 'dbc_condition',
1328
+ 'context_name',
1329
+ 'declaration',
1330
+ 'identifier',
1331
+ 'dbc_condition_start',
1332
+ 'expression',
1333
+ 'dbc_steriotype',
1334
+ 'primary_expression',
1335
+ 'postfix_expression',
1336
+ 'argument_expression_list',
1337
+ 'at_pre_expression',
1338
+ 'argument_expression',
1339
+ 'type_name',
1340
+ 'unary_expression',
1341
+ 'cast_expression',
1342
+ 'iterator_declaration',
1343
+ 'multiplicative_expression',
1344
+ 'additive_expression',
1345
+ 'in_expression',
1346
+ 'range',
1347
+ 'relational_expression',
1348
+ 'and_expression',
1349
+ 'or_expression',
1350
+ 'xor_expression',
1351
+ 'primitive_type',
1352
+ 'struct_or_union',
1353
+ 'type_qualifier',
1354
+ 'specifier_qualifier_list',
1355
+ 'declarator',
1356
+ 'primitive_type_specifier',
1357
+ 'type_specifier',
1358
+ 'struct_or_union_specifier',
1359
+ 'enum_specifier',
1360
+ 'struct_or_union_or_enum_name',
1361
+ 'declarator_sequence',
1362
+ 'pointer',
1363
+ 'direct_declarator',
1364
+ 'declarator_identifier',
1365
+ 'parameter_type_list',
1366
+ 'identifier_list',
1367
+ 'type_qualifier_list',
1368
+ 'parameter_list',
1369
+ 'parameter_declaration',
1370
+ 'abstract_declarator',
1371
+ 'identifier_sequence',
1372
+ 'abstract_declarator_sequence',
1373
+ 'direct_abstract_declarator']
1374
+
1375
+ Racc_debug_parser = false
1376
+
1377
+ ##### racc system variables end #####
1378
+
1379
+ # reduce 0 omitted
1380
+
1381
+ # reduce 1 omitted
1382
+
1383
+ # reduce 2 omitted
1384
+
1385
+ module_eval <<'.,.,', 'src/ocl.y', 43
1386
+ def _reduce_3( val, _values, result )
1387
+ result = val[1]
1388
+ result
1389
+ end
1390
+ .,.,
1391
+
1392
+ module_eval <<'.,.,', 'src/ocl.y', 44
1393
+ def _reduce_4( val, _values, result )
1394
+ result = []
1395
+ result
1396
+ end
1397
+ .,.,
1398
+
1399
+ module_eval <<'.,.,', 'src/ocl.y', 48
1400
+ def _reduce_5( val, _values, result )
1401
+ result = val[0,1]
1402
+ result
1403
+ end
1404
+ .,.,
1405
+
1406
+ module_eval <<'.,.,', 'src/ocl.y', 49
1407
+ def _reduce_6( val, _values, result )
1408
+ val[0] << val[1]
1409
+ result
1410
+ end
1411
+ .,.,
1412
+
1413
+ module_eval <<'.,.,', 'src/ocl.y', 53
1414
+ def _reduce_7( val, _values, result )
1415
+ result = val[1]; self.context = val[1]
1416
+ result
1417
+ end
1418
+ .,.,
1419
+
1420
+ # reduce 8 omitted
1421
+
1422
+ # reduce 9 omitted
1423
+
1424
+ module_eval <<'.,.,', 'src/ocl.y', 63
1425
+ def _reduce_10( val, _values, result )
1426
+ val[0].condition = val[1]; result = val[0]
1427
+ result
1428
+ end
1429
+ .,.,
1430
+
1431
+ module_eval <<'.,.,', 'src/ocl.y', 67
1432
+ def _reduce_11( val, _values, result )
1433
+ result = Condition.new(val[0], val[1])
1434
+ result
1435
+ end
1436
+ .,.,
1437
+
1438
+ # reduce 12 omitted
1439
+
1440
+ # reduce 13 omitted
1441
+
1442
+ # reduce 14 omitted
1443
+
1444
+ # reduce 15 omitted
1445
+
1446
+ # reduce 16 omitted
1447
+
1448
+ # reduce 17 omitted
1449
+
1450
+ # reduce 18 omitted
1451
+
1452
+ # reduce 19 omitted
1453
+
1454
+ module_eval <<'.,.,', 'src/ocl.y', 82
1455
+ def _reduce_20( val, _values, result )
1456
+ result = Paren.new(val[1])
1457
+ result
1458
+ end
1459
+ .,.,
1460
+
1461
+ # reduce 21 omitted
1462
+
1463
+ module_eval <<'.,.,', 'src/ocl.y', 87
1464
+ def _reduce_22( val, _values, result )
1465
+ result = 'ocl__ret_val'
1466
+ result
1467
+ end
1468
+ .,.,
1469
+
1470
+ # reduce 23 omitted
1471
+
1472
+ # reduce 24 omitted
1473
+
1474
+ # reduce 25 omitted
1475
+
1476
+ module_eval <<'.,.,', 'src/ocl.y', 101
1477
+ def _reduce_26( val, _values, result )
1478
+ result = val[0,4].join
1479
+ result
1480
+ end
1481
+ .,.,
1482
+
1483
+ module_eval <<'.,.,', 'src/ocl.y', 102
1484
+ def _reduce_27( val, _values, result )
1485
+ result = val[0,4].join
1486
+ result
1487
+ end
1488
+ .,.,
1489
+
1490
+ module_eval <<'.,.,', 'src/ocl.y', 103
1491
+ def _reduce_28( val, _values, result )
1492
+ result = val[0,3].join
1493
+ result
1494
+ end
1495
+ .,.,
1496
+
1497
+ module_eval <<'.,.,', 'src/ocl.y', 104
1498
+ def _reduce_29( val, _values, result )
1499
+ result = val[0,3].join
1500
+ result
1501
+ end
1502
+ .,.,
1503
+
1504
+ module_eval <<'.,.,', 'src/ocl.y', 105
1505
+ def _reduce_30( val, _values, result )
1506
+ result = val[0,3].join
1507
+ result
1508
+ end
1509
+ .,.,
1510
+
1511
+ # reduce 31 omitted
1512
+
1513
+ module_eval <<'.,.,', 'src/ocl.y', 110
1514
+ def _reduce_32( val, _values, result )
1515
+ result = add_old(val[0].to_s)
1516
+ result
1517
+ end
1518
+ .,.,
1519
+
1520
+ # reduce 33 omitted
1521
+
1522
+ module_eval <<'.,.,', 'src/ocl.y', 116
1523
+ def _reduce_34( val, _values, result )
1524
+ result = val[0,3].join(' ')
1525
+ result
1526
+ end
1527
+ .,.,
1528
+
1529
+ # reduce 35 omitted
1530
+
1531
+ # reduce 36 omitted
1532
+
1533
+ # reduce 37 omitted
1534
+
1535
+ module_eval <<'.,.,', 'src/ocl.y', 127
1536
+ def _reduce_38( val, _values, result )
1537
+ result = UAddrs.new(val[1])
1538
+ result
1539
+ end
1540
+ .,.,
1541
+
1542
+ module_eval <<'.,.,', 'src/ocl.y', 128
1543
+ def _reduce_39( val, _values, result )
1544
+ result = UDeref.new(val[1])
1545
+ result
1546
+ end
1547
+ .,.,
1548
+
1549
+ module_eval <<'.,.,', 'src/ocl.y', 129
1550
+ def _reduce_40( val, _values, result )
1551
+ result = UPlus.new(val[1])
1552
+ result
1553
+ end
1554
+ .,.,
1555
+
1556
+ module_eval <<'.,.,', 'src/ocl.y', 130
1557
+ def _reduce_41( val, _values, result )
1558
+ result = UMinus.new(val[1])
1559
+ result
1560
+ end
1561
+ .,.,
1562
+
1563
+ module_eval <<'.,.,', 'src/ocl.y', 131
1564
+ def _reduce_42( val, _values, result )
1565
+ result = Not.new(val[1])
1566
+ result
1567
+ end
1568
+ .,.,
1569
+
1570
+ module_eval <<'.,.,', 'src/ocl.y', 132
1571
+ def _reduce_43( val, _values, result )
1572
+ result = SizeOf.new(val[1])
1573
+ result
1574
+ end
1575
+ .,.,
1576
+
1577
+ module_eval <<'.,.,', 'src/ocl.y', 133
1578
+ def _reduce_44( val, _values, result )
1579
+ result = val[0,4].join
1580
+ result
1581
+ end
1582
+ .,.,
1583
+
1584
+ module_eval <<'.,.,', 'src/ocl.y', 135
1585
+ def _reduce_45( val, _values, result )
1586
+ result = Forall.new(val[2], val[4])
1587
+ result
1588
+ end
1589
+ .,.,
1590
+
1591
+ module_eval <<'.,.,', 'src/ocl.y', 137
1592
+ def _reduce_46( val, _values, result )
1593
+ result = Exists.new(val[2], val[4])
1594
+ result
1595
+ end
1596
+ .,.,
1597
+
1598
+ # reduce 47 omitted
1599
+
1600
+ module_eval <<'.,.,', 'src/ocl.y', 142
1601
+ def _reduce_48( val, _values, result )
1602
+ result = val[0,4].join(' ')
1603
+ result
1604
+ end
1605
+ .,.,
1606
+
1607
+ # reduce 49 omitted
1608
+
1609
+ module_eval <<'.,.,', 'src/ocl.y', 147
1610
+ def _reduce_50( val, _values, result )
1611
+ result = val[0,3].join(' ')
1612
+ result
1613
+ end
1614
+ .,.,
1615
+
1616
+ module_eval <<'.,.,', 'src/ocl.y', 148
1617
+ def _reduce_51( val, _values, result )
1618
+ result = val[0,3].join(' ')
1619
+ result
1620
+ end
1621
+ .,.,
1622
+
1623
+ module_eval <<'.,.,', 'src/ocl.y', 149
1624
+ def _reduce_52( val, _values, result )
1625
+ result = val[0,3].join(' ')
1626
+ result
1627
+ end
1628
+ .,.,
1629
+
1630
+ # reduce 53 omitted
1631
+
1632
+ module_eval <<'.,.,', 'src/ocl.y', 154
1633
+ def _reduce_54( val, _values, result )
1634
+ result = val[0,3].join(' ')
1635
+ result
1636
+ end
1637
+ .,.,
1638
+
1639
+ module_eval <<'.,.,', 'src/ocl.y', 155
1640
+ def _reduce_55( val, _values, result )
1641
+ result = val[0,3].join(' ')
1642
+ result
1643
+ end
1644
+ .,.,
1645
+
1646
+ # reduce 56 omitted
1647
+
1648
+ module_eval <<'.,.,', 'src/ocl.y', 161
1649
+ def _reduce_57( val, _values, result )
1650
+ result = val[2].test_expression(val[0])
1651
+ result
1652
+ end
1653
+ .,.,
1654
+
1655
+ # reduce 58 omitted
1656
+
1657
+ module_eval <<'.,.,', 'src/ocl.y', 166
1658
+ def _reduce_59( val, _values, result )
1659
+ result = val[0,3].join(' ')
1660
+ result
1661
+ end
1662
+ .,.,
1663
+
1664
+ module_eval <<'.,.,', 'src/ocl.y', 167
1665
+ def _reduce_60( val, _values, result )
1666
+ result = val[0,3].join(' ')
1667
+ result
1668
+ end
1669
+ .,.,
1670
+
1671
+ module_eval <<'.,.,', 'src/ocl.y', 168
1672
+ def _reduce_61( val, _values, result )
1673
+ result = val[0,3].join(' ')
1674
+ result
1675
+ end
1676
+ .,.,
1677
+
1678
+ module_eval <<'.,.,', 'src/ocl.y', 169
1679
+ def _reduce_62( val, _values, result )
1680
+ result = val[0,3].join(' ')
1681
+ result
1682
+ end
1683
+ .,.,
1684
+
1685
+ module_eval <<'.,.,', 'src/ocl.y', 170
1686
+ def _reduce_63( val, _values, result )
1687
+ result = val[0,3].join(' ')
1688
+ result
1689
+ end
1690
+ .,.,
1691
+
1692
+ module_eval <<'.,.,', 'src/ocl.y', 171
1693
+ def _reduce_64( val, _values, result )
1694
+ result = val[0,3].join(' ')
1695
+ result
1696
+ end
1697
+ .,.,
1698
+
1699
+ # reduce 65 omitted
1700
+
1701
+ module_eval <<'.,.,', 'src/ocl.y', 176
1702
+ def _reduce_66( val, _values, result )
1703
+ result = And.new(val[0], val[2])
1704
+ result
1705
+ end
1706
+ .,.,
1707
+
1708
+ # reduce 67 omitted
1709
+
1710
+ module_eval <<'.,.,', 'src/ocl.y', 181
1711
+ def _reduce_68( val, _values, result )
1712
+ result = Or.new(val[0], val[2])
1713
+ result
1714
+ end
1715
+ .,.,
1716
+
1717
+ # reduce 69 omitted
1718
+
1719
+ module_eval <<'.,.,', 'src/ocl.y', 186
1720
+ def _reduce_70( val, _values, result )
1721
+ result = XOr.new(val[0], val[2])
1722
+ result
1723
+ end
1724
+ .,.,
1725
+
1726
+ # reduce 71 omitted
1727
+
1728
+ module_eval <<'.,.,', 'src/ocl.y', 191
1729
+ def _reduce_72( val, _values, result )
1730
+ result = Implies.new(val[0], val[2])
1731
+ result
1732
+ end
1733
+ .,.,
1734
+
1735
+ module_eval <<'.,.,', 'src/ocl.y', 195
1736
+ def _reduce_73( val, _values, result )
1737
+ result = IteratorRange.new(val[0], val[2])
1738
+ result
1739
+ end
1740
+ .,.,
1741
+
1742
+ module_eval <<'.,.,', 'src/ocl.y', 201
1743
+ def _reduce_74( val, _values, result )
1744
+ result = Range.new(val[0], val[2], false)
1745
+ result
1746
+ end
1747
+ .,.,
1748
+
1749
+ module_eval <<'.,.,', 'src/ocl.y', 203
1750
+ def _reduce_75( val, _values, result )
1751
+ result = Range.new(val[0], val[2], true)
1752
+ result
1753
+ end
1754
+ .,.,
1755
+
1756
+ # reduce 76 omitted
1757
+
1758
+ # reduce 77 omitted
1759
+
1760
+ # reduce 78 omitted
1761
+
1762
+ # reduce 79 omitted
1763
+
1764
+ # reduce 80 omitted
1765
+
1766
+ # reduce 81 omitted
1767
+
1768
+ # reduce 82 omitted
1769
+
1770
+ # reduce 83 omitted
1771
+
1772
+ # reduce 84 omitted
1773
+
1774
+ # reduce 85 omitted
1775
+
1776
+ # reduce 86 omitted
1777
+
1778
+ # reduce 87 omitted
1779
+
1780
+ # reduce 88 omitted
1781
+
1782
+ module_eval <<'.,.,', 'src/ocl.y', 233
1783
+ def _reduce_89( val, _values, result )
1784
+ result = val[1]; result.base_type = val[0]
1785
+ result
1786
+ end
1787
+ .,.,
1788
+
1789
+ module_eval <<'.,.,', 'src/ocl.y', 235
1790
+ def _reduce_90( val, _values, result )
1791
+ result = CType::Type.new(); result.base_type = val[0]
1792
+ result
1793
+ end
1794
+ .,.,
1795
+
1796
+ module_eval <<'.,.,', 'src/ocl.y', 240
1797
+ def _reduce_91( val, _values, result )
1798
+ result = CType::Primitive.new(val[0])
1799
+ result
1800
+ end
1801
+ .,.,
1802
+
1803
+ module_eval <<'.,.,', 'src/ocl.y', 241
1804
+ def _reduce_92( val, _values, result )
1805
+ result = val[1].insert(val[0])
1806
+ result
1807
+ end
1808
+ .,.,
1809
+
1810
+ module_eval <<'.,.,', 'src/ocl.y', 246
1811
+ def _reduce_93( val, _values, result )
1812
+ result = CType::Base.new(val[0])
1813
+ result
1814
+ end
1815
+ .,.,
1816
+
1817
+ module_eval <<'.,.,', 'src/ocl.y', 247
1818
+ def _reduce_94( val, _values, result )
1819
+ result = CType::Base.new(val[0])
1820
+ result
1821
+ end
1822
+ .,.,
1823
+
1824
+ module_eval <<'.,.,', 'src/ocl.y', 248
1825
+ def _reduce_95( val, _values, result )
1826
+ result = CType::Base.new(val[0])
1827
+ result
1828
+ end
1829
+ .,.,
1830
+
1831
+ module_eval <<'.,.,', 'src/ocl.y', 249
1832
+ def _reduce_96( val, _values, result )
1833
+ result = CType::Base.new(val[0])
1834
+ result
1835
+ end
1836
+ .,.,
1837
+
1838
+ # reduce 97 omitted
1839
+
1840
+ # reduce 98 omitted
1841
+
1842
+ module_eval <<'.,.,', 'src/ocl.y', 259
1843
+ def _reduce_99( val, _values, result )
1844
+ result = CType::StructUnion.get(val[0], val[1])
1845
+ result
1846
+ end
1847
+ .,.,
1848
+
1849
+ # reduce 100 omitted
1850
+
1851
+ module_eval <<'.,.,', 'src/ocl.y', 266
1852
+ def _reduce_101( val, _values, result )
1853
+ result = val[1]; result.add_qualifier(val[0])
1854
+ result
1855
+ end
1856
+ .,.,
1857
+
1858
+ module_eval <<'.,.,', 'src/ocl.y', 270
1859
+ def _reduce_102( val, _values, result )
1860
+ result = val[0].first
1861
+ result
1862
+ end
1863
+ .,.,
1864
+
1865
+ module_eval <<'.,.,', 'src/ocl.y', 285
1866
+ def _reduce_103( val, _values, result )
1867
+ # the base type of the last element in the declarator sequence
1868
+ # is not a pointer. that pointer points to a new type which is
1869
+ # appended to the end of the declarator sequence
1870
+ result = val[1]
1871
+ result.last.base_type = val[0]
1872
+ result << val[0].base_type = CType::Type.new()
1873
+ result
1874
+ end
1875
+ .,.,
1876
+
1877
+ # reduce 104 omitted
1878
+
1879
+ # reduce 105 omitted
1880
+
1881
+ module_eval <<'.,.,', 'src/ocl.y', 295
1882
+ def _reduce_106( val, _values, result )
1883
+ result = [CType::Type.new(val[0])]
1884
+ result
1885
+ end
1886
+ .,.,
1887
+
1888
+ module_eval <<'.,.,', 'src/ocl.y', 297
1889
+ def _reduce_107( val, _values, result )
1890
+ result = val[1]
1891
+ result
1892
+ end
1893
+ .,.,
1894
+
1895
+ module_eval <<'.,.,', 'src/ocl.y', 299
1896
+ def _reduce_108( val, _values, result )
1897
+ result = val[0]; result.last.dimensions << val[2]
1898
+ result
1899
+ end
1900
+ .,.,
1901
+
1902
+ module_eval <<'.,.,', 'src/ocl.y', 301
1903
+ def _reduce_109( val, _values, result )
1904
+ result = val[0]; result.last.dimensions << nil
1905
+ result
1906
+ end
1907
+ .,.,
1908
+
1909
+ module_eval <<'.,.,', 'src/ocl.y', 303
1910
+ def _reduce_110( val, _values, result )
1911
+ result = val[0]; result.last.parameters = val[2]
1912
+ result
1913
+ end
1914
+ .,.,
1915
+
1916
+ module_eval <<'.,.,', 'src/ocl.y', 305
1917
+ def _reduce_111( val, _values, result )
1918
+ result = val[0]; result.last.parameters = val[2]
1919
+ result
1920
+ end
1921
+ .,.,
1922
+
1923
+ module_eval <<'.,.,', 'src/ocl.y', 307
1924
+ def _reduce_112( val, _values, result )
1925
+ result = val[0]; result.last.parameters = nil
1926
+ result
1927
+ end
1928
+ .,.,
1929
+
1930
+ module_eval <<'.,.,', 'src/ocl.y', 312
1931
+ def _reduce_113( val, _values, result )
1932
+ result = CType::Enum[val[1]]
1933
+ result
1934
+ end
1935
+ .,.,
1936
+
1937
+ module_eval <<'.,.,', 'src/ocl.y', 317
1938
+ def _reduce_114( val, _values, result )
1939
+ result = CType::Pointer.new(val[1])
1940
+ result
1941
+ end
1942
+ .,.,
1943
+
1944
+ module_eval <<'.,.,', 'src/ocl.y', 319
1945
+ def _reduce_115( val, _values, result )
1946
+ result = CType::Pointer.new()
1947
+ result
1948
+ end
1949
+ .,.,
1950
+
1951
+ module_eval <<'.,.,', 'src/ocl.y', 325
1952
+ def _reduce_116( val, _values, result )
1953
+ result = val[2]
1954
+ result.base_type = CType::Pointer.new(val[1])
1955
+ result
1956
+ end
1957
+ .,.,
1958
+
1959
+ module_eval <<'.,.,', 'src/ocl.y', 330
1960
+ def _reduce_117( val, _values, result )
1961
+ result = val[1]
1962
+ result.base_type = CType::Pointer.new()
1963
+ result
1964
+ end
1965
+ .,.,
1966
+
1967
+ module_eval <<'.,.,', 'src/ocl.y', 334
1968
+ def _reduce_118( val, _values, result )
1969
+ result = val[0,1]
1970
+ result
1971
+ end
1972
+ .,.,
1973
+
1974
+ module_eval <<'.,.,', 'src/ocl.y', 335
1975
+ def _reduce_119( val, _values, result )
1976
+ result = val[0] << val[1]
1977
+ result
1978
+ end
1979
+ .,.,
1980
+
1981
+ module_eval <<'.,.,', 'src/ocl.y', 340
1982
+ def _reduce_120( val, _values, result )
1983
+ result = val[0].finalize
1984
+ result
1985
+ end
1986
+ .,.,
1987
+
1988
+ module_eval <<'.,.,', 'src/ocl.y', 341
1989
+ def _reduce_121( val, _values, result )
1990
+ result = val[0].with_ellipses
1991
+ result
1992
+ end
1993
+ .,.,
1994
+
1995
+ module_eval <<'.,.,', 'src/ocl.y', 346
1996
+ def _reduce_122( val, _values, result )
1997
+ result = CType::List.new << val[0]
1998
+ result
1999
+ end
2000
+ .,.,
2001
+
2002
+ module_eval <<'.,.,', 'src/ocl.y', 347
2003
+ def _reduce_123( val, _values, result )
2004
+ result = val[0] << val[2]
2005
+ result
2006
+ end
2007
+ .,.,
2008
+
2009
+ module_eval <<'.,.,', 'src/ocl.y', 353
2010
+ def _reduce_124( val, _values, result )
2011
+ result = val[1]; result.base_type = val[0]
2012
+ result
2013
+ end
2014
+ .,.,
2015
+
2016
+ module_eval <<'.,.,', 'src/ocl.y', 355
2017
+ def _reduce_125( val, _values, result )
2018
+ result = val[1]; result.base_type = val[0]
2019
+ result
2020
+ end
2021
+ .,.,
2022
+
2023
+ module_eval <<'.,.,', 'src/ocl.y', 357
2024
+ def _reduce_126( val, _values, result )
2025
+ result = CType::Type.new(); result.base_type = val[0]
2026
+ result
2027
+ end
2028
+ .,.,
2029
+
2030
+ module_eval <<'.,.,', 'src/ocl.y', 366
2031
+ def _reduce_127( val, _values, result )
2032
+ result = val[0].finalize
2033
+ result
2034
+ end
2035
+ .,.,
2036
+
2037
+ module_eval <<'.,.,', 'src/ocl.y', 371
2038
+ def _reduce_128( val, _values, result )
2039
+ result = CType::List.new << val[0]
2040
+ result
2041
+ end
2042
+ .,.,
2043
+
2044
+ module_eval <<'.,.,', 'src/ocl.y', 372
2045
+ def _reduce_129( val, _values, result )
2046
+ result = val[0] << val[2]
2047
+ result
2048
+ end
2049
+ .,.,
2050
+
2051
+ module_eval <<'.,.,', 'src/ocl.y', 377
2052
+ def _reduce_130( val, _values, result )
2053
+ result = CType::Type.new(); result.base_type = val[0]
2054
+ result
2055
+ end
2056
+ .,.,
2057
+
2058
+ module_eval <<'.,.,', 'src/ocl.y', 379
2059
+ def _reduce_131( val, _values, result )
2060
+ result = val[1]; result.base_type = val[0]
2061
+ result
2062
+ end
2063
+ .,.,
2064
+
2065
+ module_eval <<'.,.,', 'src/ocl.y', 384
2066
+ def _reduce_132( val, _values, result )
2067
+ result = val[0].first
2068
+ result
2069
+ end
2070
+ .,.,
2071
+
2072
+ module_eval <<'.,.,', 'src/ocl.y', 397
2073
+ def _reduce_133( val, _values, result )
2074
+ # create new type, example: int (*)(const char *, const char *)
2075
+ result = [CType::Type.new(), CType::Type.new()]
2076
+ result.first.base_type = val[0] # pointer to a
2077
+ val[0].base_type = result.last # yet to be determined type
2078
+ result
2079
+ end
2080
+ .,.,
2081
+
2082
+ # reduce 134 omitted
2083
+
2084
+ module_eval <<'.,.,', 'src/ocl.y', 405
2085
+ def _reduce_135( val, _values, result )
2086
+ # see direct_declarator for more info
2087
+ result = val[1]
2088
+ result.last.base_type = val[0]
2089
+ result << val[0].base_type = CType::Type.new()
2090
+ result
2091
+ end
2092
+ .,.,
2093
+
2094
+ # reduce 136 omitted
2095
+
2096
+ module_eval <<'.,.,', 'src/ocl.y', 415
2097
+ def _reduce_137( val, _values, result )
2098
+ # create new type
2099
+ result = [CType::Type.new()]
2100
+ result.last.dimensions << nil
2101
+ result
2102
+ end
2103
+ .,.,
2104
+
2105
+ module_eval <<'.,.,', 'src/ocl.y', 421
2106
+ def _reduce_138( val, _values, result )
2107
+ # create new type
2108
+ result = [CType::Type.new()]
2109
+ result.last.dimensions << val[1]
2110
+ result
2111
+ end
2112
+ .,.,
2113
+
2114
+ module_eval <<'.,.,', 'src/ocl.y', 422
2115
+ def _reduce_139( val, _values, result )
2116
+ result = val[0]; result.last.dimensions << nil
2117
+ result
2118
+ end
2119
+ .,.,
2120
+
2121
+ module_eval <<'.,.,', 'src/ocl.y', 424
2122
+ def _reduce_140( val, _values, result )
2123
+ result = val[0]; result.last.dimensions << val[2]
2124
+ result
2125
+ end
2126
+ .,.,
2127
+
2128
+ module_eval <<'.,.,', 'src/ocl.y', 431
2129
+ def _reduce_141( val, _values, result )
2130
+ # create new type
2131
+ result = [CType::Type.new()]
2132
+ result.last.parameters = nil
2133
+ result
2134
+ end
2135
+ .,.,
2136
+
2137
+ module_eval <<'.,.,', 'src/ocl.y', 437
2138
+ def _reduce_142( val, _values, result )
2139
+ # create new type
2140
+ result = [CType::Type.new()]
2141
+ result.last.parameters = val[2]
2142
+ result
2143
+ end
2144
+ .,.,
2145
+
2146
+ module_eval <<'.,.,', 'src/ocl.y', 438
2147
+ def _reduce_143( val, _values, result )
2148
+ result = val[0]; result.last.parameters = nil
2149
+ result
2150
+ end
2151
+ .,.,
2152
+
2153
+ module_eval <<'.,.,', 'src/ocl.y', 440
2154
+ def _reduce_144( val, _values, result )
2155
+ result = val[0]; result.last.parameters = val[2]
2156
+ result
2157
+ end
2158
+ .,.,
2159
+
2160
+ def _reduce_none( val, _values, result )
2161
+ result
2162
+ end
2163
+
2164
+ end # class Parser
2165
+
2166
+ end # module OCL