treetop 1.1.4 → 1.2.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/README +1 -1
- data/Rakefile +3 -2
- data/doc/contributing_and_planned_features.markdown +1 -1
- data/doc/using_in_ruby.markdown +2 -2
- data/examples/lambda_calculus/arithmetic.rb +551 -0
- data/examples/lambda_calculus/arithmetic_test.rb +1 -1
- data/examples/lambda_calculus/lambda_calculus.rb +39 -72
- data/examples/lambda_calculus/lambda_calculus_test.rb +2 -2
- data/examples/lambda_calculus/test_helper.rb +3 -3
- data/lib/treetop.rb +3 -0
- data/lib/treetop/bootstrap_gen_1_metagrammar.rb +22 -14
- data/lib/treetop/compiler.rb +1 -2
- data/lib/treetop/compiler/grammar_compiler.rb +12 -5
- data/lib/treetop/compiler/metagrammar.rb +931 -558
- data/lib/treetop/compiler/metagrammar.treetop +26 -6
- data/lib/treetop/compiler/node_classes/anything_symbol.rb +10 -2
- data/lib/treetop/compiler/node_classes/atomic_expression.rb +4 -0
- data/lib/treetop/compiler/node_classes/character_class.rb +10 -1
- data/lib/treetop/compiler/node_classes/choice.rb +2 -4
- data/lib/treetop/compiler/node_classes/parsing_expression.rb +8 -17
- data/lib/treetop/compiler/node_classes/parsing_rule.rb +3 -3
- data/lib/treetop/compiler/node_classes/predicate.rb +1 -1
- data/lib/treetop/compiler/node_classes/repetition.rb +3 -4
- data/lib/treetop/compiler/node_classes/sequence.rb +4 -4
- data/lib/treetop/compiler/node_classes/terminal.rb +11 -1
- data/lib/treetop/compiler/ruby_builder.rb +2 -2
- data/lib/treetop/ruby_extensions.rb +1 -1
- data/lib/treetop/runtime.rb +0 -3
- data/lib/treetop/runtime/compiled_parser.rb +42 -34
- data/lib/treetop/runtime/node_cache.rb +1 -1
- data/lib/treetop/runtime/syntax_node.rb +51 -32
- data/lib/treetop/runtime/terminal_parse_failure.rb +7 -24
- data/lib/treetop/runtime/terminal_syntax_node.rb +7 -2
- metadata +12 -7
- data/examples/TALK +0 -33
- data/lib/treetop/compiler/load_grammar.rb +0 -7
- data/lib/treetop/compiler/metagrammar. +0 -0
- data/lib/treetop/runtime/parse_failure.rb +0 -32
- data/lib/treetop/runtime/parse_result.rb +0 -30
data/lib/treetop/compiler.rb
CHANGED
@@ -2,6 +2,5 @@ dir = File.dirname(__FILE__)
|
|
2
2
|
require File.join(dir, *%w[compiler lexical_address_space])
|
3
3
|
require File.join(dir, *%w[compiler ruby_builder])
|
4
4
|
require File.join(dir, *%w[compiler node_classes])
|
5
|
-
require File.join(dir, *%w[compiler metagrammar])
|
5
|
+
require File.join(dir, *%w[compiler metagrammar]) unless $exclude_metagrammar
|
6
6
|
require File.join(dir, *%w[compiler grammar_compiler])
|
7
|
-
require File.join(dir, *%w[compiler load_grammar])
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Treetop
|
2
2
|
module Compiler
|
3
3
|
class GrammarCompiler
|
4
|
-
def compile(source_path, target_path = source_path.gsub(
|
4
|
+
def compile(source_path, target_path = source_path.gsub(/\.(treetop|tt)\Z/, '.rb'))
|
5
5
|
File.open(target_path, 'w') do |target_file|
|
6
6
|
target_file.write(ruby_source(source_path))
|
7
7
|
end
|
@@ -9,13 +9,20 @@ module Treetop
|
|
9
9
|
|
10
10
|
def ruby_source(source_path)
|
11
11
|
File.open(source_path) do |source_file|
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
parser = MetagrammarParser.new
|
13
|
+
result = parser.parse(source_file.read)
|
14
|
+
unless result
|
15
|
+
raise RuntimeError.new(parser.failure_reason)
|
15
16
|
end
|
16
17
|
result.compile
|
17
18
|
end
|
18
19
|
end
|
19
20
|
end
|
20
21
|
end
|
21
|
-
|
22
|
+
|
23
|
+
def self.load(path)
|
24
|
+
adjusted_path = path =~ /\.(treetop|tt)\Z/ ? path : path + '.treetop'
|
25
|
+
compiler = Treetop::Compiler::GrammarCompiler.new
|
26
|
+
Object.class_eval(compiler.ruby_source(adjusted_path))
|
27
|
+
end
|
28
|
+
end
|
@@ -35,50 +35,46 @@ module Treetop
|
|
35
35
|
return cached
|
36
36
|
end
|
37
37
|
|
38
|
-
i0, s0
|
38
|
+
i0, s0 = index, []
|
39
39
|
r2 = _nt_space
|
40
|
-
if r2
|
40
|
+
if r2
|
41
41
|
r1 = r2
|
42
42
|
else
|
43
|
-
r1 = SyntaxNode.new(input, index...index
|
43
|
+
r1 = SyntaxNode.new(input, index...index)
|
44
44
|
end
|
45
45
|
s0 << r1
|
46
|
-
if r1
|
47
|
-
i3
|
46
|
+
if r1
|
47
|
+
i3 = index
|
48
48
|
r4 = _nt_module_declaration
|
49
|
-
|
50
|
-
if r4.success?
|
49
|
+
if r4
|
51
50
|
r3 = r4
|
52
|
-
r4.update_nested_results(nr3)
|
53
51
|
else
|
54
52
|
r5 = _nt_grammar
|
55
|
-
|
56
|
-
if r5.success?
|
53
|
+
if r5
|
57
54
|
r3 = r5
|
58
|
-
r5.update_nested_results(nr3)
|
59
55
|
else
|
60
56
|
self.index = i3
|
61
|
-
r3 =
|
57
|
+
r3 = nil
|
62
58
|
end
|
63
59
|
end
|
64
60
|
s0 << r3
|
65
|
-
if r3
|
61
|
+
if r3
|
66
62
|
r7 = _nt_space
|
67
|
-
if r7
|
63
|
+
if r7
|
68
64
|
r6 = r7
|
69
65
|
else
|
70
|
-
r6 = SyntaxNode.new(input, index...index
|
66
|
+
r6 = SyntaxNode.new(input, index...index)
|
71
67
|
end
|
72
68
|
s0 << r6
|
73
69
|
end
|
74
70
|
end
|
75
|
-
if s0.last
|
71
|
+
if s0.last
|
76
72
|
r0 = (SyntaxNode).new(input, i0...index, s0)
|
77
73
|
r0.extend(TreetopFile0)
|
78
74
|
r0.extend(TreetopFile1)
|
79
75
|
else
|
80
76
|
self.index = i0
|
81
|
-
r0 =
|
77
|
+
r0 = nil
|
82
78
|
end
|
83
79
|
|
84
80
|
node_cache[:treetop_file][start_index] = r0
|
@@ -131,88 +127,100 @@ module Treetop
|
|
131
127
|
return cached
|
132
128
|
end
|
133
129
|
|
134
|
-
i0, s0
|
135
|
-
i1, s1
|
136
|
-
|
130
|
+
i0, s0 = index, []
|
131
|
+
i1, s1 = index, []
|
132
|
+
if input.index('module', index) == index
|
133
|
+
r2 = (SyntaxNode).new(input, index...(index + 6))
|
134
|
+
@index += 6
|
135
|
+
else
|
136
|
+
terminal_parse_failure('module')
|
137
|
+
r2 = nil
|
138
|
+
end
|
137
139
|
s1 << r2
|
138
|
-
if r2
|
140
|
+
if r2
|
139
141
|
r3 = _nt_space
|
140
142
|
s1 << r3
|
141
|
-
if r3
|
142
|
-
|
143
|
+
if r3
|
144
|
+
if input.index(/[A-Z]/, index) == index
|
145
|
+
r4 = (SyntaxNode).new(input, index...(index + 1))
|
146
|
+
@index += 1
|
147
|
+
else
|
148
|
+
r4 = nil
|
149
|
+
end
|
143
150
|
s1 << r4
|
144
|
-
if r4
|
145
|
-
s5,
|
151
|
+
if r4
|
152
|
+
s5, i5 = [], index
|
146
153
|
loop do
|
147
154
|
r6 = _nt_alphanumeric_char
|
148
|
-
|
149
|
-
if r6.success?
|
155
|
+
if r6
|
150
156
|
s5 << r6
|
151
157
|
else
|
152
158
|
break
|
153
159
|
end
|
154
160
|
end
|
155
|
-
r5 = SyntaxNode.new(input, i5...index, s5
|
161
|
+
r5 = SyntaxNode.new(input, i5...index, s5)
|
156
162
|
s1 << r5
|
157
|
-
if r5
|
163
|
+
if r5
|
158
164
|
r7 = _nt_space
|
159
165
|
s1 << r7
|
160
166
|
end
|
161
167
|
end
|
162
168
|
end
|
163
169
|
end
|
164
|
-
if s1.last
|
170
|
+
if s1.last
|
165
171
|
r1 = (SyntaxNode).new(input, i1...index, s1)
|
166
172
|
r1.extend(ModuleDeclaration0)
|
167
173
|
else
|
168
174
|
self.index = i1
|
169
|
-
r1 =
|
175
|
+
r1 = nil
|
170
176
|
end
|
171
177
|
s0 << r1
|
172
|
-
if r1
|
173
|
-
i8
|
178
|
+
if r1
|
179
|
+
i8 = index
|
174
180
|
r9 = _nt_module_declaration
|
175
|
-
|
176
|
-
if r9.success?
|
181
|
+
if r9
|
177
182
|
r8 = r9
|
178
|
-
r9.update_nested_results(nr8)
|
179
183
|
else
|
180
184
|
r10 = _nt_grammar
|
181
|
-
|
182
|
-
if r10.success?
|
185
|
+
if r10
|
183
186
|
r8 = r10
|
184
|
-
r10.update_nested_results(nr8)
|
185
187
|
else
|
186
188
|
self.index = i8
|
187
|
-
r8 =
|
189
|
+
r8 = nil
|
188
190
|
end
|
189
191
|
end
|
190
192
|
s0 << r8
|
191
|
-
if r8
|
192
|
-
i11, s11
|
193
|
+
if r8
|
194
|
+
i11, s11 = index, []
|
193
195
|
r12 = _nt_space
|
194
196
|
s11 << r12
|
195
|
-
if r12
|
196
|
-
|
197
|
+
if r12
|
198
|
+
if input.index('end', index) == index
|
199
|
+
r13 = (SyntaxNode).new(input, index...(index + 3))
|
200
|
+
@index += 3
|
201
|
+
else
|
202
|
+
terminal_parse_failure('end')
|
203
|
+
r13 = nil
|
204
|
+
end
|
197
205
|
s11 << r13
|
198
206
|
end
|
199
|
-
if s11.last
|
207
|
+
if s11.last
|
200
208
|
r11 = (SyntaxNode).new(input, i11...index, s11)
|
201
209
|
r11.extend(ModuleDeclaration1)
|
202
210
|
else
|
203
211
|
self.index = i11
|
204
|
-
r11 =
|
212
|
+
r11 = nil
|
205
213
|
end
|
206
214
|
s0 << r11
|
207
215
|
end
|
208
216
|
end
|
209
|
-
if s0.last
|
217
|
+
if s0.last
|
210
218
|
r0 = (SyntaxNode).new(input, i0...index, s0)
|
211
219
|
r0.extend(ModuleDeclaration2)
|
212
220
|
r0.extend(ModuleDeclaration3)
|
213
221
|
else
|
214
222
|
self.index = i0
|
215
|
-
r0 =
|
223
|
+
r0 = nil
|
216
224
|
end
|
217
225
|
|
218
226
|
node_cache[:module_declaration][start_index] = r0
|
@@ -247,31 +255,43 @@ module Treetop
|
|
247
255
|
return cached
|
248
256
|
end
|
249
257
|
|
250
|
-
i0, s0
|
251
|
-
|
258
|
+
i0, s0 = index, []
|
259
|
+
if input.index('grammar', index) == index
|
260
|
+
r1 = (SyntaxNode).new(input, index...(index + 7))
|
261
|
+
@index += 7
|
262
|
+
else
|
263
|
+
terminal_parse_failure('grammar')
|
264
|
+
r1 = nil
|
265
|
+
end
|
252
266
|
s0 << r1
|
253
|
-
if r1
|
267
|
+
if r1
|
254
268
|
r2 = _nt_space
|
255
269
|
s0 << r2
|
256
|
-
if r2
|
270
|
+
if r2
|
257
271
|
r3 = _nt_grammar_name
|
258
272
|
s0 << r3
|
259
|
-
if r3
|
273
|
+
if r3
|
260
274
|
r4 = _nt_space
|
261
275
|
s0 << r4
|
262
|
-
if r4
|
276
|
+
if r4
|
263
277
|
r5 = _nt_declaration_sequence
|
264
278
|
s0 << r5
|
265
|
-
if r5
|
279
|
+
if r5
|
266
280
|
r7 = _nt_space
|
267
|
-
if r7
|
281
|
+
if r7
|
268
282
|
r6 = r7
|
269
283
|
else
|
270
|
-
r6 = SyntaxNode.new(input, index...index
|
284
|
+
r6 = SyntaxNode.new(input, index...index)
|
271
285
|
end
|
272
286
|
s0 << r6
|
273
|
-
if r6
|
274
|
-
|
287
|
+
if r6
|
288
|
+
if input.index('end', index) == index
|
289
|
+
r8 = (SyntaxNode).new(input, index...(index + 3))
|
290
|
+
@index += 3
|
291
|
+
else
|
292
|
+
terminal_parse_failure('end')
|
293
|
+
r8 = nil
|
294
|
+
end
|
275
295
|
s0 << r8
|
276
296
|
end
|
277
297
|
end
|
@@ -279,12 +299,12 @@ module Treetop
|
|
279
299
|
end
|
280
300
|
end
|
281
301
|
end
|
282
|
-
if s0.last
|
302
|
+
if s0.last
|
283
303
|
r0 = (Grammar).new(input, i0...index, s0)
|
284
304
|
r0.extend(Grammar0)
|
285
305
|
else
|
286
306
|
self.index = i0
|
287
|
-
r0 =
|
307
|
+
r0 = nil
|
288
308
|
end
|
289
309
|
|
290
310
|
node_cache[:grammar][start_index] = r0
|
@@ -303,29 +323,33 @@ module Treetop
|
|
303
323
|
return cached
|
304
324
|
end
|
305
325
|
|
306
|
-
i0, s0
|
307
|
-
|
326
|
+
i0, s0 = index, []
|
327
|
+
if input.index(/[A-Z]/, index) == index
|
328
|
+
r1 = (SyntaxNode).new(input, index...(index + 1))
|
329
|
+
@index += 1
|
330
|
+
else
|
331
|
+
r1 = nil
|
332
|
+
end
|
308
333
|
s0 << r1
|
309
|
-
if r1
|
310
|
-
s2,
|
334
|
+
if r1
|
335
|
+
s2, i2 = [], index
|
311
336
|
loop do
|
312
337
|
r3 = _nt_alphanumeric_char
|
313
|
-
|
314
|
-
if r3.success?
|
338
|
+
if r3
|
315
339
|
s2 << r3
|
316
340
|
else
|
317
341
|
break
|
318
342
|
end
|
319
343
|
end
|
320
|
-
r2 = SyntaxNode.new(input, i2...index, s2
|
344
|
+
r2 = SyntaxNode.new(input, i2...index, s2)
|
321
345
|
s0 << r2
|
322
346
|
end
|
323
|
-
if s0.last
|
347
|
+
if s0.last
|
324
348
|
r0 = (SyntaxNode).new(input, i0...index, s0)
|
325
349
|
r0.extend(GrammarName0)
|
326
350
|
else
|
327
351
|
self.index = i0
|
328
|
-
r0 =
|
352
|
+
r0 = nil
|
329
353
|
end
|
330
354
|
|
331
355
|
node_cache[:grammar_name][start_index] = r0
|
@@ -376,58 +400,60 @@ module Treetop
|
|
376
400
|
return cached
|
377
401
|
end
|
378
402
|
|
379
|
-
i0
|
380
|
-
i1, s1
|
403
|
+
i0 = index
|
404
|
+
i1, s1 = index, []
|
381
405
|
r2 = _nt_declaration
|
382
406
|
s1 << r2
|
383
|
-
if r2
|
384
|
-
s3,
|
407
|
+
if r2
|
408
|
+
s3, i3 = [], index
|
385
409
|
loop do
|
386
|
-
i4, s4
|
410
|
+
i4, s4 = index, []
|
387
411
|
r5 = _nt_space
|
388
412
|
s4 << r5
|
389
|
-
if r5
|
413
|
+
if r5
|
390
414
|
r6 = _nt_declaration
|
391
415
|
s4 << r6
|
392
416
|
end
|
393
|
-
if s4.last
|
417
|
+
if s4.last
|
394
418
|
r4 = (SyntaxNode).new(input, i4...index, s4)
|
395
419
|
r4.extend(DeclarationSequence0)
|
396
420
|
else
|
397
421
|
self.index = i4
|
398
|
-
r4 =
|
422
|
+
r4 = nil
|
399
423
|
end
|
400
|
-
|
401
|
-
if r4.success?
|
424
|
+
if r4
|
402
425
|
s3 << r4
|
403
426
|
else
|
404
427
|
break
|
405
428
|
end
|
406
429
|
end
|
407
|
-
r3 = SyntaxNode.new(input, i3...index, s3
|
430
|
+
r3 = SyntaxNode.new(input, i3...index, s3)
|
408
431
|
s1 << r3
|
409
432
|
end
|
410
|
-
if s1.last
|
433
|
+
if s1.last
|
411
434
|
r1 = (DeclarationSequence).new(input, i1...index, s1)
|
412
435
|
r1.extend(DeclarationSequence1)
|
413
436
|
r1.extend(DeclarationSequence2)
|
414
437
|
else
|
415
438
|
self.index = i1
|
416
|
-
r1 =
|
439
|
+
r1 = nil
|
417
440
|
end
|
418
|
-
|
419
|
-
if r1.success?
|
441
|
+
if r1
|
420
442
|
r0 = r1
|
421
|
-
r1.update_nested_results(nr0)
|
422
443
|
else
|
423
|
-
|
424
|
-
|
425
|
-
|
444
|
+
if input.index('', index) == index
|
445
|
+
r7 = (SyntaxNode).new(input, index...(index + 0))
|
446
|
+
r7.extend(DeclarationSequence3)
|
447
|
+
@index += 0
|
448
|
+
else
|
449
|
+
terminal_parse_failure('')
|
450
|
+
r7 = nil
|
451
|
+
end
|
452
|
+
if r7
|
426
453
|
r0 = r7
|
427
|
-
r7.update_nested_results(nr0)
|
428
454
|
else
|
429
455
|
self.index = i0
|
430
|
-
r0 =
|
456
|
+
r0 = nil
|
431
457
|
end
|
432
458
|
end
|
433
459
|
|
@@ -444,21 +470,17 @@ module Treetop
|
|
444
470
|
return cached
|
445
471
|
end
|
446
472
|
|
447
|
-
i0
|
473
|
+
i0 = index
|
448
474
|
r1 = _nt_parsing_rule
|
449
|
-
|
450
|
-
if r1.success?
|
475
|
+
if r1
|
451
476
|
r0 = r1
|
452
|
-
r1.update_nested_results(nr0)
|
453
477
|
else
|
454
478
|
r2 = _nt_include_declaration
|
455
|
-
|
456
|
-
if r2.success?
|
479
|
+
if r2
|
457
480
|
r0 = r2
|
458
|
-
r2.update_nested_results(nr0)
|
459
481
|
else
|
460
482
|
self.index = i0
|
461
|
-
r0 =
|
483
|
+
r0 = nil
|
462
484
|
end
|
463
485
|
end
|
464
486
|
|
@@ -488,54 +510,66 @@ module Treetop
|
|
488
510
|
return cached
|
489
511
|
end
|
490
512
|
|
491
|
-
i0, s0
|
492
|
-
|
513
|
+
i0, s0 = index, []
|
514
|
+
if input.index('include', index) == index
|
515
|
+
r1 = (SyntaxNode).new(input, index...(index + 7))
|
516
|
+
@index += 7
|
517
|
+
else
|
518
|
+
terminal_parse_failure('include')
|
519
|
+
r1 = nil
|
520
|
+
end
|
493
521
|
s0 << r1
|
494
|
-
if r1
|
522
|
+
if r1
|
495
523
|
r2 = _nt_space
|
496
524
|
s0 << r2
|
497
|
-
if r2
|
498
|
-
|
525
|
+
if r2
|
526
|
+
if input.index(/[A-Z]/, index) == index
|
527
|
+
r3 = (SyntaxNode).new(input, index...(index + 1))
|
528
|
+
@index += 1
|
529
|
+
else
|
530
|
+
r3 = nil
|
531
|
+
end
|
499
532
|
s0 << r3
|
500
|
-
if r3
|
501
|
-
s4,
|
533
|
+
if r3
|
534
|
+
s4, i4 = [], index
|
502
535
|
loop do
|
503
|
-
i5
|
536
|
+
i5 = index
|
504
537
|
r6 = _nt_alphanumeric_char
|
505
|
-
|
506
|
-
if r6.success?
|
538
|
+
if r6
|
507
539
|
r5 = r6
|
508
|
-
r6.update_nested_results(nr5)
|
509
540
|
else
|
510
|
-
|
511
|
-
|
512
|
-
|
541
|
+
if input.index('::', index) == index
|
542
|
+
r7 = (SyntaxNode).new(input, index...(index + 2))
|
543
|
+
@index += 2
|
544
|
+
else
|
545
|
+
terminal_parse_failure('::')
|
546
|
+
r7 = nil
|
547
|
+
end
|
548
|
+
if r7
|
513
549
|
r5 = r7
|
514
|
-
r7.update_nested_results(nr5)
|
515
550
|
else
|
516
551
|
self.index = i5
|
517
|
-
r5 =
|
552
|
+
r5 = nil
|
518
553
|
end
|
519
554
|
end
|
520
|
-
|
521
|
-
if r5.success?
|
555
|
+
if r5
|
522
556
|
s4 << r5
|
523
557
|
else
|
524
558
|
break
|
525
559
|
end
|
526
560
|
end
|
527
|
-
r4 = SyntaxNode.new(input, i4...index, s4
|
561
|
+
r4 = SyntaxNode.new(input, i4...index, s4)
|
528
562
|
s0 << r4
|
529
563
|
end
|
530
564
|
end
|
531
565
|
end
|
532
|
-
if s0.last
|
566
|
+
if s0.last
|
533
567
|
r0 = (SyntaxNode).new(input, i0...index, s0)
|
534
568
|
r0.extend(IncludeDeclaration0)
|
535
569
|
r0.extend(IncludeDeclaration1)
|
536
570
|
else
|
537
571
|
self.index = i0
|
538
|
-
r0 =
|
572
|
+
r0 = nil
|
539
573
|
end
|
540
574
|
|
541
575
|
node_cache[:include_declaration][start_index] = r0
|
@@ -574,26 +608,38 @@ module Treetop
|
|
574
608
|
return cached
|
575
609
|
end
|
576
610
|
|
577
|
-
i0, s0
|
578
|
-
|
611
|
+
i0, s0 = index, []
|
612
|
+
if input.index('rule', index) == index
|
613
|
+
r1 = (SyntaxNode).new(input, index...(index + 4))
|
614
|
+
@index += 4
|
615
|
+
else
|
616
|
+
terminal_parse_failure('rule')
|
617
|
+
r1 = nil
|
618
|
+
end
|
579
619
|
s0 << r1
|
580
|
-
if r1
|
620
|
+
if r1
|
581
621
|
r2 = _nt_space
|
582
622
|
s0 << r2
|
583
|
-
if r2
|
623
|
+
if r2
|
584
624
|
r3 = _nt_nonterminal
|
585
625
|
s0 << r3
|
586
|
-
if r3
|
626
|
+
if r3
|
587
627
|
r4 = _nt_space
|
588
628
|
s0 << r4
|
589
|
-
if r4
|
629
|
+
if r4
|
590
630
|
r5 = _nt_parsing_expression
|
591
631
|
s0 << r5
|
592
|
-
if r5
|
632
|
+
if r5
|
593
633
|
r6 = _nt_space
|
594
634
|
s0 << r6
|
595
|
-
if r6
|
596
|
-
|
635
|
+
if r6
|
636
|
+
if input.index('end', index) == index
|
637
|
+
r7 = (SyntaxNode).new(input, index...(index + 3))
|
638
|
+
@index += 3
|
639
|
+
else
|
640
|
+
terminal_parse_failure('end')
|
641
|
+
r7 = nil
|
642
|
+
end
|
597
643
|
s0 << r7
|
598
644
|
end
|
599
645
|
end
|
@@ -601,12 +647,12 @@ module Treetop
|
|
601
647
|
end
|
602
648
|
end
|
603
649
|
end
|
604
|
-
if s0.last
|
650
|
+
if s0.last
|
605
651
|
r0 = (ParsingRule).new(input, i0...index, s0)
|
606
652
|
r0.extend(ParsingRule0)
|
607
653
|
else
|
608
654
|
self.index = i0
|
609
|
-
r0 =
|
655
|
+
r0 = nil
|
610
656
|
end
|
611
657
|
|
612
658
|
node_cache[:parsing_rule][start_index] = r0
|
@@ -622,27 +668,21 @@ module Treetop
|
|
622
668
|
return cached
|
623
669
|
end
|
624
670
|
|
625
|
-
i0
|
671
|
+
i0 = index
|
626
672
|
r1 = _nt_choice
|
627
|
-
|
628
|
-
if r1.success?
|
673
|
+
if r1
|
629
674
|
r0 = r1
|
630
|
-
r1.update_nested_results(nr0)
|
631
675
|
else
|
632
676
|
r2 = _nt_sequence
|
633
|
-
|
634
|
-
if r2.success?
|
677
|
+
if r2
|
635
678
|
r0 = r2
|
636
|
-
r2.update_nested_results(nr0)
|
637
679
|
else
|
638
680
|
r3 = _nt_primary
|
639
|
-
|
640
|
-
if r3.success?
|
681
|
+
if r3
|
641
682
|
r0 = r3
|
642
|
-
r3.update_nested_results(nr0)
|
643
683
|
else
|
644
684
|
self.index = i0
|
645
|
-
r0 =
|
685
|
+
r0 = nil
|
646
686
|
end
|
647
687
|
end
|
648
688
|
end
|
@@ -690,46 +730,51 @@ module Treetop
|
|
690
730
|
return cached
|
691
731
|
end
|
692
732
|
|
693
|
-
i0, s0
|
733
|
+
i0, s0 = index, []
|
694
734
|
r1 = _nt_alternative
|
695
735
|
s0 << r1
|
696
|
-
if r1
|
697
|
-
s2,
|
736
|
+
if r1
|
737
|
+
s2, i2 = [], index
|
698
738
|
loop do
|
699
|
-
i3, s3
|
739
|
+
i3, s3 = index, []
|
700
740
|
r5 = _nt_space
|
701
|
-
if r5
|
741
|
+
if r5
|
702
742
|
r4 = r5
|
703
743
|
else
|
704
|
-
r4 = SyntaxNode.new(input, index...index
|
744
|
+
r4 = SyntaxNode.new(input, index...index)
|
705
745
|
end
|
706
746
|
s3 << r4
|
707
|
-
if r4
|
708
|
-
|
747
|
+
if r4
|
748
|
+
if input.index('/', index) == index
|
749
|
+
r6 = (SyntaxNode).new(input, index...(index + 1))
|
750
|
+
@index += 1
|
751
|
+
else
|
752
|
+
terminal_parse_failure('/')
|
753
|
+
r6 = nil
|
754
|
+
end
|
709
755
|
s3 << r6
|
710
|
-
if r6
|
756
|
+
if r6
|
711
757
|
r8 = _nt_space
|
712
|
-
if r8
|
758
|
+
if r8
|
713
759
|
r7 = r8
|
714
760
|
else
|
715
|
-
r7 = SyntaxNode.new(input, index...index
|
761
|
+
r7 = SyntaxNode.new(input, index...index)
|
716
762
|
end
|
717
763
|
s3 << r7
|
718
|
-
if r7
|
764
|
+
if r7
|
719
765
|
r9 = _nt_alternative
|
720
766
|
s3 << r9
|
721
767
|
end
|
722
768
|
end
|
723
769
|
end
|
724
|
-
if s3.last
|
770
|
+
if s3.last
|
725
771
|
r3 = (SyntaxNode).new(input, i3...index, s3)
|
726
772
|
r3.extend(Choice0)
|
727
773
|
else
|
728
774
|
self.index = i3
|
729
|
-
r3 =
|
775
|
+
r3 = nil
|
730
776
|
end
|
731
|
-
|
732
|
-
if r3.success?
|
777
|
+
if r3
|
733
778
|
s2 << r3
|
734
779
|
else
|
735
780
|
break
|
@@ -737,19 +782,19 @@ module Treetop
|
|
737
782
|
end
|
738
783
|
if s2.empty?
|
739
784
|
self.index = i2
|
740
|
-
r2 =
|
785
|
+
r2 = nil
|
741
786
|
else
|
742
|
-
r2 = SyntaxNode.new(input, i2...index, s2
|
787
|
+
r2 = SyntaxNode.new(input, i2...index, s2)
|
743
788
|
end
|
744
789
|
s0 << r2
|
745
790
|
end
|
746
|
-
if s0.last
|
791
|
+
if s0.last
|
747
792
|
r0 = (Choice).new(input, i0...index, s0)
|
748
793
|
r0.extend(Choice1)
|
749
794
|
r0.extend(Choice2)
|
750
795
|
else
|
751
796
|
self.index = i0
|
752
|
-
r0 =
|
797
|
+
r0 = nil
|
753
798
|
end
|
754
799
|
|
755
800
|
node_cache[:choice][start_index] = r0
|
@@ -809,28 +854,27 @@ module Treetop
|
|
809
854
|
return cached
|
810
855
|
end
|
811
856
|
|
812
|
-
i0, s0
|
857
|
+
i0, s0 = index, []
|
813
858
|
r1 = _nt_labeled_sequence_primary
|
814
859
|
s0 << r1
|
815
|
-
if r1
|
816
|
-
s2,
|
860
|
+
if r1
|
861
|
+
s2, i2 = [], index
|
817
862
|
loop do
|
818
|
-
i3, s3
|
863
|
+
i3, s3 = index, []
|
819
864
|
r4 = _nt_space
|
820
865
|
s3 << r4
|
821
|
-
if r4
|
866
|
+
if r4
|
822
867
|
r5 = _nt_labeled_sequence_primary
|
823
868
|
s3 << r5
|
824
869
|
end
|
825
|
-
if s3.last
|
870
|
+
if s3.last
|
826
871
|
r3 = (SyntaxNode).new(input, i3...index, s3)
|
827
872
|
r3.extend(Sequence0)
|
828
873
|
else
|
829
874
|
self.index = i3
|
830
|
-
r3 =
|
875
|
+
r3 = nil
|
831
876
|
end
|
832
|
-
|
833
|
-
if r3.success?
|
877
|
+
if r3
|
834
878
|
s2 << r3
|
835
879
|
else
|
836
880
|
break
|
@@ -838,23 +882,23 @@ module Treetop
|
|
838
882
|
end
|
839
883
|
if s2.empty?
|
840
884
|
self.index = i2
|
841
|
-
r2 =
|
885
|
+
r2 = nil
|
842
886
|
else
|
843
|
-
r2 = SyntaxNode.new(input, i2...index, s2
|
887
|
+
r2 = SyntaxNode.new(input, i2...index, s2)
|
844
888
|
end
|
845
889
|
s0 << r2
|
846
|
-
if r2
|
890
|
+
if r2
|
847
891
|
r6 = _nt_node_class_declarations
|
848
892
|
s0 << r6
|
849
893
|
end
|
850
894
|
end
|
851
|
-
if s0.last
|
895
|
+
if s0.last
|
852
896
|
r0 = (Sequence).new(input, i0...index, s0)
|
853
897
|
r0.extend(Sequence1)
|
854
898
|
r0.extend(Sequence2)
|
855
899
|
else
|
856
900
|
self.index = i0
|
857
|
-
r0 =
|
901
|
+
r0 = nil
|
858
902
|
end
|
859
903
|
|
860
904
|
node_cache[:sequence][start_index] = r0
|
@@ -870,21 +914,17 @@ module Treetop
|
|
870
914
|
return cached
|
871
915
|
end
|
872
916
|
|
873
|
-
i0
|
917
|
+
i0 = index
|
874
918
|
r1 = _nt_sequence
|
875
|
-
|
876
|
-
if r1.success?
|
919
|
+
if r1
|
877
920
|
r0 = r1
|
878
|
-
r1.update_nested_results(nr0)
|
879
921
|
else
|
880
922
|
r2 = _nt_primary
|
881
|
-
|
882
|
-
if r2.success?
|
923
|
+
if r2
|
883
924
|
r0 = r2
|
884
|
-
r2.update_nested_results(nr0)
|
885
925
|
else
|
886
926
|
self.index = i0
|
887
|
-
r0 =
|
927
|
+
r0 = nil
|
888
928
|
end
|
889
929
|
end
|
890
930
|
|
@@ -993,73 +1033,67 @@ module Treetop
|
|
993
1033
|
return cached
|
994
1034
|
end
|
995
1035
|
|
996
|
-
i0
|
997
|
-
i1, s1
|
1036
|
+
i0 = index
|
1037
|
+
i1, s1 = index, []
|
998
1038
|
r2 = _nt_prefix
|
999
1039
|
s1 << r2
|
1000
|
-
if r2
|
1040
|
+
if r2
|
1001
1041
|
r3 = _nt_atomic
|
1002
1042
|
s1 << r3
|
1003
1043
|
end
|
1004
|
-
if s1.last
|
1044
|
+
if s1.last
|
1005
1045
|
r1 = (SyntaxNode).new(input, i1...index, s1)
|
1006
1046
|
r1.extend(Primary0)
|
1007
1047
|
r1.extend(Primary1)
|
1008
1048
|
else
|
1009
1049
|
self.index = i1
|
1010
|
-
r1 =
|
1050
|
+
r1 = nil
|
1011
1051
|
end
|
1012
|
-
|
1013
|
-
if r1.success?
|
1052
|
+
if r1
|
1014
1053
|
r0 = r1
|
1015
|
-
r1.update_nested_results(nr0)
|
1016
1054
|
else
|
1017
|
-
i4, s4
|
1055
|
+
i4, s4 = index, []
|
1018
1056
|
r5 = _nt_atomic
|
1019
1057
|
s4 << r5
|
1020
|
-
if r5
|
1058
|
+
if r5
|
1021
1059
|
r6 = _nt_suffix
|
1022
1060
|
s4 << r6
|
1023
|
-
if r6
|
1061
|
+
if r6
|
1024
1062
|
r7 = _nt_node_class_declarations
|
1025
1063
|
s4 << r7
|
1026
1064
|
end
|
1027
1065
|
end
|
1028
|
-
if s4.last
|
1066
|
+
if s4.last
|
1029
1067
|
r4 = (SyntaxNode).new(input, i4...index, s4)
|
1030
1068
|
r4.extend(Primary2)
|
1031
1069
|
r4.extend(Primary3)
|
1032
1070
|
else
|
1033
1071
|
self.index = i4
|
1034
|
-
r4 =
|
1072
|
+
r4 = nil
|
1035
1073
|
end
|
1036
|
-
|
1037
|
-
if r4.success?
|
1074
|
+
if r4
|
1038
1075
|
r0 = r4
|
1039
|
-
r4.update_nested_results(nr0)
|
1040
1076
|
else
|
1041
|
-
i8, s8
|
1077
|
+
i8, s8 = index, []
|
1042
1078
|
r9 = _nt_atomic
|
1043
1079
|
s8 << r9
|
1044
|
-
if r9
|
1080
|
+
if r9
|
1045
1081
|
r10 = _nt_node_class_declarations
|
1046
1082
|
s8 << r10
|
1047
1083
|
end
|
1048
|
-
if s8.last
|
1084
|
+
if s8.last
|
1049
1085
|
r8 = (SyntaxNode).new(input, i8...index, s8)
|
1050
1086
|
r8.extend(Primary4)
|
1051
1087
|
r8.extend(Primary5)
|
1052
1088
|
else
|
1053
1089
|
self.index = i8
|
1054
|
-
r8 =
|
1090
|
+
r8 = nil
|
1055
1091
|
end
|
1056
|
-
|
1057
|
-
if r8.success?
|
1092
|
+
if r8
|
1058
1093
|
r0 = r8
|
1059
|
-
r8.update_nested_results(nr0)
|
1060
1094
|
else
|
1061
1095
|
self.index = i0
|
1062
|
-
r0 =
|
1096
|
+
r0 = nil
|
1063
1097
|
end
|
1064
1098
|
end
|
1065
1099
|
end
|
@@ -1107,20 +1141,20 @@ module Treetop
|
|
1107
1141
|
return cached
|
1108
1142
|
end
|
1109
1143
|
|
1110
|
-
i0, s0
|
1144
|
+
i0, s0 = index, []
|
1111
1145
|
r1 = _nt_label
|
1112
1146
|
s0 << r1
|
1113
|
-
if r1
|
1147
|
+
if r1
|
1114
1148
|
r2 = _nt_sequence_primary
|
1115
1149
|
s0 << r2
|
1116
1150
|
end
|
1117
|
-
if s0.last
|
1151
|
+
if s0.last
|
1118
1152
|
r0 = (SyntaxNode).new(input, i0...index, s0)
|
1119
1153
|
r0.extend(LabeledSequencePrimary0)
|
1120
1154
|
r0.extend(LabeledSequencePrimary1)
|
1121
1155
|
else
|
1122
1156
|
self.index = i0
|
1123
|
-
r0 =
|
1157
|
+
r0 = nil
|
1124
1158
|
end
|
1125
1159
|
|
1126
1160
|
node_cache[:labeled_sequence_primary][start_index] = r0
|
@@ -1158,58 +1192,66 @@ module Treetop
|
|
1158
1192
|
return cached
|
1159
1193
|
end
|
1160
1194
|
|
1161
|
-
i0
|
1162
|
-
i1, s1
|
1163
|
-
i2, s2
|
1195
|
+
i0 = index
|
1196
|
+
i1, s1 = index, []
|
1197
|
+
i2, s2 = index, []
|
1164
1198
|
r3 = _nt_alpha_char
|
1165
1199
|
s2 << r3
|
1166
|
-
if r3
|
1167
|
-
s4,
|
1200
|
+
if r3
|
1201
|
+
s4, i4 = [], index
|
1168
1202
|
loop do
|
1169
1203
|
r5 = _nt_alphanumeric_char
|
1170
|
-
|
1171
|
-
if r5.success?
|
1204
|
+
if r5
|
1172
1205
|
s4 << r5
|
1173
1206
|
else
|
1174
1207
|
break
|
1175
1208
|
end
|
1176
1209
|
end
|
1177
|
-
r4 = SyntaxNode.new(input, i4...index, s4
|
1210
|
+
r4 = SyntaxNode.new(input, i4...index, s4)
|
1178
1211
|
s2 << r4
|
1179
1212
|
end
|
1180
|
-
if s2.last
|
1213
|
+
if s2.last
|
1181
1214
|
r2 = (SyntaxNode).new(input, i2...index, s2)
|
1182
1215
|
r2.extend(Label0)
|
1183
1216
|
else
|
1184
1217
|
self.index = i2
|
1185
|
-
r2 =
|
1218
|
+
r2 = nil
|
1186
1219
|
end
|
1187
1220
|
s1 << r2
|
1188
|
-
if r2
|
1189
|
-
|
1221
|
+
if r2
|
1222
|
+
if input.index(':', index) == index
|
1223
|
+
r6 = (SyntaxNode).new(input, index...(index + 1))
|
1224
|
+
@index += 1
|
1225
|
+
else
|
1226
|
+
terminal_parse_failure(':')
|
1227
|
+
r6 = nil
|
1228
|
+
end
|
1190
1229
|
s1 << r6
|
1191
1230
|
end
|
1192
|
-
if s1.last
|
1231
|
+
if s1.last
|
1193
1232
|
r1 = (SyntaxNode).new(input, i1...index, s1)
|
1194
1233
|
r1.extend(Label1)
|
1195
1234
|
r1.extend(Label2)
|
1196
1235
|
else
|
1197
1236
|
self.index = i1
|
1198
|
-
r1 =
|
1237
|
+
r1 = nil
|
1199
1238
|
end
|
1200
|
-
|
1201
|
-
if r1.success?
|
1239
|
+
if r1
|
1202
1240
|
r0 = r1
|
1203
|
-
r1.update_nested_results(nr0)
|
1204
1241
|
else
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1242
|
+
if input.index('', index) == index
|
1243
|
+
r7 = (SyntaxNode).new(input, index...(index + 0))
|
1244
|
+
r7.extend(Label3)
|
1245
|
+
@index += 0
|
1246
|
+
else
|
1247
|
+
terminal_parse_failure('')
|
1248
|
+
r7 = nil
|
1249
|
+
end
|
1250
|
+
if r7
|
1208
1251
|
r0 = r7
|
1209
|
-
r7.update_nested_results(nr0)
|
1210
1252
|
else
|
1211
1253
|
self.index = i0
|
1212
|
-
r0 =
|
1254
|
+
r0 = nil
|
1213
1255
|
end
|
1214
1256
|
end
|
1215
1257
|
|
@@ -1282,55 +1324,49 @@ module Treetop
|
|
1282
1324
|
return cached
|
1283
1325
|
end
|
1284
1326
|
|
1285
|
-
i0
|
1286
|
-
i1, s1
|
1327
|
+
i0 = index
|
1328
|
+
i1, s1 = index, []
|
1287
1329
|
r2 = _nt_prefix
|
1288
1330
|
s1 << r2
|
1289
|
-
if r2
|
1331
|
+
if r2
|
1290
1332
|
r3 = _nt_atomic
|
1291
1333
|
s1 << r3
|
1292
1334
|
end
|
1293
|
-
if s1.last
|
1335
|
+
if s1.last
|
1294
1336
|
r1 = (SyntaxNode).new(input, i1...index, s1)
|
1295
1337
|
r1.extend(SequencePrimary0)
|
1296
1338
|
r1.extend(SequencePrimary1)
|
1297
1339
|
else
|
1298
1340
|
self.index = i1
|
1299
|
-
r1 =
|
1341
|
+
r1 = nil
|
1300
1342
|
end
|
1301
|
-
|
1302
|
-
if r1.success?
|
1343
|
+
if r1
|
1303
1344
|
r0 = r1
|
1304
|
-
r1.update_nested_results(nr0)
|
1305
1345
|
else
|
1306
|
-
i4, s4
|
1346
|
+
i4, s4 = index, []
|
1307
1347
|
r5 = _nt_atomic
|
1308
1348
|
s4 << r5
|
1309
|
-
if r5
|
1349
|
+
if r5
|
1310
1350
|
r6 = _nt_suffix
|
1311
1351
|
s4 << r6
|
1312
1352
|
end
|
1313
|
-
if s4.last
|
1353
|
+
if s4.last
|
1314
1354
|
r4 = (SyntaxNode).new(input, i4...index, s4)
|
1315
1355
|
r4.extend(SequencePrimary2)
|
1316
1356
|
r4.extend(SequencePrimary3)
|
1317
1357
|
else
|
1318
1358
|
self.index = i4
|
1319
|
-
r4 =
|
1359
|
+
r4 = nil
|
1320
1360
|
end
|
1321
|
-
|
1322
|
-
if r4.success?
|
1361
|
+
if r4
|
1323
1362
|
r0 = r4
|
1324
|
-
r4.update_nested_results(nr0)
|
1325
1363
|
else
|
1326
1364
|
r7 = _nt_atomic
|
1327
|
-
|
1328
|
-
if r7.success?
|
1365
|
+
if r7
|
1329
1366
|
r0 = r7
|
1330
|
-
r7.update_nested_results(nr0)
|
1331
1367
|
else
|
1332
1368
|
self.index = i0
|
1333
|
-
r0 =
|
1369
|
+
r0 = nil
|
1334
1370
|
end
|
1335
1371
|
end
|
1336
1372
|
end
|
@@ -1348,21 +1384,17 @@ module Treetop
|
|
1348
1384
|
return cached
|
1349
1385
|
end
|
1350
1386
|
|
1351
|
-
i0
|
1387
|
+
i0 = index
|
1352
1388
|
r1 = _nt_repetition_suffix
|
1353
|
-
|
1354
|
-
if r1.success?
|
1389
|
+
if r1
|
1355
1390
|
r0 = r1
|
1356
|
-
r1.update_nested_results(nr0)
|
1357
1391
|
else
|
1358
1392
|
r2 = _nt_optional_suffix
|
1359
|
-
|
1360
|
-
if r2.success?
|
1393
|
+
if r2
|
1361
1394
|
r0 = r2
|
1362
|
-
r2.update_nested_results(nr0)
|
1363
1395
|
else
|
1364
1396
|
self.index = i0
|
1365
|
-
r0 =
|
1397
|
+
r0 = nil
|
1366
1398
|
end
|
1367
1399
|
end
|
1368
1400
|
|
@@ -1379,7 +1411,13 @@ module Treetop
|
|
1379
1411
|
return cached
|
1380
1412
|
end
|
1381
1413
|
|
1382
|
-
|
1414
|
+
if input.index('?', index) == index
|
1415
|
+
r0 = (Optional).new(input, index...(index + 1))
|
1416
|
+
@index += 1
|
1417
|
+
else
|
1418
|
+
terminal_parse_failure('?')
|
1419
|
+
r0 = nil
|
1420
|
+
end
|
1383
1421
|
|
1384
1422
|
node_cache[:optional_suffix][start_index] = r0
|
1385
1423
|
|
@@ -1422,20 +1460,20 @@ module Treetop
|
|
1422
1460
|
return cached
|
1423
1461
|
end
|
1424
1462
|
|
1425
|
-
i0, s0
|
1463
|
+
i0, s0 = index, []
|
1426
1464
|
r1 = _nt_node_class_expression
|
1427
1465
|
s0 << r1
|
1428
|
-
if r1
|
1466
|
+
if r1
|
1429
1467
|
r2 = _nt_trailing_inline_module
|
1430
1468
|
s0 << r2
|
1431
1469
|
end
|
1432
|
-
if s0.last
|
1470
|
+
if s0.last
|
1433
1471
|
r0 = (SyntaxNode).new(input, i0...index, s0)
|
1434
1472
|
r0.extend(NodeClassDeclarations0)
|
1435
1473
|
r0.extend(NodeClassDeclarations1)
|
1436
1474
|
else
|
1437
1475
|
self.index = i0
|
1438
|
-
r0 =
|
1476
|
+
r0 = nil
|
1439
1477
|
end
|
1440
1478
|
|
1441
1479
|
node_cache[:node_class_declarations][start_index] = r0
|
@@ -1451,21 +1489,29 @@ module Treetop
|
|
1451
1489
|
return cached
|
1452
1490
|
end
|
1453
1491
|
|
1454
|
-
i0
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1492
|
+
i0 = index
|
1493
|
+
if input.index('+', index) == index
|
1494
|
+
r1 = (OneOrMore).new(input, index...(index + 1))
|
1495
|
+
@index += 1
|
1496
|
+
else
|
1497
|
+
terminal_parse_failure('+')
|
1498
|
+
r1 = nil
|
1499
|
+
end
|
1500
|
+
if r1
|
1458
1501
|
r0 = r1
|
1459
|
-
r1.update_nested_results(nr0)
|
1460
1502
|
else
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1503
|
+
if input.index('*', index) == index
|
1504
|
+
r2 = (ZeroOrMore).new(input, index...(index + 1))
|
1505
|
+
@index += 1
|
1506
|
+
else
|
1507
|
+
terminal_parse_failure('*')
|
1508
|
+
r2 = nil
|
1509
|
+
end
|
1510
|
+
if r2
|
1464
1511
|
r0 = r2
|
1465
|
-
r2.update_nested_results(nr0)
|
1466
1512
|
else
|
1467
1513
|
self.index = i0
|
1468
|
-
r0 =
|
1514
|
+
r0 = nil
|
1469
1515
|
end
|
1470
1516
|
end
|
1471
1517
|
|
@@ -1482,21 +1528,29 @@ module Treetop
|
|
1482
1528
|
return cached
|
1483
1529
|
end
|
1484
1530
|
|
1485
|
-
i0
|
1486
|
-
|
1487
|
-
|
1488
|
-
|
1531
|
+
i0 = index
|
1532
|
+
if input.index('&', index) == index
|
1533
|
+
r1 = (AndPredicate).new(input, index...(index + 1))
|
1534
|
+
@index += 1
|
1535
|
+
else
|
1536
|
+
terminal_parse_failure('&')
|
1537
|
+
r1 = nil
|
1538
|
+
end
|
1539
|
+
if r1
|
1489
1540
|
r0 = r1
|
1490
|
-
r1.update_nested_results(nr0)
|
1491
1541
|
else
|
1492
|
-
|
1493
|
-
|
1494
|
-
|
1542
|
+
if input.index('!', index) == index
|
1543
|
+
r2 = (NotPredicate).new(input, index...(index + 1))
|
1544
|
+
@index += 1
|
1545
|
+
else
|
1546
|
+
terminal_parse_failure('!')
|
1547
|
+
r2 = nil
|
1548
|
+
end
|
1549
|
+
if r2
|
1495
1550
|
r0 = r2
|
1496
|
-
r2.update_nested_results(nr0)
|
1497
1551
|
else
|
1498
1552
|
self.index = i0
|
1499
|
-
r0 =
|
1553
|
+
r0 = nil
|
1500
1554
|
end
|
1501
1555
|
end
|
1502
1556
|
|
@@ -1513,27 +1567,21 @@ module Treetop
|
|
1513
1567
|
return cached
|
1514
1568
|
end
|
1515
1569
|
|
1516
|
-
i0
|
1570
|
+
i0 = index
|
1517
1571
|
r1 = _nt_terminal
|
1518
|
-
|
1519
|
-
if r1.success?
|
1572
|
+
if r1
|
1520
1573
|
r0 = r1
|
1521
|
-
r1.update_nested_results(nr0)
|
1522
1574
|
else
|
1523
1575
|
r2 = _nt_nonterminal
|
1524
|
-
|
1525
|
-
if r2.success?
|
1576
|
+
if r2
|
1526
1577
|
r0 = r2
|
1527
|
-
r2.update_nested_results(nr0)
|
1528
1578
|
else
|
1529
1579
|
r3 = _nt_parenthesized_expression
|
1530
|
-
|
1531
|
-
if r3.success?
|
1580
|
+
if r3
|
1532
1581
|
r0 = r3
|
1533
|
-
r3.update_nested_results(nr0)
|
1534
1582
|
else
|
1535
1583
|
self.index = i0
|
1536
|
-
r0 =
|
1584
|
+
r0 = nil
|
1537
1585
|
end
|
1538
1586
|
end
|
1539
1587
|
end
|
@@ -1564,42 +1612,54 @@ module Treetop
|
|
1564
1612
|
return cached
|
1565
1613
|
end
|
1566
1614
|
|
1567
|
-
i0, s0
|
1568
|
-
|
1615
|
+
i0, s0 = index, []
|
1616
|
+
if input.index('(', index) == index
|
1617
|
+
r1 = (SyntaxNode).new(input, index...(index + 1))
|
1618
|
+
@index += 1
|
1619
|
+
else
|
1620
|
+
terminal_parse_failure('(')
|
1621
|
+
r1 = nil
|
1622
|
+
end
|
1569
1623
|
s0 << r1
|
1570
|
-
if r1
|
1624
|
+
if r1
|
1571
1625
|
r3 = _nt_space
|
1572
|
-
if r3
|
1626
|
+
if r3
|
1573
1627
|
r2 = r3
|
1574
1628
|
else
|
1575
|
-
r2 = SyntaxNode.new(input, index...index
|
1629
|
+
r2 = SyntaxNode.new(input, index...index)
|
1576
1630
|
end
|
1577
1631
|
s0 << r2
|
1578
|
-
if r2
|
1632
|
+
if r2
|
1579
1633
|
r4 = _nt_parsing_expression
|
1580
1634
|
s0 << r4
|
1581
|
-
if r4
|
1635
|
+
if r4
|
1582
1636
|
r6 = _nt_space
|
1583
|
-
if r6
|
1637
|
+
if r6
|
1584
1638
|
r5 = r6
|
1585
1639
|
else
|
1586
|
-
r5 = SyntaxNode.new(input, index...index
|
1640
|
+
r5 = SyntaxNode.new(input, index...index)
|
1587
1641
|
end
|
1588
1642
|
s0 << r5
|
1589
|
-
if r5
|
1590
|
-
|
1643
|
+
if r5
|
1644
|
+
if input.index(')', index) == index
|
1645
|
+
r7 = (SyntaxNode).new(input, index...(index + 1))
|
1646
|
+
@index += 1
|
1647
|
+
else
|
1648
|
+
terminal_parse_failure(')')
|
1649
|
+
r7 = nil
|
1650
|
+
end
|
1591
1651
|
s0 << r7
|
1592
1652
|
end
|
1593
1653
|
end
|
1594
1654
|
end
|
1595
1655
|
end
|
1596
|
-
if s0.last
|
1656
|
+
if s0.last
|
1597
1657
|
r0 = (ParenthesizedExpression).new(input, i0...index, s0)
|
1598
1658
|
r0.extend(ParenthesizedExpression0)
|
1599
1659
|
r0.extend(ParenthesizedExpression1)
|
1600
1660
|
else
|
1601
1661
|
self.index = i0
|
1602
|
-
r0 =
|
1662
|
+
r0 = nil
|
1603
1663
|
end
|
1604
1664
|
|
1605
1665
|
node_cache[:parenthesized_expression][start_index] = r0
|
@@ -1625,49 +1685,48 @@ module Treetop
|
|
1625
1685
|
return cached
|
1626
1686
|
end
|
1627
1687
|
|
1628
|
-
i0, s0
|
1688
|
+
i0, s0 = index, []
|
1629
1689
|
i1 = index
|
1630
1690
|
r2 = _nt_keyword_inside_grammar
|
1631
|
-
if r2
|
1632
|
-
r1 =
|
1691
|
+
if r2
|
1692
|
+
r1 = nil
|
1633
1693
|
else
|
1634
1694
|
self.index = i1
|
1635
|
-
r1 = SyntaxNode.new(input, index...index
|
1695
|
+
r1 = SyntaxNode.new(input, index...index)
|
1636
1696
|
end
|
1637
1697
|
s0 << r1
|
1638
|
-
if r1
|
1639
|
-
i3, s3
|
1698
|
+
if r1
|
1699
|
+
i3, s3 = index, []
|
1640
1700
|
r4 = _nt_alpha_char
|
1641
1701
|
s3 << r4
|
1642
|
-
if r4
|
1643
|
-
s5,
|
1702
|
+
if r4
|
1703
|
+
s5, i5 = [], index
|
1644
1704
|
loop do
|
1645
1705
|
r6 = _nt_alphanumeric_char
|
1646
|
-
|
1647
|
-
if r6.success?
|
1706
|
+
if r6
|
1648
1707
|
s5 << r6
|
1649
1708
|
else
|
1650
1709
|
break
|
1651
1710
|
end
|
1652
1711
|
end
|
1653
|
-
r5 = SyntaxNode.new(input, i5...index, s5
|
1712
|
+
r5 = SyntaxNode.new(input, i5...index, s5)
|
1654
1713
|
s3 << r5
|
1655
1714
|
end
|
1656
|
-
if s3.last
|
1715
|
+
if s3.last
|
1657
1716
|
r3 = (SyntaxNode).new(input, i3...index, s3)
|
1658
1717
|
r3.extend(Nonterminal0)
|
1659
1718
|
else
|
1660
1719
|
self.index = i3
|
1661
|
-
r3 =
|
1720
|
+
r3 = nil
|
1662
1721
|
end
|
1663
1722
|
s0 << r3
|
1664
1723
|
end
|
1665
|
-
if s0.last
|
1724
|
+
if s0.last
|
1666
1725
|
r0 = (Nonterminal).new(input, i0...index, s0)
|
1667
1726
|
r0.extend(Nonterminal1)
|
1668
1727
|
else
|
1669
1728
|
self.index = i0
|
1670
|
-
r0 =
|
1729
|
+
r0 = nil
|
1671
1730
|
end
|
1672
1731
|
|
1673
1732
|
node_cache[:nonterminal][start_index] = r0
|
@@ -1683,34 +1742,21 @@ module Treetop
|
|
1683
1742
|
return cached
|
1684
1743
|
end
|
1685
1744
|
|
1686
|
-
i0
|
1687
|
-
r1 =
|
1688
|
-
|
1689
|
-
if r1.success?
|
1745
|
+
i0 = index
|
1746
|
+
r1 = _nt_quoted_string
|
1747
|
+
if r1
|
1690
1748
|
r0 = r1
|
1691
|
-
r1.update_nested_results(nr0)
|
1692
1749
|
else
|
1693
|
-
r2 =
|
1694
|
-
|
1695
|
-
if r2.success?
|
1750
|
+
r2 = _nt_character_class
|
1751
|
+
if r2
|
1696
1752
|
r0 = r2
|
1697
|
-
r2.update_nested_results(nr0)
|
1698
1753
|
else
|
1699
|
-
r3 =
|
1700
|
-
|
1701
|
-
if r3.success?
|
1754
|
+
r3 = _nt_anything_symbol
|
1755
|
+
if r3
|
1702
1756
|
r0 = r3
|
1703
|
-
r3.update_nested_results(nr0)
|
1704
1757
|
else
|
1705
|
-
|
1706
|
-
|
1707
|
-
if r4.success?
|
1708
|
-
r0 = r4
|
1709
|
-
r4.update_nested_results(nr0)
|
1710
|
-
else
|
1711
|
-
self.index = i0
|
1712
|
-
r0 = ParseFailure.new(input, i0, nr0)
|
1713
|
-
end
|
1758
|
+
self.index = i0
|
1759
|
+
r0 = nil
|
1714
1760
|
end
|
1715
1761
|
end
|
1716
1762
|
end
|
@@ -1720,10 +1766,49 @@ module Treetop
|
|
1720
1766
|
return r0
|
1721
1767
|
end
|
1722
1768
|
|
1769
|
+
module QuotedString0
|
1770
|
+
def string
|
1771
|
+
super.text_value
|
1772
|
+
end
|
1773
|
+
end
|
1774
|
+
|
1775
|
+
def _nt_quoted_string
|
1776
|
+
start_index = index
|
1777
|
+
cached = node_cache[:quoted_string][index]
|
1778
|
+
if cached
|
1779
|
+
@index = cached.interval.end
|
1780
|
+
return cached
|
1781
|
+
end
|
1782
|
+
|
1783
|
+
i0 = index
|
1784
|
+
r1 = _nt_single_quoted_string
|
1785
|
+
if r1
|
1786
|
+
r0 = r1
|
1787
|
+
r0.extend(QuotedString0)
|
1788
|
+
else
|
1789
|
+
r2 = _nt_double_quoted_string
|
1790
|
+
if r2
|
1791
|
+
r0 = r2
|
1792
|
+
r0.extend(QuotedString0)
|
1793
|
+
else
|
1794
|
+
self.index = i0
|
1795
|
+
r0 = nil
|
1796
|
+
end
|
1797
|
+
end
|
1798
|
+
|
1799
|
+
node_cache[:quoted_string][start_index] = r0
|
1800
|
+
|
1801
|
+
return r0
|
1802
|
+
end
|
1803
|
+
|
1723
1804
|
module DoubleQuotedString0
|
1724
1805
|
end
|
1725
1806
|
|
1726
1807
|
module DoubleQuotedString1
|
1808
|
+
def string
|
1809
|
+
elements[1]
|
1810
|
+
end
|
1811
|
+
|
1727
1812
|
end
|
1728
1813
|
|
1729
1814
|
def _nt_double_quoted_string
|
@@ -1734,76 +1819,105 @@ module Treetop
|
|
1734
1819
|
return cached
|
1735
1820
|
end
|
1736
1821
|
|
1737
|
-
i0, s0
|
1738
|
-
|
1822
|
+
i0, s0 = index, []
|
1823
|
+
if input.index('"', index) == index
|
1824
|
+
r1 = (SyntaxNode).new(input, index...(index + 1))
|
1825
|
+
@index += 1
|
1826
|
+
else
|
1827
|
+
terminal_parse_failure('"')
|
1828
|
+
r1 = nil
|
1829
|
+
end
|
1739
1830
|
s0 << r1
|
1740
|
-
if r1
|
1741
|
-
s2,
|
1831
|
+
if r1
|
1832
|
+
s2, i2 = [], index
|
1742
1833
|
loop do
|
1743
|
-
i3, s3
|
1834
|
+
i3, s3 = index, []
|
1744
1835
|
i4 = index
|
1745
|
-
|
1746
|
-
|
1747
|
-
|
1836
|
+
if input.index('"', index) == index
|
1837
|
+
r5 = (SyntaxNode).new(input, index...(index + 1))
|
1838
|
+
@index += 1
|
1839
|
+
else
|
1840
|
+
terminal_parse_failure('"')
|
1841
|
+
r5 = nil
|
1842
|
+
end
|
1843
|
+
if r5
|
1844
|
+
r4 = nil
|
1748
1845
|
else
|
1749
1846
|
self.index = i4
|
1750
|
-
r4 = SyntaxNode.new(input, index...index
|
1847
|
+
r4 = SyntaxNode.new(input, index...index)
|
1751
1848
|
end
|
1752
1849
|
s3 << r4
|
1753
|
-
if r4
|
1754
|
-
i6
|
1755
|
-
|
1756
|
-
|
1757
|
-
|
1850
|
+
if r4
|
1851
|
+
i6 = index
|
1852
|
+
if input.index("\\\\", index) == index
|
1853
|
+
r7 = (SyntaxNode).new(input, index...(index + 2))
|
1854
|
+
@index += 2
|
1855
|
+
else
|
1856
|
+
terminal_parse_failure("\\\\")
|
1857
|
+
r7 = nil
|
1858
|
+
end
|
1859
|
+
if r7
|
1758
1860
|
r6 = r7
|
1759
|
-
r7.update_nested_results(nr6)
|
1760
1861
|
else
|
1761
|
-
|
1762
|
-
|
1763
|
-
|
1862
|
+
if input.index('\"', index) == index
|
1863
|
+
r8 = (SyntaxNode).new(input, index...(index + 2))
|
1864
|
+
@index += 2
|
1865
|
+
else
|
1866
|
+
terminal_parse_failure('\"')
|
1867
|
+
r8 = nil
|
1868
|
+
end
|
1869
|
+
if r8
|
1764
1870
|
r6 = r8
|
1765
|
-
r8.update_nested_results(nr6)
|
1766
1871
|
else
|
1767
|
-
|
1768
|
-
|
1769
|
-
|
1872
|
+
if index < input_length
|
1873
|
+
r9 = (SyntaxNode).new(input, index...(index + 1))
|
1874
|
+
@index += 1
|
1875
|
+
else
|
1876
|
+
terminal_parse_failure("any character")
|
1877
|
+
r9 = nil
|
1878
|
+
end
|
1879
|
+
if r9
|
1770
1880
|
r6 = r9
|
1771
|
-
r9.update_nested_results(nr6)
|
1772
1881
|
else
|
1773
1882
|
self.index = i6
|
1774
|
-
r6 =
|
1883
|
+
r6 = nil
|
1775
1884
|
end
|
1776
1885
|
end
|
1777
1886
|
end
|
1778
1887
|
s3 << r6
|
1779
1888
|
end
|
1780
|
-
if s3.last
|
1889
|
+
if s3.last
|
1781
1890
|
r3 = (SyntaxNode).new(input, i3...index, s3)
|
1782
1891
|
r3.extend(DoubleQuotedString0)
|
1783
1892
|
else
|
1784
1893
|
self.index = i3
|
1785
|
-
r3 =
|
1894
|
+
r3 = nil
|
1786
1895
|
end
|
1787
|
-
|
1788
|
-
if r3.success?
|
1896
|
+
if r3
|
1789
1897
|
s2 << r3
|
1790
1898
|
else
|
1791
1899
|
break
|
1792
1900
|
end
|
1793
1901
|
end
|
1794
|
-
r2 = SyntaxNode.new(input, i2...index, s2
|
1902
|
+
r2 = SyntaxNode.new(input, i2...index, s2)
|
1795
1903
|
s0 << r2
|
1796
|
-
if r2
|
1797
|
-
|
1904
|
+
if r2
|
1905
|
+
if input.index('"', index) == index
|
1906
|
+
r10 = (SyntaxNode).new(input, index...(index + 1))
|
1907
|
+
@index += 1
|
1908
|
+
else
|
1909
|
+
terminal_parse_failure('"')
|
1910
|
+
r10 = nil
|
1911
|
+
end
|
1798
1912
|
s0 << r10
|
1799
1913
|
end
|
1800
1914
|
end
|
1801
|
-
if s0.last
|
1915
|
+
if s0.last
|
1802
1916
|
r0 = (Terminal).new(input, i0...index, s0)
|
1803
1917
|
r0.extend(DoubleQuotedString1)
|
1804
1918
|
else
|
1805
1919
|
self.index = i0
|
1806
|
-
r0 =
|
1920
|
+
r0 = nil
|
1807
1921
|
end
|
1808
1922
|
|
1809
1923
|
node_cache[:double_quoted_string][start_index] = r0
|
@@ -1815,6 +1929,10 @@ module Treetop
|
|
1815
1929
|
end
|
1816
1930
|
|
1817
1931
|
module SingleQuotedString1
|
1932
|
+
def string
|
1933
|
+
elements[1]
|
1934
|
+
end
|
1935
|
+
|
1818
1936
|
end
|
1819
1937
|
|
1820
1938
|
def _nt_single_quoted_string
|
@@ -1825,76 +1943,105 @@ module Treetop
|
|
1825
1943
|
return cached
|
1826
1944
|
end
|
1827
1945
|
|
1828
|
-
i0, s0
|
1829
|
-
|
1946
|
+
i0, s0 = index, []
|
1947
|
+
if input.index("'", index) == index
|
1948
|
+
r1 = (SyntaxNode).new(input, index...(index + 1))
|
1949
|
+
@index += 1
|
1950
|
+
else
|
1951
|
+
terminal_parse_failure("'")
|
1952
|
+
r1 = nil
|
1953
|
+
end
|
1830
1954
|
s0 << r1
|
1831
|
-
if r1
|
1832
|
-
s2,
|
1955
|
+
if r1
|
1956
|
+
s2, i2 = [], index
|
1833
1957
|
loop do
|
1834
|
-
i3, s3
|
1958
|
+
i3, s3 = index, []
|
1835
1959
|
i4 = index
|
1836
|
-
|
1837
|
-
|
1838
|
-
|
1960
|
+
if input.index("'", index) == index
|
1961
|
+
r5 = (SyntaxNode).new(input, index...(index + 1))
|
1962
|
+
@index += 1
|
1963
|
+
else
|
1964
|
+
terminal_parse_failure("'")
|
1965
|
+
r5 = nil
|
1966
|
+
end
|
1967
|
+
if r5
|
1968
|
+
r4 = nil
|
1839
1969
|
else
|
1840
1970
|
self.index = i4
|
1841
|
-
r4 = SyntaxNode.new(input, index...index
|
1971
|
+
r4 = SyntaxNode.new(input, index...index)
|
1842
1972
|
end
|
1843
1973
|
s3 << r4
|
1844
|
-
if r4
|
1845
|
-
i6
|
1846
|
-
|
1847
|
-
|
1848
|
-
|
1974
|
+
if r4
|
1975
|
+
i6 = index
|
1976
|
+
if input.index("\\\\", index) == index
|
1977
|
+
r7 = (SyntaxNode).new(input, index...(index + 2))
|
1978
|
+
@index += 2
|
1979
|
+
else
|
1980
|
+
terminal_parse_failure("\\\\")
|
1981
|
+
r7 = nil
|
1982
|
+
end
|
1983
|
+
if r7
|
1849
1984
|
r6 = r7
|
1850
|
-
r7.update_nested_results(nr6)
|
1851
1985
|
else
|
1852
|
-
|
1853
|
-
|
1854
|
-
|
1986
|
+
if input.index("\\'", index) == index
|
1987
|
+
r8 = (SyntaxNode).new(input, index...(index + 2))
|
1988
|
+
@index += 2
|
1989
|
+
else
|
1990
|
+
terminal_parse_failure("\\'")
|
1991
|
+
r8 = nil
|
1992
|
+
end
|
1993
|
+
if r8
|
1855
1994
|
r6 = r8
|
1856
|
-
r8.update_nested_results(nr6)
|
1857
1995
|
else
|
1858
|
-
|
1859
|
-
|
1860
|
-
|
1996
|
+
if index < input_length
|
1997
|
+
r9 = (SyntaxNode).new(input, index...(index + 1))
|
1998
|
+
@index += 1
|
1999
|
+
else
|
2000
|
+
terminal_parse_failure("any character")
|
2001
|
+
r9 = nil
|
2002
|
+
end
|
2003
|
+
if r9
|
1861
2004
|
r6 = r9
|
1862
|
-
r9.update_nested_results(nr6)
|
1863
2005
|
else
|
1864
2006
|
self.index = i6
|
1865
|
-
r6 =
|
2007
|
+
r6 = nil
|
1866
2008
|
end
|
1867
2009
|
end
|
1868
2010
|
end
|
1869
2011
|
s3 << r6
|
1870
2012
|
end
|
1871
|
-
if s3.last
|
2013
|
+
if s3.last
|
1872
2014
|
r3 = (SyntaxNode).new(input, i3...index, s3)
|
1873
2015
|
r3.extend(SingleQuotedString0)
|
1874
2016
|
else
|
1875
2017
|
self.index = i3
|
1876
|
-
r3 =
|
2018
|
+
r3 = nil
|
1877
2019
|
end
|
1878
|
-
|
1879
|
-
if r3.success?
|
2020
|
+
if r3
|
1880
2021
|
s2 << r3
|
1881
2022
|
else
|
1882
2023
|
break
|
1883
2024
|
end
|
1884
2025
|
end
|
1885
|
-
r2 = SyntaxNode.new(input, i2...index, s2
|
2026
|
+
r2 = SyntaxNode.new(input, i2...index, s2)
|
1886
2027
|
s0 << r2
|
1887
|
-
if r2
|
1888
|
-
|
2028
|
+
if r2
|
2029
|
+
if input.index("'", index) == index
|
2030
|
+
r10 = (SyntaxNode).new(input, index...(index + 1))
|
2031
|
+
@index += 1
|
2032
|
+
else
|
2033
|
+
terminal_parse_failure("'")
|
2034
|
+
r10 = nil
|
2035
|
+
end
|
1889
2036
|
s0 << r10
|
1890
2037
|
end
|
1891
2038
|
end
|
1892
|
-
if s0.last
|
2039
|
+
if s0.last
|
1893
2040
|
r0 = (Terminal).new(input, i0...index, s0)
|
1894
2041
|
r0.extend(SingleQuotedString1)
|
1895
2042
|
else
|
1896
2043
|
self.index = i0
|
1897
|
-
r0 =
|
2044
|
+
r0 = nil
|
1898
2045
|
end
|
1899
2046
|
|
1900
2047
|
node_cache[:single_quoted_string][start_index] = r0
|
@@ -1906,6 +2053,16 @@ module Treetop
|
|
1906
2053
|
end
|
1907
2054
|
|
1908
2055
|
module CharacterClass1
|
2056
|
+
def characters
|
2057
|
+
elements[1]
|
2058
|
+
end
|
2059
|
+
|
2060
|
+
end
|
2061
|
+
|
2062
|
+
module CharacterClass2
|
2063
|
+
def characters
|
2064
|
+
super.text_value
|
2065
|
+
end
|
1909
2066
|
end
|
1910
2067
|
|
1911
2068
|
def _nt_character_class
|
@@ -1916,51 +2073,70 @@ module Treetop
|
|
1916
2073
|
return cached
|
1917
2074
|
end
|
1918
2075
|
|
1919
|
-
i0, s0
|
1920
|
-
|
2076
|
+
i0, s0 = index, []
|
2077
|
+
if input.index('[', index) == index
|
2078
|
+
r1 = (SyntaxNode).new(input, index...(index + 1))
|
2079
|
+
@index += 1
|
2080
|
+
else
|
2081
|
+
terminal_parse_failure('[')
|
2082
|
+
r1 = nil
|
2083
|
+
end
|
1921
2084
|
s0 << r1
|
1922
|
-
if r1
|
1923
|
-
s2,
|
2085
|
+
if r1
|
2086
|
+
s2, i2 = [], index
|
1924
2087
|
loop do
|
1925
|
-
i3, s3
|
2088
|
+
i3, s3 = index, []
|
1926
2089
|
i4 = index
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
2090
|
+
if input.index(']', index) == index
|
2091
|
+
r5 = (SyntaxNode).new(input, index...(index + 1))
|
2092
|
+
@index += 1
|
2093
|
+
else
|
2094
|
+
terminal_parse_failure(']')
|
2095
|
+
r5 = nil
|
2096
|
+
end
|
2097
|
+
if r5
|
2098
|
+
r4 = nil
|
1930
2099
|
else
|
1931
2100
|
self.index = i4
|
1932
|
-
r4 = SyntaxNode.new(input, index...index
|
2101
|
+
r4 = SyntaxNode.new(input, index...index)
|
1933
2102
|
end
|
1934
2103
|
s3 << r4
|
1935
|
-
if r4
|
1936
|
-
i6
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
2104
|
+
if r4
|
2105
|
+
i6 = index
|
2106
|
+
if input.index('\]', index) == index
|
2107
|
+
r7 = (SyntaxNode).new(input, index...(index + 2))
|
2108
|
+
@index += 2
|
2109
|
+
else
|
2110
|
+
terminal_parse_failure('\]')
|
2111
|
+
r7 = nil
|
2112
|
+
end
|
2113
|
+
if r7
|
1940
2114
|
r6 = r7
|
1941
|
-
r7.update_nested_results(nr6)
|
1942
2115
|
else
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
2116
|
+
if index < input_length
|
2117
|
+
r8 = (SyntaxNode).new(input, index...(index + 1))
|
2118
|
+
@index += 1
|
2119
|
+
else
|
2120
|
+
terminal_parse_failure("any character")
|
2121
|
+
r8 = nil
|
2122
|
+
end
|
2123
|
+
if r8
|
1946
2124
|
r6 = r8
|
1947
|
-
r8.update_nested_results(nr6)
|
1948
2125
|
else
|
1949
2126
|
self.index = i6
|
1950
|
-
r6 =
|
2127
|
+
r6 = nil
|
1951
2128
|
end
|
1952
2129
|
end
|
1953
2130
|
s3 << r6
|
1954
2131
|
end
|
1955
|
-
if s3.last
|
2132
|
+
if s3.last
|
1956
2133
|
r3 = (SyntaxNode).new(input, i3...index, s3)
|
1957
2134
|
r3.extend(CharacterClass0)
|
1958
2135
|
else
|
1959
2136
|
self.index = i3
|
1960
|
-
r3 =
|
2137
|
+
r3 = nil
|
1961
2138
|
end
|
1962
|
-
|
1963
|
-
if r3.success?
|
2139
|
+
if r3
|
1964
2140
|
s2 << r3
|
1965
2141
|
else
|
1966
2142
|
break
|
@@ -1968,22 +2144,29 @@ module Treetop
|
|
1968
2144
|
end
|
1969
2145
|
if s2.empty?
|
1970
2146
|
self.index = i2
|
1971
|
-
r2 =
|
2147
|
+
r2 = nil
|
1972
2148
|
else
|
1973
|
-
r2 = SyntaxNode.new(input, i2...index, s2
|
2149
|
+
r2 = SyntaxNode.new(input, i2...index, s2)
|
1974
2150
|
end
|
1975
2151
|
s0 << r2
|
1976
|
-
if r2
|
1977
|
-
|
2152
|
+
if r2
|
2153
|
+
if input.index(']', index) == index
|
2154
|
+
r9 = (SyntaxNode).new(input, index...(index + 1))
|
2155
|
+
@index += 1
|
2156
|
+
else
|
2157
|
+
terminal_parse_failure(']')
|
2158
|
+
r9 = nil
|
2159
|
+
end
|
1978
2160
|
s0 << r9
|
1979
2161
|
end
|
1980
2162
|
end
|
1981
|
-
if s0.last
|
2163
|
+
if s0.last
|
1982
2164
|
r0 = (CharacterClass).new(input, i0...index, s0)
|
1983
2165
|
r0.extend(CharacterClass1)
|
2166
|
+
r0.extend(CharacterClass2)
|
1984
2167
|
else
|
1985
2168
|
self.index = i0
|
1986
|
-
r0 =
|
2169
|
+
r0 = nil
|
1987
2170
|
end
|
1988
2171
|
|
1989
2172
|
node_cache[:character_class][start_index] = r0
|
@@ -1999,7 +2182,13 @@ module Treetop
|
|
1999
2182
|
return cached
|
2000
2183
|
end
|
2001
2184
|
|
2002
|
-
|
2185
|
+
if input.index('.', index) == index
|
2186
|
+
r0 = (AnythingSymbol).new(input, index...(index + 1))
|
2187
|
+
@index += 1
|
2188
|
+
else
|
2189
|
+
terminal_parse_failure('.')
|
2190
|
+
r0 = nil
|
2191
|
+
end
|
2003
2192
|
|
2004
2193
|
node_cache[:anything_symbol][start_index] = r0
|
2005
2194
|
|
@@ -2036,39 +2225,56 @@ module Treetop
|
|
2036
2225
|
return cached
|
2037
2226
|
end
|
2038
2227
|
|
2039
|
-
i0
|
2040
|
-
i1, s1
|
2228
|
+
i0 = index
|
2229
|
+
i1, s1 = index, []
|
2041
2230
|
r2 = _nt_space
|
2042
2231
|
s1 << r2
|
2043
|
-
if r2
|
2044
|
-
|
2232
|
+
if r2
|
2233
|
+
if input.index('<', index) == index
|
2234
|
+
r3 = (SyntaxNode).new(input, index...(index + 1))
|
2235
|
+
@index += 1
|
2236
|
+
else
|
2237
|
+
terminal_parse_failure('<')
|
2238
|
+
r3 = nil
|
2239
|
+
end
|
2045
2240
|
s1 << r3
|
2046
|
-
if r3
|
2047
|
-
s4,
|
2241
|
+
if r3
|
2242
|
+
s4, i4 = [], index
|
2048
2243
|
loop do
|
2049
|
-
i5, s5
|
2244
|
+
i5, s5 = index, []
|
2050
2245
|
i6 = index
|
2051
|
-
|
2052
|
-
|
2053
|
-
|
2246
|
+
if input.index('>', index) == index
|
2247
|
+
r7 = (SyntaxNode).new(input, index...(index + 1))
|
2248
|
+
@index += 1
|
2249
|
+
else
|
2250
|
+
terminal_parse_failure('>')
|
2251
|
+
r7 = nil
|
2252
|
+
end
|
2253
|
+
if r7
|
2254
|
+
r6 = nil
|
2054
2255
|
else
|
2055
2256
|
self.index = i6
|
2056
|
-
r6 = SyntaxNode.new(input, index...index
|
2257
|
+
r6 = SyntaxNode.new(input, index...index)
|
2057
2258
|
end
|
2058
2259
|
s5 << r6
|
2059
|
-
if r6
|
2060
|
-
|
2260
|
+
if r6
|
2261
|
+
if index < input_length
|
2262
|
+
r8 = (SyntaxNode).new(input, index...(index + 1))
|
2263
|
+
@index += 1
|
2264
|
+
else
|
2265
|
+
terminal_parse_failure("any character")
|
2266
|
+
r8 = nil
|
2267
|
+
end
|
2061
2268
|
s5 << r8
|
2062
2269
|
end
|
2063
|
-
if s5.last
|
2270
|
+
if s5.last
|
2064
2271
|
r5 = (SyntaxNode).new(input, i5...index, s5)
|
2065
2272
|
r5.extend(NodeClassExpression0)
|
2066
2273
|
else
|
2067
2274
|
self.index = i5
|
2068
|
-
r5 =
|
2275
|
+
r5 = nil
|
2069
2276
|
end
|
2070
|
-
|
2071
|
-
if r5.success?
|
2277
|
+
if r5
|
2072
2278
|
s4 << r5
|
2073
2279
|
else
|
2074
2280
|
break
|
@@ -2076,38 +2282,47 @@ module Treetop
|
|
2076
2282
|
end
|
2077
2283
|
if s4.empty?
|
2078
2284
|
self.index = i4
|
2079
|
-
r4 =
|
2285
|
+
r4 = nil
|
2080
2286
|
else
|
2081
|
-
r4 = SyntaxNode.new(input, i4...index, s4
|
2287
|
+
r4 = SyntaxNode.new(input, i4...index, s4)
|
2082
2288
|
end
|
2083
2289
|
s1 << r4
|
2084
|
-
if r4
|
2085
|
-
|
2290
|
+
if r4
|
2291
|
+
if input.index('>', index) == index
|
2292
|
+
r9 = (SyntaxNode).new(input, index...(index + 1))
|
2293
|
+
@index += 1
|
2294
|
+
else
|
2295
|
+
terminal_parse_failure('>')
|
2296
|
+
r9 = nil
|
2297
|
+
end
|
2086
2298
|
s1 << r9
|
2087
2299
|
end
|
2088
2300
|
end
|
2089
2301
|
end
|
2090
|
-
if s1.last
|
2302
|
+
if s1.last
|
2091
2303
|
r1 = (SyntaxNode).new(input, i1...index, s1)
|
2092
2304
|
r1.extend(NodeClassExpression1)
|
2093
2305
|
r1.extend(NodeClassExpression2)
|
2094
2306
|
else
|
2095
2307
|
self.index = i1
|
2096
|
-
r1 =
|
2308
|
+
r1 = nil
|
2097
2309
|
end
|
2098
|
-
|
2099
|
-
if r1.success?
|
2310
|
+
if r1
|
2100
2311
|
r0 = r1
|
2101
|
-
r1.update_nested_results(nr0)
|
2102
2312
|
else
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
2313
|
+
if input.index('', index) == index
|
2314
|
+
r10 = (SyntaxNode).new(input, index...(index + 0))
|
2315
|
+
r10.extend(NodeClassExpression3)
|
2316
|
+
@index += 0
|
2317
|
+
else
|
2318
|
+
terminal_parse_failure('')
|
2319
|
+
r10 = nil
|
2320
|
+
end
|
2321
|
+
if r10
|
2106
2322
|
r0 = r10
|
2107
|
-
r10.update_nested_results(nr0)
|
2108
2323
|
else
|
2109
2324
|
self.index = i0
|
2110
|
-
r0 =
|
2325
|
+
r0 = nil
|
2111
2326
|
end
|
2112
2327
|
end
|
2113
2328
|
|
@@ -2158,35 +2373,38 @@ module Treetop
|
|
2158
2373
|
return cached
|
2159
2374
|
end
|
2160
2375
|
|
2161
|
-
i0
|
2162
|
-
i1, s1
|
2376
|
+
i0 = index
|
2377
|
+
i1, s1 = index, []
|
2163
2378
|
r2 = _nt_space
|
2164
2379
|
s1 << r2
|
2165
|
-
if r2
|
2380
|
+
if r2
|
2166
2381
|
r3 = _nt_inline_module
|
2167
2382
|
s1 << r3
|
2168
2383
|
end
|
2169
|
-
if s1.last
|
2384
|
+
if s1.last
|
2170
2385
|
r1 = (SyntaxNode).new(input, i1...index, s1)
|
2171
2386
|
r1.extend(TrailingInlineModule0)
|
2172
2387
|
r1.extend(TrailingInlineModule1)
|
2173
2388
|
else
|
2174
2389
|
self.index = i1
|
2175
|
-
r1 =
|
2390
|
+
r1 = nil
|
2176
2391
|
end
|
2177
|
-
|
2178
|
-
if r1.success?
|
2392
|
+
if r1
|
2179
2393
|
r0 = r1
|
2180
|
-
r1.update_nested_results(nr0)
|
2181
2394
|
else
|
2182
|
-
|
2183
|
-
|
2184
|
-
|
2395
|
+
if input.index('', index) == index
|
2396
|
+
r4 = (SyntaxNode).new(input, index...(index + 0))
|
2397
|
+
r4.extend(TrailingInlineModule2)
|
2398
|
+
@index += 0
|
2399
|
+
else
|
2400
|
+
terminal_parse_failure('')
|
2401
|
+
r4 = nil
|
2402
|
+
end
|
2403
|
+
if r4
|
2185
2404
|
r0 = r4
|
2186
|
-
r4.update_nested_results(nr0)
|
2187
2405
|
else
|
2188
2406
|
self.index = i0
|
2189
|
-
r0 =
|
2407
|
+
r0 = nil
|
2190
2408
|
end
|
2191
2409
|
end
|
2192
2410
|
|
@@ -2209,69 +2427,87 @@ module Treetop
|
|
2209
2427
|
return cached
|
2210
2428
|
end
|
2211
2429
|
|
2212
|
-
i0, s0
|
2213
|
-
|
2430
|
+
i0, s0 = index, []
|
2431
|
+
if input.index('{', index) == index
|
2432
|
+
r1 = (SyntaxNode).new(input, index...(index + 1))
|
2433
|
+
@index += 1
|
2434
|
+
else
|
2435
|
+
terminal_parse_failure('{')
|
2436
|
+
r1 = nil
|
2437
|
+
end
|
2214
2438
|
s0 << r1
|
2215
|
-
if r1
|
2216
|
-
s2,
|
2439
|
+
if r1
|
2440
|
+
s2, i2 = [], index
|
2217
2441
|
loop do
|
2218
|
-
i3
|
2442
|
+
i3 = index
|
2219
2443
|
r4 = _nt_inline_module
|
2220
|
-
|
2221
|
-
if r4.success?
|
2444
|
+
if r4
|
2222
2445
|
r3 = r4
|
2223
|
-
r4.update_nested_results(nr3)
|
2224
2446
|
else
|
2225
|
-
i5, s5
|
2447
|
+
i5, s5 = index, []
|
2226
2448
|
i6 = index
|
2227
|
-
|
2228
|
-
|
2229
|
-
|
2449
|
+
if input.index(/[{}]/, index) == index
|
2450
|
+
r7 = (SyntaxNode).new(input, index...(index + 1))
|
2451
|
+
@index += 1
|
2452
|
+
else
|
2453
|
+
r7 = nil
|
2454
|
+
end
|
2455
|
+
if r7
|
2456
|
+
r6 = nil
|
2230
2457
|
else
|
2231
2458
|
self.index = i6
|
2232
|
-
r6 = SyntaxNode.new(input, index...index
|
2459
|
+
r6 = SyntaxNode.new(input, index...index)
|
2233
2460
|
end
|
2234
2461
|
s5 << r6
|
2235
|
-
if r6
|
2236
|
-
|
2462
|
+
if r6
|
2463
|
+
if index < input_length
|
2464
|
+
r8 = (SyntaxNode).new(input, index...(index + 1))
|
2465
|
+
@index += 1
|
2466
|
+
else
|
2467
|
+
terminal_parse_failure("any character")
|
2468
|
+
r8 = nil
|
2469
|
+
end
|
2237
2470
|
s5 << r8
|
2238
2471
|
end
|
2239
|
-
if s5.last
|
2472
|
+
if s5.last
|
2240
2473
|
r5 = (SyntaxNode).new(input, i5...index, s5)
|
2241
2474
|
r5.extend(InlineModule0)
|
2242
2475
|
else
|
2243
2476
|
self.index = i5
|
2244
|
-
r5 =
|
2477
|
+
r5 = nil
|
2245
2478
|
end
|
2246
|
-
|
2247
|
-
if r5.success?
|
2479
|
+
if r5
|
2248
2480
|
r3 = r5
|
2249
|
-
r5.update_nested_results(nr3)
|
2250
2481
|
else
|
2251
2482
|
self.index = i3
|
2252
|
-
r3 =
|
2483
|
+
r3 = nil
|
2253
2484
|
end
|
2254
2485
|
end
|
2255
|
-
|
2256
|
-
if r3.success?
|
2486
|
+
if r3
|
2257
2487
|
s2 << r3
|
2258
2488
|
else
|
2259
2489
|
break
|
2260
2490
|
end
|
2261
2491
|
end
|
2262
|
-
r2 = SyntaxNode.new(input, i2...index, s2
|
2492
|
+
r2 = SyntaxNode.new(input, i2...index, s2)
|
2263
2493
|
s0 << r2
|
2264
|
-
if r2
|
2265
|
-
|
2494
|
+
if r2
|
2495
|
+
if input.index('}', index) == index
|
2496
|
+
r9 = (SyntaxNode).new(input, index...(index + 1))
|
2497
|
+
@index += 1
|
2498
|
+
else
|
2499
|
+
terminal_parse_failure('}')
|
2500
|
+
r9 = nil
|
2501
|
+
end
|
2266
2502
|
s0 << r9
|
2267
2503
|
end
|
2268
2504
|
end
|
2269
|
-
if s0.last
|
2505
|
+
if s0.last
|
2270
2506
|
r0 = (InlineModule).new(input, i0...index, s0)
|
2271
2507
|
r0.extend(InlineModule1)
|
2272
2508
|
else
|
2273
2509
|
self.index = i0
|
2274
|
-
r0 =
|
2510
|
+
r0 = nil
|
2275
2511
|
end
|
2276
2512
|
|
2277
2513
|
node_cache[:inline_module][start_index] = r0
|
@@ -2290,42 +2526,50 @@ module Treetop
|
|
2290
2526
|
return cached
|
2291
2527
|
end
|
2292
2528
|
|
2293
|
-
i0, s0
|
2294
|
-
i1
|
2295
|
-
|
2296
|
-
|
2297
|
-
|
2529
|
+
i0, s0 = index, []
|
2530
|
+
i1 = index
|
2531
|
+
if input.index('rule', index) == index
|
2532
|
+
r2 = (SyntaxNode).new(input, index...(index + 4))
|
2533
|
+
@index += 4
|
2534
|
+
else
|
2535
|
+
terminal_parse_failure('rule')
|
2536
|
+
r2 = nil
|
2537
|
+
end
|
2538
|
+
if r2
|
2298
2539
|
r1 = r2
|
2299
|
-
r2.update_nested_results(nr1)
|
2300
2540
|
else
|
2301
|
-
|
2302
|
-
|
2303
|
-
|
2541
|
+
if input.index('end', index) == index
|
2542
|
+
r3 = (SyntaxNode).new(input, index...(index + 3))
|
2543
|
+
@index += 3
|
2544
|
+
else
|
2545
|
+
terminal_parse_failure('end')
|
2546
|
+
r3 = nil
|
2547
|
+
end
|
2548
|
+
if r3
|
2304
2549
|
r1 = r3
|
2305
|
-
r3.update_nested_results(nr1)
|
2306
2550
|
else
|
2307
2551
|
self.index = i1
|
2308
|
-
r1 =
|
2552
|
+
r1 = nil
|
2309
2553
|
end
|
2310
2554
|
end
|
2311
2555
|
s0 << r1
|
2312
|
-
if r1
|
2556
|
+
if r1
|
2313
2557
|
i4 = index
|
2314
2558
|
r5 = _nt_non_space_char
|
2315
|
-
if r5
|
2316
|
-
r4 =
|
2559
|
+
if r5
|
2560
|
+
r4 = nil
|
2317
2561
|
else
|
2318
2562
|
self.index = i4
|
2319
|
-
r4 = SyntaxNode.new(input, index...index
|
2563
|
+
r4 = SyntaxNode.new(input, index...index)
|
2320
2564
|
end
|
2321
2565
|
s0 << r4
|
2322
2566
|
end
|
2323
|
-
if s0.last
|
2567
|
+
if s0.last
|
2324
2568
|
r0 = (SyntaxNode).new(input, i0...index, s0)
|
2325
2569
|
r0.extend(KeywordInsideGrammar0)
|
2326
2570
|
else
|
2327
2571
|
self.index = i0
|
2328
|
-
r0 =
|
2572
|
+
r0 = nil
|
2329
2573
|
end
|
2330
2574
|
|
2331
2575
|
node_cache[:keyword_inside_grammar][start_index] = r0
|
@@ -2344,26 +2588,32 @@ module Treetop
|
|
2344
2588
|
return cached
|
2345
2589
|
end
|
2346
2590
|
|
2347
|
-
i0, s0
|
2591
|
+
i0, s0 = index, []
|
2348
2592
|
i1 = index
|
2349
2593
|
r2 = _nt_space
|
2350
|
-
if r2
|
2351
|
-
r1 =
|
2594
|
+
if r2
|
2595
|
+
r1 = nil
|
2352
2596
|
else
|
2353
2597
|
self.index = i1
|
2354
|
-
r1 = SyntaxNode.new(input, index...index
|
2598
|
+
r1 = SyntaxNode.new(input, index...index)
|
2355
2599
|
end
|
2356
2600
|
s0 << r1
|
2357
|
-
if r1
|
2358
|
-
|
2601
|
+
if r1
|
2602
|
+
if index < input_length
|
2603
|
+
r3 = (SyntaxNode).new(input, index...(index + 1))
|
2604
|
+
@index += 1
|
2605
|
+
else
|
2606
|
+
terminal_parse_failure("any character")
|
2607
|
+
r3 = nil
|
2608
|
+
end
|
2359
2609
|
s0 << r3
|
2360
2610
|
end
|
2361
|
-
if s0.last
|
2611
|
+
if s0.last
|
2362
2612
|
r0 = (SyntaxNode).new(input, i0...index, s0)
|
2363
2613
|
r0.extend(NonSpaceChar0)
|
2364
2614
|
else
|
2365
2615
|
self.index = i0
|
2366
|
-
r0 =
|
2616
|
+
r0 = nil
|
2367
2617
|
end
|
2368
2618
|
|
2369
2619
|
node_cache[:non_space_char][start_index] = r0
|
@@ -2379,7 +2629,12 @@ module Treetop
|
|
2379
2629
|
return cached
|
2380
2630
|
end
|
2381
2631
|
|
2382
|
-
|
2632
|
+
if input.index(/[A-Za-z_]/, index) == index
|
2633
|
+
r0 = (SyntaxNode).new(input, index...(index + 1))
|
2634
|
+
@index += 1
|
2635
|
+
else
|
2636
|
+
r0 = nil
|
2637
|
+
end
|
2383
2638
|
|
2384
2639
|
node_cache[:alpha_char][start_index] = r0
|
2385
2640
|
|
@@ -2394,21 +2649,22 @@ module Treetop
|
|
2394
2649
|
return cached
|
2395
2650
|
end
|
2396
2651
|
|
2397
|
-
i0
|
2652
|
+
i0 = index
|
2398
2653
|
r1 = _nt_alpha_char
|
2399
|
-
|
2400
|
-
if r1.success?
|
2654
|
+
if r1
|
2401
2655
|
r0 = r1
|
2402
|
-
r1.update_nested_results(nr0)
|
2403
2656
|
else
|
2404
|
-
|
2405
|
-
|
2406
|
-
|
2657
|
+
if input.index(/[0-9]/, index) == index
|
2658
|
+
r2 = (SyntaxNode).new(input, index...(index + 1))
|
2659
|
+
@index += 1
|
2660
|
+
else
|
2661
|
+
r2 = nil
|
2662
|
+
end
|
2663
|
+
if r2
|
2407
2664
|
r0 = r2
|
2408
|
-
r2.update_nested_results(nr0)
|
2409
2665
|
else
|
2410
2666
|
self.index = i0
|
2411
|
-
r0 =
|
2667
|
+
r0 = nil
|
2412
2668
|
end
|
2413
2669
|
end
|
2414
2670
|
|
@@ -2425,11 +2681,22 @@ module Treetop
|
|
2425
2681
|
return cached
|
2426
2682
|
end
|
2427
2683
|
|
2428
|
-
s0,
|
2684
|
+
s0, i0 = [], index
|
2429
2685
|
loop do
|
2430
|
-
|
2431
|
-
|
2432
|
-
if
|
2686
|
+
i1 = index
|
2687
|
+
r2 = _nt_white
|
2688
|
+
if r2
|
2689
|
+
r1 = r2
|
2690
|
+
else
|
2691
|
+
r3 = _nt_comment_to_eol
|
2692
|
+
if r3
|
2693
|
+
r1 = r3
|
2694
|
+
else
|
2695
|
+
self.index = i1
|
2696
|
+
r1 = nil
|
2697
|
+
end
|
2698
|
+
end
|
2699
|
+
if r1
|
2433
2700
|
s0 << r1
|
2434
2701
|
else
|
2435
2702
|
break
|
@@ -2437,9 +2704,9 @@ module Treetop
|
|
2437
2704
|
end
|
2438
2705
|
if s0.empty?
|
2439
2706
|
self.index = i0
|
2440
|
-
r0 =
|
2707
|
+
r0 = nil
|
2441
2708
|
else
|
2442
|
-
r0 = SyntaxNode.new(input, i0...index, s0
|
2709
|
+
r0 = SyntaxNode.new(input, i0...index, s0)
|
2443
2710
|
end
|
2444
2711
|
|
2445
2712
|
node_cache[:space][start_index] = r0
|
@@ -2447,6 +2714,112 @@ module Treetop
|
|
2447
2714
|
return r0
|
2448
2715
|
end
|
2449
2716
|
|
2717
|
+
module CommentToEol0
|
2718
|
+
end
|
2719
|
+
|
2720
|
+
module CommentToEol1
|
2721
|
+
end
|
2722
|
+
|
2723
|
+
def _nt_comment_to_eol
|
2724
|
+
start_index = index
|
2725
|
+
cached = node_cache[:comment_to_eol][index]
|
2726
|
+
if cached
|
2727
|
+
@index = cached.interval.end
|
2728
|
+
return cached
|
2729
|
+
end
|
2730
|
+
|
2731
|
+
i0, s0 = index, []
|
2732
|
+
if input.index('#', index) == index
|
2733
|
+
r1 = (SyntaxNode).new(input, index...(index + 1))
|
2734
|
+
@index += 1
|
2735
|
+
else
|
2736
|
+
terminal_parse_failure('#')
|
2737
|
+
r1 = nil
|
2738
|
+
end
|
2739
|
+
s0 << r1
|
2740
|
+
if r1
|
2741
|
+
s2, i2 = [], index
|
2742
|
+
loop do
|
2743
|
+
i3, s3 = index, []
|
2744
|
+
i4 = index
|
2745
|
+
if input.index("\n", index) == index
|
2746
|
+
r5 = (SyntaxNode).new(input, index...(index + 1))
|
2747
|
+
@index += 1
|
2748
|
+
else
|
2749
|
+
terminal_parse_failure("\n")
|
2750
|
+
r5 = nil
|
2751
|
+
end
|
2752
|
+
if r5
|
2753
|
+
r4 = nil
|
2754
|
+
else
|
2755
|
+
self.index = i4
|
2756
|
+
r4 = SyntaxNode.new(input, index...index)
|
2757
|
+
end
|
2758
|
+
s3 << r4
|
2759
|
+
if r4
|
2760
|
+
if index < input_length
|
2761
|
+
r6 = (SyntaxNode).new(input, index...(index + 1))
|
2762
|
+
@index += 1
|
2763
|
+
else
|
2764
|
+
terminal_parse_failure("any character")
|
2765
|
+
r6 = nil
|
2766
|
+
end
|
2767
|
+
s3 << r6
|
2768
|
+
end
|
2769
|
+
if s3.last
|
2770
|
+
r3 = (SyntaxNode).new(input, i3...index, s3)
|
2771
|
+
r3.extend(CommentToEol0)
|
2772
|
+
else
|
2773
|
+
self.index = i3
|
2774
|
+
r3 = nil
|
2775
|
+
end
|
2776
|
+
if r3
|
2777
|
+
s2 << r3
|
2778
|
+
else
|
2779
|
+
break
|
2780
|
+
end
|
2781
|
+
end
|
2782
|
+
if s2.empty?
|
2783
|
+
self.index = i2
|
2784
|
+
r2 = nil
|
2785
|
+
else
|
2786
|
+
r2 = SyntaxNode.new(input, i2...index, s2)
|
2787
|
+
end
|
2788
|
+
s0 << r2
|
2789
|
+
end
|
2790
|
+
if s0.last
|
2791
|
+
r0 = (SyntaxNode).new(input, i0...index, s0)
|
2792
|
+
r0.extend(CommentToEol1)
|
2793
|
+
else
|
2794
|
+
self.index = i0
|
2795
|
+
r0 = nil
|
2796
|
+
end
|
2797
|
+
|
2798
|
+
node_cache[:comment_to_eol][start_index] = r0
|
2799
|
+
|
2800
|
+
return r0
|
2801
|
+
end
|
2802
|
+
|
2803
|
+
def _nt_white
|
2804
|
+
start_index = index
|
2805
|
+
cached = node_cache[:white][index]
|
2806
|
+
if cached
|
2807
|
+
@index = cached.interval.end
|
2808
|
+
return cached
|
2809
|
+
end
|
2810
|
+
|
2811
|
+
if input.index(/[ \t\n\r]/, index) == index
|
2812
|
+
r0 = (SyntaxNode).new(input, index...(index + 1))
|
2813
|
+
@index += 1
|
2814
|
+
else
|
2815
|
+
r0 = nil
|
2816
|
+
end
|
2817
|
+
|
2818
|
+
node_cache[:white][start_index] = r0
|
2819
|
+
|
2820
|
+
return r0
|
2821
|
+
end
|
2822
|
+
|
2450
2823
|
end
|
2451
2824
|
|
2452
2825
|
class MetagrammarParser < Treetop::Runtime::CompiledParser
|
@@ -2454,4 +2827,4 @@ module Treetop
|
|
2454
2827
|
end
|
2455
2828
|
|
2456
2829
|
end
|
2457
|
-
end
|
2830
|
+
end
|