edn-abnf 0.0.11 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1698 @@
1
+ # Encoding: UTF-8
2
+ # Autogenerated from a Treetop grammar. Edits may be lost.
3
+
4
+
5
+ module IPGRAMMAR
6
+ include Treetop::Runtime
7
+
8
+ def root
9
+ @root ||= :app_string_ip
10
+ end
11
+
12
+ module AppStringIp0
13
+ def uint
14
+ elements[1]
15
+ end
16
+ end
17
+
18
+ module AppStringIp1
19
+ def IPaddress
20
+ elements[0]
21
+ end
22
+
23
+ end
24
+
25
+ module AppStringIp2
26
+ def ast
27
+ fam, addr = elements[0].ast
28
+ prefix = elements[1].text_value
29
+ if prefix.empty?
30
+ [fam, addr]
31
+ else
32
+ prefixlength = Integer(prefix[1..-1])
33
+ masked_addr = IPAddr.new_ntoh(addr).mask(prefixlength).hton
34
+ i = addr.size
35
+ while addr.getbyte(i-1) == 0
36
+ break if (i -= 1) == 0
37
+ end
38
+ short_addr = addr[0...i]
39
+ if masked_addr != addr
40
+ warn "*** dt'': non-zero bits outside of prefix #{prefixlength}: #{short_addr.bytes.map{|x| "%02x" % x}.join}"
41
+ end
42
+ [fam, [prefixlength, short_addr]]
43
+ end
44
+ end
45
+ end
46
+
47
+ def _nt_app_string_ip
48
+ start_index = index
49
+ if node_cache[:app_string_ip].has_key?(index)
50
+ cached = node_cache[:app_string_ip][index]
51
+ if cached
52
+ node_cache[:app_string_ip][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
53
+ @index = cached.interval.end
54
+ end
55
+ return cached
56
+ end
57
+
58
+ i0, s0 = index, []
59
+ r1 = _nt_IPaddress
60
+ s0 << r1
61
+ if r1
62
+ i3, s3 = index, []
63
+ if (match_len = has_terminal?("/", false, index))
64
+ r4 = true
65
+ @index += match_len
66
+ else
67
+ terminal_parse_failure('"/"')
68
+ r4 = nil
69
+ end
70
+ s3 << r4
71
+ if r4
72
+ r5 = _nt_uint
73
+ s3 << r5
74
+ end
75
+ if s3.last
76
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
77
+ r3.extend(AppStringIp0)
78
+ else
79
+ @index = i3
80
+ r3 = nil
81
+ end
82
+ if r3
83
+ r2 = r3
84
+ else
85
+ r2 = instantiate_node(SyntaxNode,input, index...index)
86
+ end
87
+ s0 << r2
88
+ end
89
+ if s0.last
90
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
91
+ r0.extend(AppStringIp1)
92
+ r0.extend(AppStringIp2)
93
+ else
94
+ @index = i0
95
+ r0 = nil
96
+ end
97
+
98
+ node_cache[:app_string_ip][start_index] = r0
99
+
100
+ r0
101
+ end
102
+
103
+ module IPaddress0
104
+ def ast; [52, IPAddr.new(text_value).hton] end
105
+ end
106
+
107
+ module IPaddress1
108
+ def ast; [54, IPAddr.new(text_value).hton] end
109
+ end
110
+
111
+ def _nt_IPaddress
112
+ start_index = index
113
+ if node_cache[:IPaddress].has_key?(index)
114
+ cached = node_cache[:IPaddress][index]
115
+ if cached
116
+ node_cache[:IPaddress][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
117
+ @index = cached.interval.end
118
+ end
119
+ return cached
120
+ end
121
+
122
+ i0 = index
123
+ r1 = _nt_IPv4address
124
+ r1.extend(IPaddress0)
125
+ r1.extend(IPaddress0)
126
+ if r1
127
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
128
+ r0 = r1
129
+ else
130
+ r2 = _nt_IPv6address
131
+ r2.extend(IPaddress1)
132
+ r2.extend(IPaddress1)
133
+ if r2
134
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
135
+ r0 = r2
136
+ else
137
+ @index = i0
138
+ r0 = nil
139
+ end
140
+ end
141
+
142
+ node_cache[:IPaddress][start_index] = r0
143
+
144
+ r0
145
+ end
146
+
147
+ module IPv6address0
148
+ def h16
149
+ elements[0]
150
+ end
151
+
152
+ end
153
+
154
+ module IPv6address1
155
+ def ls32
156
+ elements[1]
157
+ end
158
+ end
159
+
160
+ module IPv6address2
161
+ def h16
162
+ elements[0]
163
+ end
164
+
165
+ end
166
+
167
+ module IPv6address3
168
+ def ls32
169
+ elements[2]
170
+ end
171
+ end
172
+
173
+ module IPv6address4
174
+ def h16
175
+ elements[0]
176
+ end
177
+
178
+ end
179
+
180
+ module IPv6address5
181
+ def ls32
182
+ elements[3]
183
+ end
184
+ end
185
+
186
+ module IPv6address6
187
+ def h16
188
+ elements[1]
189
+ end
190
+ end
191
+
192
+ module IPv6address7
193
+ def h16
194
+ elements[0]
195
+ end
196
+
197
+ end
198
+
199
+ module IPv6address8
200
+ def h16
201
+ elements[0]
202
+ end
203
+
204
+ end
205
+
206
+ module IPv6address9
207
+ def ls32
208
+ elements[3]
209
+ end
210
+ end
211
+
212
+ module IPv6address10
213
+ def h16
214
+ elements[1]
215
+ end
216
+ end
217
+
218
+ module IPv6address11
219
+ def h16
220
+ elements[0]
221
+ end
222
+
223
+ end
224
+
225
+ module IPv6address12
226
+ def h16
227
+ elements[0]
228
+ end
229
+
230
+ end
231
+
232
+ module IPv6address13
233
+ def ls32
234
+ elements[3]
235
+ end
236
+ end
237
+
238
+ module IPv6address14
239
+ def h16
240
+ elements[1]
241
+ end
242
+ end
243
+
244
+ module IPv6address15
245
+ def h16
246
+ elements[0]
247
+ end
248
+
249
+ end
250
+
251
+ module IPv6address16
252
+ def h16
253
+ elements[2]
254
+ end
255
+
256
+ def ls32
257
+ elements[4]
258
+ end
259
+ end
260
+
261
+ module IPv6address17
262
+ def h16
263
+ elements[1]
264
+ end
265
+ end
266
+
267
+ module IPv6address18
268
+ def h16
269
+ elements[0]
270
+ end
271
+
272
+ end
273
+
274
+ module IPv6address19
275
+ def ls32
276
+ elements[2]
277
+ end
278
+ end
279
+
280
+ module IPv6address20
281
+ def h16
282
+ elements[1]
283
+ end
284
+ end
285
+
286
+ module IPv6address21
287
+ def h16
288
+ elements[0]
289
+ end
290
+
291
+ end
292
+
293
+ module IPv6address22
294
+ def h16
295
+ elements[2]
296
+ end
297
+ end
298
+
299
+ module IPv6address23
300
+ def h16
301
+ elements[1]
302
+ end
303
+ end
304
+
305
+ module IPv6address24
306
+ def h16
307
+ elements[0]
308
+ end
309
+
310
+ end
311
+
312
+ module IPv6address25
313
+ end
314
+
315
+ def _nt_IPv6address
316
+ start_index = index
317
+ if node_cache[:IPv6address].has_key?(index)
318
+ cached = node_cache[:IPv6address][index]
319
+ if cached
320
+ node_cache[:IPv6address][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
321
+ @index = cached.interval.end
322
+ end
323
+ return cached
324
+ end
325
+
326
+ i0 = index
327
+ i1, s1 = index, []
328
+ s2, i2 = [], index
329
+ loop do
330
+ i3, s3 = index, []
331
+ r4 = _nt_h16
332
+ s3 << r4
333
+ if r4
334
+ if (match_len = has_terminal?(":", false, index))
335
+ r5 = true
336
+ @index += match_len
337
+ else
338
+ terminal_parse_failure('":"')
339
+ r5 = nil
340
+ end
341
+ s3 << r5
342
+ end
343
+ if s3.last
344
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
345
+ r3.extend(IPv6address0)
346
+ else
347
+ @index = i3
348
+ r3 = nil
349
+ end
350
+ if r3
351
+ s2 << r3
352
+ else
353
+ break
354
+ end
355
+ if s2.size == 6
356
+ break
357
+ end
358
+ end
359
+ if s2.size < 6
360
+ @index = i2
361
+ r2 = nil
362
+ else
363
+ if s2.size < 6
364
+ @terminal_failures.pop
365
+ end
366
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
367
+ end
368
+ s1 << r2
369
+ if r2
370
+ r6 = _nt_ls32
371
+ s1 << r6
372
+ end
373
+ if s1.last
374
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
375
+ r1.extend(IPv6address1)
376
+ else
377
+ @index = i1
378
+ r1 = nil
379
+ end
380
+ if r1
381
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
382
+ r0 = r1
383
+ else
384
+ i7, s7 = index, []
385
+ if (match_len = has_terminal?("::", false, index))
386
+ r8 = instantiate_node(SyntaxNode,input, index...(index + match_len))
387
+ @index += match_len
388
+ else
389
+ terminal_parse_failure('"::"')
390
+ r8 = nil
391
+ end
392
+ s7 << r8
393
+ if r8
394
+ s9, i9 = [], index
395
+ loop do
396
+ i10, s10 = index, []
397
+ r11 = _nt_h16
398
+ s10 << r11
399
+ if r11
400
+ if (match_len = has_terminal?(":", false, index))
401
+ r12 = true
402
+ @index += match_len
403
+ else
404
+ terminal_parse_failure('":"')
405
+ r12 = nil
406
+ end
407
+ s10 << r12
408
+ end
409
+ if s10.last
410
+ r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
411
+ r10.extend(IPv6address2)
412
+ else
413
+ @index = i10
414
+ r10 = nil
415
+ end
416
+ if r10
417
+ s9 << r10
418
+ else
419
+ break
420
+ end
421
+ if s9.size == 5
422
+ break
423
+ end
424
+ end
425
+ if s9.size < 5
426
+ @index = i9
427
+ r9 = nil
428
+ else
429
+ if s9.size < 5
430
+ @terminal_failures.pop
431
+ end
432
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
433
+ end
434
+ s7 << r9
435
+ if r9
436
+ r13 = _nt_ls32
437
+ s7 << r13
438
+ end
439
+ end
440
+ if s7.last
441
+ r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
442
+ r7.extend(IPv6address3)
443
+ else
444
+ @index = i7
445
+ r7 = nil
446
+ end
447
+ if r7
448
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
449
+ r0 = r7
450
+ else
451
+ i14, s14 = index, []
452
+ r16 = _nt_h16
453
+ if r16
454
+ r15 = r16
455
+ else
456
+ r15 = instantiate_node(SyntaxNode,input, index...index)
457
+ end
458
+ s14 << r15
459
+ if r15
460
+ if (match_len = has_terminal?("::", false, index))
461
+ r17 = instantiate_node(SyntaxNode,input, index...(index + match_len))
462
+ @index += match_len
463
+ else
464
+ terminal_parse_failure('"::"')
465
+ r17 = nil
466
+ end
467
+ s14 << r17
468
+ if r17
469
+ s18, i18 = [], index
470
+ loop do
471
+ i19, s19 = index, []
472
+ r20 = _nt_h16
473
+ s19 << r20
474
+ if r20
475
+ if (match_len = has_terminal?(":", false, index))
476
+ r21 = true
477
+ @index += match_len
478
+ else
479
+ terminal_parse_failure('":"')
480
+ r21 = nil
481
+ end
482
+ s19 << r21
483
+ end
484
+ if s19.last
485
+ r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
486
+ r19.extend(IPv6address4)
487
+ else
488
+ @index = i19
489
+ r19 = nil
490
+ end
491
+ if r19
492
+ s18 << r19
493
+ else
494
+ break
495
+ end
496
+ if s18.size == 4
497
+ break
498
+ end
499
+ end
500
+ if s18.size < 4
501
+ @index = i18
502
+ r18 = nil
503
+ else
504
+ if s18.size < 4
505
+ @terminal_failures.pop
506
+ end
507
+ r18 = instantiate_node(SyntaxNode,input, i18...index, s18)
508
+ end
509
+ s14 << r18
510
+ if r18
511
+ r22 = _nt_ls32
512
+ s14 << r22
513
+ end
514
+ end
515
+ end
516
+ if s14.last
517
+ r14 = instantiate_node(SyntaxNode,input, i14...index, s14)
518
+ r14.extend(IPv6address5)
519
+ else
520
+ @index = i14
521
+ r14 = nil
522
+ end
523
+ if r14
524
+ r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true
525
+ r0 = r14
526
+ else
527
+ i23, s23 = index, []
528
+ i25, s25 = index, []
529
+ r26 = _nt_h16
530
+ s25 << r26
531
+ if r26
532
+ i28, s28 = index, []
533
+ if (match_len = has_terminal?(":", false, index))
534
+ r29 = true
535
+ @index += match_len
536
+ else
537
+ terminal_parse_failure('":"')
538
+ r29 = nil
539
+ end
540
+ s28 << r29
541
+ if r29
542
+ r30 = _nt_h16
543
+ s28 << r30
544
+ end
545
+ if s28.last
546
+ r28 = instantiate_node(SyntaxNode,input, i28...index, s28)
547
+ r28.extend(IPv6address6)
548
+ else
549
+ @index = i28
550
+ r28 = nil
551
+ end
552
+ if r28
553
+ r27 = r28
554
+ else
555
+ r27 = instantiate_node(SyntaxNode,input, index...index)
556
+ end
557
+ s25 << r27
558
+ end
559
+ if s25.last
560
+ r25 = instantiate_node(SyntaxNode,input, i25...index, s25)
561
+ r25.extend(IPv6address7)
562
+ else
563
+ @index = i25
564
+ r25 = nil
565
+ end
566
+ if r25
567
+ r24 = r25
568
+ else
569
+ r24 = instantiate_node(SyntaxNode,input, index...index)
570
+ end
571
+ s23 << r24
572
+ if r24
573
+ if (match_len = has_terminal?("::", false, index))
574
+ r31 = instantiate_node(SyntaxNode,input, index...(index + match_len))
575
+ @index += match_len
576
+ else
577
+ terminal_parse_failure('"::"')
578
+ r31 = nil
579
+ end
580
+ s23 << r31
581
+ if r31
582
+ s32, i32 = [], index
583
+ loop do
584
+ i33, s33 = index, []
585
+ r34 = _nt_h16
586
+ s33 << r34
587
+ if r34
588
+ if (match_len = has_terminal?(":", false, index))
589
+ r35 = true
590
+ @index += match_len
591
+ else
592
+ terminal_parse_failure('":"')
593
+ r35 = nil
594
+ end
595
+ s33 << r35
596
+ end
597
+ if s33.last
598
+ r33 = instantiate_node(SyntaxNode,input, i33...index, s33)
599
+ r33.extend(IPv6address8)
600
+ else
601
+ @index = i33
602
+ r33 = nil
603
+ end
604
+ if r33
605
+ s32 << r33
606
+ else
607
+ break
608
+ end
609
+ if s32.size == 3
610
+ break
611
+ end
612
+ end
613
+ if s32.size < 3
614
+ @index = i32
615
+ r32 = nil
616
+ else
617
+ if s32.size < 3
618
+ @terminal_failures.pop
619
+ end
620
+ r32 = instantiate_node(SyntaxNode,input, i32...index, s32)
621
+ end
622
+ s23 << r32
623
+ if r32
624
+ r36 = _nt_ls32
625
+ s23 << r36
626
+ end
627
+ end
628
+ end
629
+ if s23.last
630
+ r23 = instantiate_node(SyntaxNode,input, i23...index, s23)
631
+ r23.extend(IPv6address9)
632
+ else
633
+ @index = i23
634
+ r23 = nil
635
+ end
636
+ if r23
637
+ r23 = SyntaxNode.new(input, (index-1)...index) if r23 == true
638
+ r0 = r23
639
+ else
640
+ i37, s37 = index, []
641
+ i39, s39 = index, []
642
+ r40 = _nt_h16
643
+ s39 << r40
644
+ if r40
645
+ s41, i41 = [], index
646
+ loop do
647
+ i42, s42 = index, []
648
+ if (match_len = has_terminal?(":", false, index))
649
+ r43 = true
650
+ @index += match_len
651
+ else
652
+ terminal_parse_failure('":"')
653
+ r43 = nil
654
+ end
655
+ s42 << r43
656
+ if r43
657
+ r44 = _nt_h16
658
+ s42 << r44
659
+ end
660
+ if s42.last
661
+ r42 = instantiate_node(SyntaxNode,input, i42...index, s42)
662
+ r42.extend(IPv6address10)
663
+ else
664
+ @index = i42
665
+ r42 = nil
666
+ end
667
+ if r42
668
+ s41 << r42
669
+ else
670
+ break
671
+ end
672
+ if s41.size == 2
673
+ break
674
+ end
675
+ end
676
+ if s41.size < 2
677
+ @terminal_failures.pop
678
+ end
679
+ r41 = instantiate_node(SyntaxNode,input, i41...index, s41)
680
+ s39 << r41
681
+ end
682
+ if s39.last
683
+ r39 = instantiate_node(SyntaxNode,input, i39...index, s39)
684
+ r39.extend(IPv6address11)
685
+ else
686
+ @index = i39
687
+ r39 = nil
688
+ end
689
+ if r39
690
+ r38 = r39
691
+ else
692
+ r38 = instantiate_node(SyntaxNode,input, index...index)
693
+ end
694
+ s37 << r38
695
+ if r38
696
+ if (match_len = has_terminal?("::", false, index))
697
+ r45 = instantiate_node(SyntaxNode,input, index...(index + match_len))
698
+ @index += match_len
699
+ else
700
+ terminal_parse_failure('"::"')
701
+ r45 = nil
702
+ end
703
+ s37 << r45
704
+ if r45
705
+ s46, i46 = [], index
706
+ loop do
707
+ i47, s47 = index, []
708
+ r48 = _nt_h16
709
+ s47 << r48
710
+ if r48
711
+ if (match_len = has_terminal?(":", false, index))
712
+ r49 = true
713
+ @index += match_len
714
+ else
715
+ terminal_parse_failure('":"')
716
+ r49 = nil
717
+ end
718
+ s47 << r49
719
+ end
720
+ if s47.last
721
+ r47 = instantiate_node(SyntaxNode,input, i47...index, s47)
722
+ r47.extend(IPv6address12)
723
+ else
724
+ @index = i47
725
+ r47 = nil
726
+ end
727
+ if r47
728
+ s46 << r47
729
+ else
730
+ break
731
+ end
732
+ if s46.size == 2
733
+ break
734
+ end
735
+ end
736
+ if s46.size < 2
737
+ @index = i46
738
+ r46 = nil
739
+ else
740
+ if s46.size < 2
741
+ @terminal_failures.pop
742
+ end
743
+ r46 = instantiate_node(SyntaxNode,input, i46...index, s46)
744
+ end
745
+ s37 << r46
746
+ if r46
747
+ r50 = _nt_ls32
748
+ s37 << r50
749
+ end
750
+ end
751
+ end
752
+ if s37.last
753
+ r37 = instantiate_node(SyntaxNode,input, i37...index, s37)
754
+ r37.extend(IPv6address13)
755
+ else
756
+ @index = i37
757
+ r37 = nil
758
+ end
759
+ if r37
760
+ r37 = SyntaxNode.new(input, (index-1)...index) if r37 == true
761
+ r0 = r37
762
+ else
763
+ i51, s51 = index, []
764
+ i53, s53 = index, []
765
+ r54 = _nt_h16
766
+ s53 << r54
767
+ if r54
768
+ s55, i55 = [], index
769
+ loop do
770
+ i56, s56 = index, []
771
+ if (match_len = has_terminal?(":", false, index))
772
+ r57 = true
773
+ @index += match_len
774
+ else
775
+ terminal_parse_failure('":"')
776
+ r57 = nil
777
+ end
778
+ s56 << r57
779
+ if r57
780
+ r58 = _nt_h16
781
+ s56 << r58
782
+ end
783
+ if s56.last
784
+ r56 = instantiate_node(SyntaxNode,input, i56...index, s56)
785
+ r56.extend(IPv6address14)
786
+ else
787
+ @index = i56
788
+ r56 = nil
789
+ end
790
+ if r56
791
+ s55 << r56
792
+ else
793
+ break
794
+ end
795
+ if s55.size == 3
796
+ break
797
+ end
798
+ end
799
+ if s55.size < 3
800
+ @terminal_failures.pop
801
+ end
802
+ r55 = instantiate_node(SyntaxNode,input, i55...index, s55)
803
+ s53 << r55
804
+ end
805
+ if s53.last
806
+ r53 = instantiate_node(SyntaxNode,input, i53...index, s53)
807
+ r53.extend(IPv6address15)
808
+ else
809
+ @index = i53
810
+ r53 = nil
811
+ end
812
+ if r53
813
+ r52 = r53
814
+ else
815
+ r52 = instantiate_node(SyntaxNode,input, index...index)
816
+ end
817
+ s51 << r52
818
+ if r52
819
+ if (match_len = has_terminal?("::", false, index))
820
+ r59 = instantiate_node(SyntaxNode,input, index...(index + match_len))
821
+ @index += match_len
822
+ else
823
+ terminal_parse_failure('"::"')
824
+ r59 = nil
825
+ end
826
+ s51 << r59
827
+ if r59
828
+ r60 = _nt_h16
829
+ s51 << r60
830
+ if r60
831
+ if (match_len = has_terminal?(":", false, index))
832
+ r61 = true
833
+ @index += match_len
834
+ else
835
+ terminal_parse_failure('":"')
836
+ r61 = nil
837
+ end
838
+ s51 << r61
839
+ if r61
840
+ r62 = _nt_ls32
841
+ s51 << r62
842
+ end
843
+ end
844
+ end
845
+ end
846
+ if s51.last
847
+ r51 = instantiate_node(SyntaxNode,input, i51...index, s51)
848
+ r51.extend(IPv6address16)
849
+ else
850
+ @index = i51
851
+ r51 = nil
852
+ end
853
+ if r51
854
+ r51 = SyntaxNode.new(input, (index-1)...index) if r51 == true
855
+ r0 = r51
856
+ else
857
+ i63, s63 = index, []
858
+ i65, s65 = index, []
859
+ r66 = _nt_h16
860
+ s65 << r66
861
+ if r66
862
+ s67, i67 = [], index
863
+ loop do
864
+ i68, s68 = index, []
865
+ if (match_len = has_terminal?(":", false, index))
866
+ r69 = true
867
+ @index += match_len
868
+ else
869
+ terminal_parse_failure('":"')
870
+ r69 = nil
871
+ end
872
+ s68 << r69
873
+ if r69
874
+ r70 = _nt_h16
875
+ s68 << r70
876
+ end
877
+ if s68.last
878
+ r68 = instantiate_node(SyntaxNode,input, i68...index, s68)
879
+ r68.extend(IPv6address17)
880
+ else
881
+ @index = i68
882
+ r68 = nil
883
+ end
884
+ if r68
885
+ s67 << r68
886
+ else
887
+ break
888
+ end
889
+ if s67.size == 4
890
+ break
891
+ end
892
+ end
893
+ if s67.size < 4
894
+ @terminal_failures.pop
895
+ end
896
+ r67 = instantiate_node(SyntaxNode,input, i67...index, s67)
897
+ s65 << r67
898
+ end
899
+ if s65.last
900
+ r65 = instantiate_node(SyntaxNode,input, i65...index, s65)
901
+ r65.extend(IPv6address18)
902
+ else
903
+ @index = i65
904
+ r65 = nil
905
+ end
906
+ if r65
907
+ r64 = r65
908
+ else
909
+ r64 = instantiate_node(SyntaxNode,input, index...index)
910
+ end
911
+ s63 << r64
912
+ if r64
913
+ if (match_len = has_terminal?("::", false, index))
914
+ r71 = instantiate_node(SyntaxNode,input, index...(index + match_len))
915
+ @index += match_len
916
+ else
917
+ terminal_parse_failure('"::"')
918
+ r71 = nil
919
+ end
920
+ s63 << r71
921
+ if r71
922
+ r72 = _nt_ls32
923
+ s63 << r72
924
+ end
925
+ end
926
+ if s63.last
927
+ r63 = instantiate_node(SyntaxNode,input, i63...index, s63)
928
+ r63.extend(IPv6address19)
929
+ else
930
+ @index = i63
931
+ r63 = nil
932
+ end
933
+ if r63
934
+ r63 = SyntaxNode.new(input, (index-1)...index) if r63 == true
935
+ r0 = r63
936
+ else
937
+ i73, s73 = index, []
938
+ i75, s75 = index, []
939
+ r76 = _nt_h16
940
+ s75 << r76
941
+ if r76
942
+ s77, i77 = [], index
943
+ loop do
944
+ i78, s78 = index, []
945
+ if (match_len = has_terminal?(":", false, index))
946
+ r79 = true
947
+ @index += match_len
948
+ else
949
+ terminal_parse_failure('":"')
950
+ r79 = nil
951
+ end
952
+ s78 << r79
953
+ if r79
954
+ r80 = _nt_h16
955
+ s78 << r80
956
+ end
957
+ if s78.last
958
+ r78 = instantiate_node(SyntaxNode,input, i78...index, s78)
959
+ r78.extend(IPv6address20)
960
+ else
961
+ @index = i78
962
+ r78 = nil
963
+ end
964
+ if r78
965
+ s77 << r78
966
+ else
967
+ break
968
+ end
969
+ if s77.size == 5
970
+ break
971
+ end
972
+ end
973
+ if s77.size < 5
974
+ @terminal_failures.pop
975
+ end
976
+ r77 = instantiate_node(SyntaxNode,input, i77...index, s77)
977
+ s75 << r77
978
+ end
979
+ if s75.last
980
+ r75 = instantiate_node(SyntaxNode,input, i75...index, s75)
981
+ r75.extend(IPv6address21)
982
+ else
983
+ @index = i75
984
+ r75 = nil
985
+ end
986
+ if r75
987
+ r74 = r75
988
+ else
989
+ r74 = instantiate_node(SyntaxNode,input, index...index)
990
+ end
991
+ s73 << r74
992
+ if r74
993
+ if (match_len = has_terminal?("::", false, index))
994
+ r81 = instantiate_node(SyntaxNode,input, index...(index + match_len))
995
+ @index += match_len
996
+ else
997
+ terminal_parse_failure('"::"')
998
+ r81 = nil
999
+ end
1000
+ s73 << r81
1001
+ if r81
1002
+ r82 = _nt_h16
1003
+ s73 << r82
1004
+ end
1005
+ end
1006
+ if s73.last
1007
+ r73 = instantiate_node(SyntaxNode,input, i73...index, s73)
1008
+ r73.extend(IPv6address22)
1009
+ else
1010
+ @index = i73
1011
+ r73 = nil
1012
+ end
1013
+ if r73
1014
+ r73 = SyntaxNode.new(input, (index-1)...index) if r73 == true
1015
+ r0 = r73
1016
+ else
1017
+ i83, s83 = index, []
1018
+ i85, s85 = index, []
1019
+ r86 = _nt_h16
1020
+ s85 << r86
1021
+ if r86
1022
+ s87, i87 = [], index
1023
+ loop do
1024
+ i88, s88 = index, []
1025
+ if (match_len = has_terminal?(":", false, index))
1026
+ r89 = true
1027
+ @index += match_len
1028
+ else
1029
+ terminal_parse_failure('":"')
1030
+ r89 = nil
1031
+ end
1032
+ s88 << r89
1033
+ if r89
1034
+ r90 = _nt_h16
1035
+ s88 << r90
1036
+ end
1037
+ if s88.last
1038
+ r88 = instantiate_node(SyntaxNode,input, i88...index, s88)
1039
+ r88.extend(IPv6address23)
1040
+ else
1041
+ @index = i88
1042
+ r88 = nil
1043
+ end
1044
+ if r88
1045
+ s87 << r88
1046
+ else
1047
+ break
1048
+ end
1049
+ if s87.size == 6
1050
+ break
1051
+ end
1052
+ end
1053
+ if s87.size < 6
1054
+ @terminal_failures.pop
1055
+ end
1056
+ r87 = instantiate_node(SyntaxNode,input, i87...index, s87)
1057
+ s85 << r87
1058
+ end
1059
+ if s85.last
1060
+ r85 = instantiate_node(SyntaxNode,input, i85...index, s85)
1061
+ r85.extend(IPv6address24)
1062
+ else
1063
+ @index = i85
1064
+ r85 = nil
1065
+ end
1066
+ if r85
1067
+ r84 = r85
1068
+ else
1069
+ r84 = instantiate_node(SyntaxNode,input, index...index)
1070
+ end
1071
+ s83 << r84
1072
+ if r84
1073
+ if (match_len = has_terminal?("::", false, index))
1074
+ r91 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1075
+ @index += match_len
1076
+ else
1077
+ terminal_parse_failure('"::"')
1078
+ r91 = nil
1079
+ end
1080
+ s83 << r91
1081
+ end
1082
+ if s83.last
1083
+ r83 = instantiate_node(SyntaxNode,input, i83...index, s83)
1084
+ r83.extend(IPv6address25)
1085
+ else
1086
+ @index = i83
1087
+ r83 = nil
1088
+ end
1089
+ if r83
1090
+ r83 = SyntaxNode.new(input, (index-1)...index) if r83 == true
1091
+ r0 = r83
1092
+ else
1093
+ @index = i0
1094
+ r0 = nil
1095
+ end
1096
+ end
1097
+ end
1098
+ end
1099
+ end
1100
+ end
1101
+ end
1102
+ end
1103
+ end
1104
+
1105
+ node_cache[:IPv6address][start_index] = r0
1106
+
1107
+ r0
1108
+ end
1109
+
1110
+ def _nt_h16
1111
+ start_index = index
1112
+ if node_cache[:h16].has_key?(index)
1113
+ cached = node_cache[:h16][index]
1114
+ if cached
1115
+ node_cache[:h16][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1116
+ @index = cached.interval.end
1117
+ end
1118
+ return cached
1119
+ end
1120
+
1121
+ s0, i0 = [], index
1122
+ loop do
1123
+ r1 = _nt_HEXDIG
1124
+ if r1
1125
+ s0 << r1
1126
+ else
1127
+ break
1128
+ end
1129
+ if s0.size == 4
1130
+ break
1131
+ end
1132
+ end
1133
+ if s0.size < 1
1134
+ @index = i0
1135
+ r0 = nil
1136
+ else
1137
+ if s0.size < 4
1138
+ @terminal_failures.pop
1139
+ end
1140
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1141
+ end
1142
+
1143
+ node_cache[:h16][start_index] = r0
1144
+
1145
+ r0
1146
+ end
1147
+
1148
+ module Ls320
1149
+ def h161
1150
+ elements[0]
1151
+ end
1152
+
1153
+ def h162
1154
+ elements[2]
1155
+ end
1156
+ end
1157
+
1158
+ def _nt_ls32
1159
+ start_index = index
1160
+ if node_cache[:ls32].has_key?(index)
1161
+ cached = node_cache[:ls32][index]
1162
+ if cached
1163
+ node_cache[:ls32][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1164
+ @index = cached.interval.end
1165
+ end
1166
+ return cached
1167
+ end
1168
+
1169
+ i0 = index
1170
+ i1, s1 = index, []
1171
+ r2 = _nt_h16
1172
+ s1 << r2
1173
+ if r2
1174
+ if (match_len = has_terminal?(":", false, index))
1175
+ r3 = true
1176
+ @index += match_len
1177
+ else
1178
+ terminal_parse_failure('":"')
1179
+ r3 = nil
1180
+ end
1181
+ s1 << r3
1182
+ if r3
1183
+ r4 = _nt_h16
1184
+ s1 << r4
1185
+ end
1186
+ end
1187
+ if s1.last
1188
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1189
+ r1.extend(Ls320)
1190
+ else
1191
+ @index = i1
1192
+ r1 = nil
1193
+ end
1194
+ if r1
1195
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1196
+ r0 = r1
1197
+ else
1198
+ r5 = _nt_IPv4address
1199
+ if r5
1200
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
1201
+ r0 = r5
1202
+ else
1203
+ @index = i0
1204
+ r0 = nil
1205
+ end
1206
+ end
1207
+
1208
+ node_cache[:ls32][start_index] = r0
1209
+
1210
+ r0
1211
+ end
1212
+
1213
+ module IPv4address0
1214
+ def dec_octet1
1215
+ elements[0]
1216
+ end
1217
+
1218
+ def dec_octet2
1219
+ elements[2]
1220
+ end
1221
+
1222
+ def dec_octet3
1223
+ elements[4]
1224
+ end
1225
+
1226
+ def dec_octet4
1227
+ elements[6]
1228
+ end
1229
+ end
1230
+
1231
+ def _nt_IPv4address
1232
+ start_index = index
1233
+ if node_cache[:IPv4address].has_key?(index)
1234
+ cached = node_cache[:IPv4address][index]
1235
+ if cached
1236
+ node_cache[:IPv4address][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1237
+ @index = cached.interval.end
1238
+ end
1239
+ return cached
1240
+ end
1241
+
1242
+ i0, s0 = index, []
1243
+ r1 = _nt_dec_octet
1244
+ s0 << r1
1245
+ if r1
1246
+ if (match_len = has_terminal?(".", false, index))
1247
+ r2 = true
1248
+ @index += match_len
1249
+ else
1250
+ terminal_parse_failure('"."')
1251
+ r2 = nil
1252
+ end
1253
+ s0 << r2
1254
+ if r2
1255
+ r3 = _nt_dec_octet
1256
+ s0 << r3
1257
+ if r3
1258
+ if (match_len = has_terminal?(".", false, index))
1259
+ r4 = true
1260
+ @index += match_len
1261
+ else
1262
+ terminal_parse_failure('"."')
1263
+ r4 = nil
1264
+ end
1265
+ s0 << r4
1266
+ if r4
1267
+ r5 = _nt_dec_octet
1268
+ s0 << r5
1269
+ if r5
1270
+ if (match_len = has_terminal?(".", false, index))
1271
+ r6 = true
1272
+ @index += match_len
1273
+ else
1274
+ terminal_parse_failure('"."')
1275
+ r6 = nil
1276
+ end
1277
+ s0 << r6
1278
+ if r6
1279
+ r7 = _nt_dec_octet
1280
+ s0 << r7
1281
+ end
1282
+ end
1283
+ end
1284
+ end
1285
+ end
1286
+ end
1287
+ if s0.last
1288
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1289
+ r0.extend(IPv4address0)
1290
+ else
1291
+ @index = i0
1292
+ r0 = nil
1293
+ end
1294
+
1295
+ node_cache[:IPv4address][start_index] = r0
1296
+
1297
+ r0
1298
+ end
1299
+
1300
+ module DecOctet0
1301
+ end
1302
+
1303
+ module DecOctet1
1304
+ def DIGIT
1305
+ elements[2]
1306
+ end
1307
+ end
1308
+
1309
+ module DecOctet2
1310
+ end
1311
+
1312
+ module DecOctet3
1313
+ def DIGIT
1314
+ elements[1]
1315
+ end
1316
+ end
1317
+
1318
+ def _nt_dec_octet
1319
+ start_index = index
1320
+ if node_cache[:dec_octet].has_key?(index)
1321
+ cached = node_cache[:dec_octet][index]
1322
+ if cached
1323
+ node_cache[:dec_octet][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1324
+ @index = cached.interval.end
1325
+ end
1326
+ return cached
1327
+ end
1328
+
1329
+ i0 = index
1330
+ i1, s1 = index, []
1331
+ if (match_len = has_terminal?("25", false, index))
1332
+ r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1333
+ @index += match_len
1334
+ else
1335
+ terminal_parse_failure('"25"')
1336
+ r2 = nil
1337
+ end
1338
+ s1 << r2
1339
+ if r2
1340
+ if has_terminal?(@regexps[gr = '\A[0-5]'] ||= Regexp.new(gr), :regexp, index)
1341
+ r3 = true
1342
+ @index += 1
1343
+ else
1344
+ terminal_parse_failure('[0-5]')
1345
+ r3 = nil
1346
+ end
1347
+ s1 << r3
1348
+ end
1349
+ if s1.last
1350
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1351
+ r1.extend(DecOctet0)
1352
+ else
1353
+ @index = i1
1354
+ r1 = nil
1355
+ end
1356
+ if r1
1357
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1358
+ r0 = r1
1359
+ else
1360
+ i4, s4 = index, []
1361
+ if (match_len = has_terminal?("2", false, index))
1362
+ r5 = true
1363
+ @index += match_len
1364
+ else
1365
+ terminal_parse_failure('"2"')
1366
+ r5 = nil
1367
+ end
1368
+ s4 << r5
1369
+ if r5
1370
+ if has_terminal?(@regexps[gr = '\A[0-4]'] ||= Regexp.new(gr), :regexp, index)
1371
+ r6 = true
1372
+ @index += 1
1373
+ else
1374
+ terminal_parse_failure('[0-4]')
1375
+ r6 = nil
1376
+ end
1377
+ s4 << r6
1378
+ if r6
1379
+ r7 = _nt_DIGIT
1380
+ s4 << r7
1381
+ end
1382
+ end
1383
+ if s4.last
1384
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1385
+ r4.extend(DecOctet1)
1386
+ else
1387
+ @index = i4
1388
+ r4 = nil
1389
+ end
1390
+ if r4
1391
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
1392
+ r0 = r4
1393
+ else
1394
+ i8, s8 = index, []
1395
+ if (match_len = has_terminal?("1", false, index))
1396
+ r9 = true
1397
+ @index += match_len
1398
+ else
1399
+ terminal_parse_failure('"1"')
1400
+ r9 = nil
1401
+ end
1402
+ s8 << r9
1403
+ if r9
1404
+ s10, i10 = [], index
1405
+ loop do
1406
+ r11 = _nt_DIGIT
1407
+ if r11
1408
+ s10 << r11
1409
+ else
1410
+ break
1411
+ end
1412
+ if s10.size == 2
1413
+ break
1414
+ end
1415
+ end
1416
+ if s10.size < 2
1417
+ @index = i10
1418
+ r10 = nil
1419
+ else
1420
+ if s10.size < 2
1421
+ @terminal_failures.pop
1422
+ end
1423
+ r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
1424
+ end
1425
+ s8 << r10
1426
+ end
1427
+ if s8.last
1428
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
1429
+ r8.extend(DecOctet2)
1430
+ else
1431
+ @index = i8
1432
+ r8 = nil
1433
+ end
1434
+ if r8
1435
+ r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
1436
+ r0 = r8
1437
+ else
1438
+ i12, s12 = index, []
1439
+ if has_terminal?(@regexps[gr = '\A[1-9]'] ||= Regexp.new(gr), :regexp, index)
1440
+ r13 = true
1441
+ @index += 1
1442
+ else
1443
+ terminal_parse_failure('[1-9]')
1444
+ r13 = nil
1445
+ end
1446
+ s12 << r13
1447
+ if r13
1448
+ r14 = _nt_DIGIT
1449
+ s12 << r14
1450
+ end
1451
+ if s12.last
1452
+ r12 = instantiate_node(SyntaxNode,input, i12...index, s12)
1453
+ r12.extend(DecOctet3)
1454
+ else
1455
+ @index = i12
1456
+ r12 = nil
1457
+ end
1458
+ if r12
1459
+ r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
1460
+ r0 = r12
1461
+ else
1462
+ r15 = _nt_DIGIT
1463
+ if r15
1464
+ r15 = SyntaxNode.new(input, (index-1)...index) if r15 == true
1465
+ r0 = r15
1466
+ else
1467
+ @index = i0
1468
+ r0 = nil
1469
+ end
1470
+ end
1471
+ end
1472
+ end
1473
+ end
1474
+
1475
+ node_cache[:dec_octet][start_index] = r0
1476
+
1477
+ r0
1478
+ end
1479
+
1480
+ def _nt_HEXDIG
1481
+ start_index = index
1482
+ if node_cache[:HEXDIG].has_key?(index)
1483
+ cached = node_cache[:HEXDIG][index]
1484
+ if cached
1485
+ node_cache[:HEXDIG][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1486
+ @index = cached.interval.end
1487
+ end
1488
+ return cached
1489
+ end
1490
+
1491
+ i0 = index
1492
+ r1 = _nt_DIGIT
1493
+ if r1
1494
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1495
+ r0 = r1
1496
+ else
1497
+ if (match_len = has_terminal?("a", :insens, index))
1498
+ r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1499
+ @index += match_len
1500
+ else
1501
+ terminal_parse_failure('"A"')
1502
+ r2 = nil
1503
+ end
1504
+ if r2
1505
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
1506
+ r0 = r2
1507
+ else
1508
+ if (match_len = has_terminal?("b", :insens, index))
1509
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1510
+ @index += match_len
1511
+ else
1512
+ terminal_parse_failure('"B"')
1513
+ r3 = nil
1514
+ end
1515
+ if r3
1516
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
1517
+ r0 = r3
1518
+ else
1519
+ if (match_len = has_terminal?("c", :insens, index))
1520
+ r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1521
+ @index += match_len
1522
+ else
1523
+ terminal_parse_failure('"C"')
1524
+ r4 = nil
1525
+ end
1526
+ if r4
1527
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
1528
+ r0 = r4
1529
+ else
1530
+ if (match_len = has_terminal?("d", :insens, index))
1531
+ r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1532
+ @index += match_len
1533
+ else
1534
+ terminal_parse_failure('"D"')
1535
+ r5 = nil
1536
+ end
1537
+ if r5
1538
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
1539
+ r0 = r5
1540
+ else
1541
+ if (match_len = has_terminal?("e", :insens, index))
1542
+ r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1543
+ @index += match_len
1544
+ else
1545
+ terminal_parse_failure('"E"')
1546
+ r6 = nil
1547
+ end
1548
+ if r6
1549
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
1550
+ r0 = r6
1551
+ else
1552
+ if (match_len = has_terminal?("f", :insens, index))
1553
+ r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1554
+ @index += match_len
1555
+ else
1556
+ terminal_parse_failure('"F"')
1557
+ r7 = nil
1558
+ end
1559
+ if r7
1560
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
1561
+ r0 = r7
1562
+ else
1563
+ @index = i0
1564
+ r0 = nil
1565
+ end
1566
+ end
1567
+ end
1568
+ end
1569
+ end
1570
+ end
1571
+ end
1572
+
1573
+ node_cache[:HEXDIG][start_index] = r0
1574
+
1575
+ r0
1576
+ end
1577
+
1578
+ def _nt_DIGIT
1579
+ start_index = index
1580
+ if node_cache[:DIGIT].has_key?(index)
1581
+ cached = node_cache[:DIGIT][index]
1582
+ if cached
1583
+ node_cache[:DIGIT][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1584
+ @index = cached.interval.end
1585
+ end
1586
+ return cached
1587
+ end
1588
+
1589
+ if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index)
1590
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
1591
+ @index += 1
1592
+ else
1593
+ terminal_parse_failure('[0-9]')
1594
+ r0 = nil
1595
+ end
1596
+
1597
+ node_cache[:DIGIT][start_index] = r0
1598
+
1599
+ r0
1600
+ end
1601
+
1602
+ def _nt_DIGIT1
1603
+ start_index = index
1604
+ if node_cache[:DIGIT1].has_key?(index)
1605
+ cached = node_cache[:DIGIT1][index]
1606
+ if cached
1607
+ node_cache[:DIGIT1][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1608
+ @index = cached.interval.end
1609
+ end
1610
+ return cached
1611
+ end
1612
+
1613
+ if has_terminal?(@regexps[gr = '\A[1-9]'] ||= Regexp.new(gr), :regexp, index)
1614
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
1615
+ @index += 1
1616
+ else
1617
+ terminal_parse_failure('[1-9]')
1618
+ r0 = nil
1619
+ end
1620
+
1621
+ node_cache[:DIGIT1][start_index] = r0
1622
+
1623
+ r0
1624
+ end
1625
+
1626
+ module Uint0
1627
+ def DIGIT1
1628
+ elements[0]
1629
+ end
1630
+
1631
+ end
1632
+
1633
+ def _nt_uint
1634
+ start_index = index
1635
+ if node_cache[:uint].has_key?(index)
1636
+ cached = node_cache[:uint][index]
1637
+ if cached
1638
+ node_cache[:uint][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1639
+ @index = cached.interval.end
1640
+ end
1641
+ return cached
1642
+ end
1643
+
1644
+ i0 = index
1645
+ if (match_len = has_terminal?("0", false, index))
1646
+ r1 = true
1647
+ @index += match_len
1648
+ else
1649
+ terminal_parse_failure('"0"')
1650
+ r1 = nil
1651
+ end
1652
+ if r1
1653
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1654
+ r0 = r1
1655
+ else
1656
+ i2, s2 = index, []
1657
+ r3 = _nt_DIGIT1
1658
+ s2 << r3
1659
+ if r3
1660
+ s4, i4 = [], index
1661
+ loop do
1662
+ r5 = _nt_DIGIT
1663
+ if r5
1664
+ s4 << r5
1665
+ else
1666
+ break
1667
+ end
1668
+ end
1669
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
1670
+ s2 << r4
1671
+ end
1672
+ if s2.last
1673
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1674
+ r2.extend(Uint0)
1675
+ else
1676
+ @index = i2
1677
+ r2 = nil
1678
+ end
1679
+ if r2
1680
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
1681
+ r0 = r2
1682
+ else
1683
+ @index = i0
1684
+ r0 = nil
1685
+ end
1686
+ end
1687
+
1688
+ node_cache[:uint][start_index] = r0
1689
+
1690
+ r0
1691
+ end
1692
+
1693
+ end
1694
+
1695
+ class IPGRAMMARParser < Treetop::Runtime::CompiledParser
1696
+ include IPGRAMMAR
1697
+ end
1698
+