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