edn-abnf-ec 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,771 @@
1
+ # Encoding: UTF-8
2
+ # Autogenerated from a Treetop grammar. Edits may be lost.
3
+
4
+
5
+ module HGRAMMAR
6
+ include Treetop::Runtime
7
+
8
+ def root
9
+ @root ||= :app_string_h
10
+ end
11
+
12
+ module AppStringH0
13
+ def HEXDIG1
14
+ elements[0]
15
+ end
16
+
17
+ def S1
18
+ elements[1]
19
+ end
20
+
21
+ def HEXDIG2
22
+ elements[2]
23
+ end
24
+
25
+ def S2
26
+ elements[3]
27
+ end
28
+ end
29
+
30
+ module AppStringH1
31
+ def ast
32
+ Integer(elements[0].text_value + elements[2].text_value, 16).chr("BINARY")
33
+ end
34
+ end
35
+
36
+ module AppStringH2
37
+ def ellipsis
38
+ elements[0]
39
+ end
40
+
41
+ def S
42
+ elements[1]
43
+ end
44
+ end
45
+
46
+ module AppStringH3
47
+ def ast; ellipsis.ast end
48
+ end
49
+
50
+ module AppStringH4
51
+ end
52
+
53
+ module AppStringH5
54
+ def S
55
+ elements[0]
56
+ end
57
+
58
+ end
59
+
60
+ module AppStringH6
61
+ def unpack_thread(s)
62
+ case s[0]
63
+ when CBOR::Tagged
64
+ s[0]
65
+ when String
66
+ s.join
67
+ else
68
+ raise "@@@ unpack_thread #{s.inspect}"
69
+ end
70
+ end
71
+ def ast
72
+ e1 = elements[1].elements.map {|e| e.ast}
73
+ out = []
74
+ curr = []
75
+ e1.each { |el|
76
+ if curr.size == 0 || curr[0].class == el.class
77
+ curr << el
78
+ else
79
+ out << curr
80
+ curr = [el]
81
+ end
82
+ }
83
+ if out.size == 0 && (curr.size == 0 || String === curr[0])
84
+ curr.join.b # unpack_thread(curr)
85
+ else
86
+ CBOR::Tagged.new(888, (out << curr).map {|x| unpack_thread(x)})
87
+ end
88
+ end
89
+ end
90
+
91
+ def _nt_app_string_h
92
+ start_index = index
93
+ if node_cache[:app_string_h].has_key?(index)
94
+ cached = node_cache[:app_string_h][index]
95
+ if cached
96
+ node_cache[:app_string_h][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
97
+ @index = cached.interval.end
98
+ end
99
+ return cached
100
+ end
101
+
102
+ i0, s0 = index, []
103
+ r1 = _nt_S
104
+ s0 << r1
105
+ if r1
106
+ s2, i2 = [], index
107
+ loop do
108
+ i3 = index
109
+ i4, s4 = index, []
110
+ r5 = _nt_HEXDIG
111
+ s4 << r5
112
+ if r5
113
+ r6 = _nt_S
114
+ s4 << r6
115
+ if r6
116
+ r7 = _nt_HEXDIG
117
+ s4 << r7
118
+ if r7
119
+ r8 = _nt_S
120
+ s4 << r8
121
+ end
122
+ end
123
+ end
124
+ if s4.last
125
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
126
+ r4.extend(AppStringH0)
127
+ r4.extend(AppStringH1)
128
+ else
129
+ @index = i4
130
+ r4 = nil
131
+ end
132
+ if r4
133
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
134
+ r3 = r4
135
+ else
136
+ i9, s9 = index, []
137
+ r10 = _nt_ellipsis
138
+ s9 << r10
139
+ if r10
140
+ r11 = _nt_S
141
+ s9 << r11
142
+ end
143
+ if s9.last
144
+ r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
145
+ r9.extend(AppStringH2)
146
+ r9.extend(AppStringH3)
147
+ else
148
+ @index = i9
149
+ r9 = nil
150
+ end
151
+ if r9
152
+ r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
153
+ r3 = r9
154
+ else
155
+ @index = i3
156
+ r3 = nil
157
+ end
158
+ end
159
+ if r3
160
+ s2 << r3
161
+ else
162
+ break
163
+ end
164
+ end
165
+ r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
166
+ s0 << r2
167
+ if r2
168
+ i13, s13 = index, []
169
+ if (match_len = has_terminal?("#", false, index))
170
+ r14 = true
171
+ @index += match_len
172
+ else
173
+ terminal_parse_failure('"#"')
174
+ r14 = nil
175
+ end
176
+ s13 << r14
177
+ if r14
178
+ s15, i15 = [], index
179
+ loop do
180
+ r16 = _nt_non_lf
181
+ if r16
182
+ s15 << r16
183
+ else
184
+ break
185
+ end
186
+ end
187
+ r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
188
+ s13 << r15
189
+ end
190
+ if s13.last
191
+ r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
192
+ r13.extend(AppStringH4)
193
+ else
194
+ @index = i13
195
+ r13 = nil
196
+ end
197
+ if r13
198
+ r12 = r13
199
+ else
200
+ r12 = instantiate_node(SyntaxNode,input, index...index)
201
+ end
202
+ s0 << r12
203
+ end
204
+ end
205
+ if s0.last
206
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
207
+ r0.extend(AppStringH5)
208
+ r0.extend(AppStringH6)
209
+ else
210
+ @index = i0
211
+ r0 = nil
212
+ end
213
+
214
+ node_cache[:app_string_h][start_index] = r0
215
+
216
+ r0
217
+ end
218
+
219
+ module Ellipsis0
220
+ def ast; CBOR::Tagged.new(888, nil) end
221
+ end
222
+
223
+ def _nt_ellipsis
224
+ start_index = index
225
+ if node_cache[:ellipsis].has_key?(index)
226
+ cached = node_cache[:ellipsis][index]
227
+ if cached
228
+ node_cache[:ellipsis][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
229
+ @index = cached.interval.end
230
+ end
231
+ return cached
232
+ end
233
+
234
+ s0, i0 = [], index
235
+ loop do
236
+ if (match_len = has_terminal?(".", false, index))
237
+ r1 = true
238
+ @index += match_len
239
+ else
240
+ terminal_parse_failure('"."')
241
+ r1 = nil
242
+ end
243
+ if r1
244
+ s0 << r1
245
+ else
246
+ break
247
+ end
248
+ end
249
+ if s0.size < 3
250
+ @index = i0
251
+ r0 = nil
252
+ else
253
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
254
+ r0.extend(Ellipsis0)
255
+ r0.extend(Ellipsis0)
256
+ end
257
+
258
+ node_cache[:ellipsis][start_index] = r0
259
+
260
+ r0
261
+ end
262
+
263
+ def _nt_HEXDIG
264
+ start_index = index
265
+ if node_cache[:HEXDIG].has_key?(index)
266
+ cached = node_cache[:HEXDIG][index]
267
+ if cached
268
+ node_cache[:HEXDIG][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
269
+ @index = cached.interval.end
270
+ end
271
+ return cached
272
+ end
273
+
274
+ i0 = index
275
+ r1 = _nt_DIGIT
276
+ if r1
277
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
278
+ r0 = r1
279
+ else
280
+ if (match_len = has_terminal?("a", :insens, index))
281
+ r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
282
+ @index += match_len
283
+ else
284
+ terminal_parse_failure('"A"')
285
+ r2 = nil
286
+ end
287
+ if r2
288
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
289
+ r0 = r2
290
+ else
291
+ if (match_len = has_terminal?("b", :insens, index))
292
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
293
+ @index += match_len
294
+ else
295
+ terminal_parse_failure('"B"')
296
+ r3 = nil
297
+ end
298
+ if r3
299
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
300
+ r0 = r3
301
+ else
302
+ if (match_len = has_terminal?("c", :insens, index))
303
+ r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
304
+ @index += match_len
305
+ else
306
+ terminal_parse_failure('"C"')
307
+ r4 = nil
308
+ end
309
+ if r4
310
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
311
+ r0 = r4
312
+ else
313
+ if (match_len = has_terminal?("d", :insens, index))
314
+ r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
315
+ @index += match_len
316
+ else
317
+ terminal_parse_failure('"D"')
318
+ r5 = nil
319
+ end
320
+ if r5
321
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
322
+ r0 = r5
323
+ else
324
+ if (match_len = has_terminal?("e", :insens, index))
325
+ r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
326
+ @index += match_len
327
+ else
328
+ terminal_parse_failure('"E"')
329
+ r6 = nil
330
+ end
331
+ if r6
332
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
333
+ r0 = r6
334
+ else
335
+ if (match_len = has_terminal?("f", :insens, index))
336
+ r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
337
+ @index += match_len
338
+ else
339
+ terminal_parse_failure('"F"')
340
+ r7 = nil
341
+ end
342
+ if r7
343
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
344
+ r0 = r7
345
+ else
346
+ @index = i0
347
+ r0 = nil
348
+ end
349
+ end
350
+ end
351
+ end
352
+ end
353
+ end
354
+ end
355
+
356
+ node_cache[:HEXDIG][start_index] = r0
357
+
358
+ r0
359
+ end
360
+
361
+ def _nt_DIGIT
362
+ start_index = index
363
+ if node_cache[:DIGIT].has_key?(index)
364
+ cached = node_cache[:DIGIT][index]
365
+ if cached
366
+ node_cache[:DIGIT][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
367
+ @index = cached.interval.end
368
+ end
369
+ return cached
370
+ end
371
+
372
+ if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index)
373
+ r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
374
+ @index += 1
375
+ else
376
+ terminal_parse_failure('[0-9]')
377
+ r0 = nil
378
+ end
379
+
380
+ node_cache[:DIGIT][start_index] = r0
381
+
382
+ r0
383
+ end
384
+
385
+ def _nt_blank
386
+ start_index = index
387
+ if node_cache[:blank].has_key?(index)
388
+ cached = node_cache[:blank][index]
389
+ if cached
390
+ node_cache[:blank][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
391
+ @index = cached.interval.end
392
+ end
393
+ return cached
394
+ end
395
+
396
+ i0 = index
397
+ if (match_len = has_terminal?("\t", false, index))
398
+ r1 = true
399
+ @index += match_len
400
+ else
401
+ terminal_parse_failure('"\\t"')
402
+ r1 = nil
403
+ end
404
+ if r1
405
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
406
+ r0 = r1
407
+ else
408
+ if (match_len = has_terminal?("\n", false, index))
409
+ r2 = true
410
+ @index += match_len
411
+ else
412
+ terminal_parse_failure('"\\n"')
413
+ r2 = nil
414
+ end
415
+ if r2
416
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
417
+ r0 = r2
418
+ else
419
+ if (match_len = has_terminal?("\r", false, index))
420
+ r3 = true
421
+ @index += match_len
422
+ else
423
+ terminal_parse_failure('"\\r"')
424
+ r3 = nil
425
+ end
426
+ if r3
427
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
428
+ r0 = r3
429
+ else
430
+ if (match_len = has_terminal?(" ", false, index))
431
+ r4 = true
432
+ @index += match_len
433
+ else
434
+ terminal_parse_failure('" "')
435
+ r4 = nil
436
+ end
437
+ if r4
438
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
439
+ r0 = r4
440
+ else
441
+ @index = i0
442
+ r0 = nil
443
+ end
444
+ end
445
+ end
446
+ end
447
+
448
+ node_cache[:blank][start_index] = r0
449
+
450
+ r0
451
+ end
452
+
453
+ def _nt_non_slash
454
+ start_index = index
455
+ if node_cache[:non_slash].has_key?(index)
456
+ cached = node_cache[:non_slash][index]
457
+ if cached
458
+ node_cache[:non_slash][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
459
+ @index = cached.interval.end
460
+ end
461
+ return cached
462
+ end
463
+
464
+ i0 = index
465
+ r1 = _nt_blank
466
+ if r1
467
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
468
+ r0 = r1
469
+ else
470
+ if has_terminal?(@regexps[gr = '\A[!-\\.]'] ||= Regexp.new(gr), :regexp, index)
471
+ r2 = true
472
+ @index += 1
473
+ else
474
+ terminal_parse_failure('[!-\\.]')
475
+ r2 = nil
476
+ end
477
+ if r2
478
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
479
+ r0 = r2
480
+ else
481
+ if has_terminal?(@regexps[gr = '\A[0-􏿿]'] ||= Regexp.new(gr), :regexp, index)
482
+ r3 = true
483
+ @index += 1
484
+ else
485
+ terminal_parse_failure('[0-􏿿]')
486
+ r3 = nil
487
+ end
488
+ if r3
489
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
490
+ r0 = r3
491
+ else
492
+ @index = i0
493
+ r0 = nil
494
+ end
495
+ end
496
+ end
497
+
498
+ node_cache[:non_slash][start_index] = r0
499
+
500
+ r0
501
+ end
502
+
503
+ def _nt_non_lf
504
+ start_index = index
505
+ if node_cache[:non_lf].has_key?(index)
506
+ cached = node_cache[:non_lf][index]
507
+ if cached
508
+ node_cache[:non_lf][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
509
+ @index = cached.interval.end
510
+ end
511
+ return cached
512
+ end
513
+
514
+ i0 = index
515
+ if (match_len = has_terminal?("\t", false, index))
516
+ r1 = true
517
+ @index += match_len
518
+ else
519
+ terminal_parse_failure('"\\t"')
520
+ r1 = nil
521
+ end
522
+ if r1
523
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
524
+ r0 = r1
525
+ else
526
+ if (match_len = has_terminal?("\r", false, index))
527
+ r2 = true
528
+ @index += match_len
529
+ else
530
+ terminal_parse_failure('"\\r"')
531
+ r2 = nil
532
+ end
533
+ if r2
534
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
535
+ r0 = r2
536
+ else
537
+ if has_terminal?(@regexps[gr = '\A[\\ -퟿]'] ||= Regexp.new(gr), :regexp, index)
538
+ r3 = true
539
+ @index += 1
540
+ else
541
+ terminal_parse_failure('[\\ -퟿]')
542
+ r3 = nil
543
+ end
544
+ if r3
545
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
546
+ r0 = r3
547
+ else
548
+ if has_terminal?(@regexps[gr = '\A[-􏿿]'] ||= Regexp.new(gr), :regexp, index)
549
+ r4 = true
550
+ @index += 1
551
+ else
552
+ terminal_parse_failure('[-􏿿]')
553
+ r4 = nil
554
+ end
555
+ if r4
556
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
557
+ r0 = r4
558
+ else
559
+ @index = i0
560
+ r0 = nil
561
+ end
562
+ end
563
+ end
564
+ end
565
+
566
+ node_cache[:non_lf][start_index] = r0
567
+
568
+ r0
569
+ end
570
+
571
+ module S0
572
+ def comment
573
+ elements[0]
574
+ end
575
+
576
+ end
577
+
578
+ module S1
579
+ end
580
+
581
+ def _nt_S
582
+ start_index = index
583
+ if node_cache[:S].has_key?(index)
584
+ cached = node_cache[:S][index]
585
+ if cached
586
+ node_cache[:S][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
587
+ @index = cached.interval.end
588
+ end
589
+ return cached
590
+ end
591
+
592
+ i0, s0 = index, []
593
+ s1, i1 = [], index
594
+ loop do
595
+ r2 = _nt_blank
596
+ if r2
597
+ s1 << r2
598
+ else
599
+ break
600
+ end
601
+ end
602
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
603
+ s0 << r1
604
+ if r1
605
+ s3, i3 = [], index
606
+ loop do
607
+ i4, s4 = index, []
608
+ r5 = _nt_comment
609
+ s4 << r5
610
+ if r5
611
+ s6, i6 = [], index
612
+ loop do
613
+ r7 = _nt_blank
614
+ if r7
615
+ s6 << r7
616
+ else
617
+ break
618
+ end
619
+ end
620
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
621
+ s4 << r6
622
+ end
623
+ if s4.last
624
+ r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
625
+ r4.extend(S0)
626
+ else
627
+ @index = i4
628
+ r4 = nil
629
+ end
630
+ if r4
631
+ s3 << r4
632
+ else
633
+ break
634
+ end
635
+ end
636
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
637
+ s0 << r3
638
+ end
639
+ if s0.last
640
+ r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
641
+ r0.extend(S1)
642
+ else
643
+ @index = i0
644
+ r0 = nil
645
+ end
646
+
647
+ node_cache[:S][start_index] = r0
648
+
649
+ r0
650
+ end
651
+
652
+ module Comment0
653
+ end
654
+
655
+ module Comment1
656
+ end
657
+
658
+ def _nt_comment
659
+ start_index = index
660
+ if node_cache[:comment].has_key?(index)
661
+ cached = node_cache[:comment][index]
662
+ if cached
663
+ node_cache[:comment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
664
+ @index = cached.interval.end
665
+ end
666
+ return cached
667
+ end
668
+
669
+ i0 = index
670
+ i1, s1 = index, []
671
+ if (match_len = has_terminal?("/", false, index))
672
+ r2 = true
673
+ @index += match_len
674
+ else
675
+ terminal_parse_failure('"/"')
676
+ r2 = nil
677
+ end
678
+ s1 << r2
679
+ if r2
680
+ s3, i3 = [], index
681
+ loop do
682
+ r4 = _nt_non_slash
683
+ if r4
684
+ s3 << r4
685
+ else
686
+ break
687
+ end
688
+ end
689
+ r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
690
+ s1 << r3
691
+ if r3
692
+ if (match_len = has_terminal?("/", false, index))
693
+ r5 = true
694
+ @index += match_len
695
+ else
696
+ terminal_parse_failure('"/"')
697
+ r5 = nil
698
+ end
699
+ s1 << r5
700
+ end
701
+ end
702
+ if s1.last
703
+ r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
704
+ r1.extend(Comment0)
705
+ else
706
+ @index = i1
707
+ r1 = nil
708
+ end
709
+ if r1
710
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
711
+ r0 = r1
712
+ else
713
+ i6, s6 = index, []
714
+ if (match_len = has_terminal?("#", false, index))
715
+ r7 = true
716
+ @index += match_len
717
+ else
718
+ terminal_parse_failure('"#"')
719
+ r7 = nil
720
+ end
721
+ s6 << r7
722
+ if r7
723
+ s8, i8 = [], index
724
+ loop do
725
+ r9 = _nt_non_lf
726
+ if r9
727
+ s8 << r9
728
+ else
729
+ break
730
+ end
731
+ end
732
+ r8 = instantiate_node(SyntaxNode,input, i8...index, s8)
733
+ s6 << r8
734
+ if r8
735
+ if (match_len = has_terminal?("\n", false, index))
736
+ r10 = true
737
+ @index += match_len
738
+ else
739
+ terminal_parse_failure('"\\n"')
740
+ r10 = nil
741
+ end
742
+ s6 << r10
743
+ end
744
+ end
745
+ if s6.last
746
+ r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
747
+ r6.extend(Comment1)
748
+ else
749
+ @index = i6
750
+ r6 = nil
751
+ end
752
+ if r6
753
+ r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
754
+ r0 = r6
755
+ else
756
+ @index = i0
757
+ r0 = nil
758
+ end
759
+ end
760
+
761
+ node_cache[:comment][start_index] = r0
762
+
763
+ r0
764
+ end
765
+
766
+ end
767
+
768
+ class HGRAMMARParser < Treetop::Runtime::CompiledParser
769
+ include HGRAMMAR
770
+ end
771
+