dns-zonefile 1.0.7 → 1.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.
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dns-zonefile
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig R Webster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-24 00:00:00.000000000 Z
11
+ date: 2016-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '2.6'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '2.6'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -82,6 +82,7 @@ extra_rdoc_files: []
82
82
  files:
83
83
  - ".gitignore"
84
84
  - ".travis.yml"
85
+ - Dockerfile
85
86
  - Gemfile
86
87
  - LICENCE
87
88
  - README.md
@@ -92,9 +93,9 @@ files:
92
93
  - doc/example2.com.zone
93
94
  - doc/example3.com.zone
94
95
  - doc/zonefile.example
95
- - doc/zonefile.treetop
96
+ - docker-compose.yml
96
97
  - lib/dns/zonefile.rb
97
- - lib/dns/zonefile/parser.rb
98
+ - lib/dns/zonefile.treetop
98
99
  - lib/dns/zonefile/version.rb
99
100
  - spec/dns/zonefile_spec.rb
100
101
  - spec/spec_helper.rb
@@ -1,4639 +0,0 @@
1
- require 'treetop'
2
-
3
- module DNS
4
- module Zonefile
5
- # Autogenerated from a Treetop grammar. Edits may be lost.
6
-
7
-
8
- module ZonefileGrammar # :nodoc:
9
- include Treetop::Runtime
10
-
11
- def root
12
- @root ||= :zone
13
- end
14
-
15
- module Zone0
16
- def soa
17
- elements[1]
18
- end
19
-
20
- end
21
-
22
- module Zone1
23
- def variables
24
- @variables ||= begin
25
- raw = elements[0].elements.select { |e| e.to_s =~ /^\$/ }
26
- variables = {}
27
- raw.each do |e|
28
- variables[e.name.text_value.to_s] = e.value.text_value.to_s
29
- end
30
- variables
31
- end
32
- end
33
-
34
- def origin
35
- soa.origin.host.to_s
36
- end
37
-
38
- def to_s
39
- text_value
40
- end
41
-
42
- def rr
43
- elements[-1].elements.select { |e| e.to_s !~ /\A\s*([;$].*)?\z|\A\z/; }
44
- end
45
-
46
- def entries
47
- elements[0].elements.select { |e| e.to_s !~ /\A\s*(;.*)?\z|\A\z/; } +
48
- [soa] +
49
- elements[-1].elements.select { |e| e.to_s !~ /\A\s*(;.*)?\z|\A\z/; }
50
- end
51
- end
52
-
53
- def _nt_zone
54
- start_index = index
55
- if node_cache[:zone].has_key?(index)
56
- cached = node_cache[:zone][index]
57
- if cached
58
- node_cache[:zone][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
59
- @index = cached.interval.end
60
- end
61
- return cached
62
- end
63
-
64
- i0, s0 = index, []
65
- s1, i1 = [], index
66
- loop do
67
- i2 = index
68
- r3 = _nt_variable
69
- if r3
70
- r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
71
- r2 = r3
72
- else
73
- r4 = _nt_space_or_break
74
- if r4
75
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
76
- r2 = r4
77
- else
78
- r5 = _nt_comment
79
- if r5
80
- r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
81
- r2 = r5
82
- else
83
- @index = i2
84
- r2 = nil
85
- end
86
- end
87
- end
88
- if r2
89
- s1 << r2
90
- else
91
- break
92
- end
93
- end
94
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
95
- s0 << r1
96
- if r1
97
- r6 = _nt_soa
98
- s0 << r6
99
- if r6
100
- s7, i7 = [], index
101
- loop do
102
- i8 = index
103
- r9 = _nt_resource_record
104
- if r9
105
- r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
106
- r8 = r9
107
- else
108
- r10 = _nt_variable
109
- if r10
110
- r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
111
- r8 = r10
112
- else
113
- r11 = _nt_comment
114
- if r11
115
- r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
116
- r8 = r11
117
- else
118
- r12 = _nt_space
119
- if r12
120
- r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
121
- r8 = r12
122
- else
123
- r13 = _nt_linebreak
124
- if r13
125
- r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true
126
- r8 = r13
127
- else
128
- @index = i8
129
- r8 = nil
130
- end
131
- end
132
- end
133
- end
134
- end
135
- if r8
136
- s7 << r8
137
- else
138
- break
139
- end
140
- end
141
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
142
- s0 << r7
143
- end
144
- end
145
- if s0.last
146
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
147
- r0.extend(Zone0)
148
- r0.extend(Zone1)
149
- else
150
- @index = i0
151
- r0 = nil
152
- end
153
-
154
- node_cache[:zone][start_index] = r0
155
-
156
- r0
157
- end
158
-
159
- module Variable0
160
- def name
161
- elements[1]
162
- end
163
-
164
- def space
165
- elements[2]
166
- end
167
-
168
- def value
169
- elements[3]
170
- end
171
-
172
- end
173
-
174
- module Variable1
175
- def to_s
176
- "$#{name.text_value.to_s} #{value.text_value.to_s}"
177
- end
178
-
179
- def parse_type ; :variable ; end
180
- end
181
-
182
- def _nt_variable
183
- start_index = index
184
- if node_cache[:variable].has_key?(index)
185
- cached = node_cache[:variable][index]
186
- if cached
187
- node_cache[:variable][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
188
- @index = cached.interval.end
189
- end
190
- return cached
191
- end
192
-
193
- i0, s0 = index, []
194
- if (match_len = has_terminal?("$", false, index))
195
- r1 = true
196
- @index += match_len
197
- else
198
- terminal_parse_failure('"$"')
199
- r1 = nil
200
- end
201
- s0 << r1
202
- if r1
203
- s2, i2 = [], index
204
- loop do
205
- if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9]'] ||= Regexp.new(gr), :regexp, index)
206
- r3 = true
207
- @index += 1
208
- else
209
- terminal_parse_failure('[a-zA-Z0-9]')
210
- r3 = nil
211
- end
212
- if r3
213
- s2 << r3
214
- else
215
- break
216
- end
217
- end
218
- if s2.empty?
219
- @index = i2
220
- r2 = nil
221
- else
222
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
223
- end
224
- s0 << r2
225
- if r2
226
- r4 = _nt_space
227
- s0 << r4
228
- if r4
229
- s5, i5 = [], index
230
- loop do
231
- if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9\\.\\-_]'] ||= Regexp.new(gr), :regexp, index)
232
- r6 = true
233
- @index += 1
234
- else
235
- terminal_parse_failure('[a-zA-Z0-9\\.\\-_]')
236
- r6 = nil
237
- end
238
- if r6
239
- s5 << r6
240
- else
241
- break
242
- end
243
- end
244
- if s5.empty?
245
- @index = i5
246
- r5 = nil
247
- else
248
- r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
249
- end
250
- s0 << r5
251
- if r5
252
- r8 = _nt_space
253
- if r8
254
- r7 = r8
255
- else
256
- r7 = instantiate_node(SyntaxNode,input, index...index)
257
- end
258
- s0 << r7
259
- if r7
260
- r10 = _nt_comment
261
- if r10
262
- r9 = r10
263
- else
264
- r9 = instantiate_node(SyntaxNode,input, index...index)
265
- end
266
- s0 << r9
267
- end
268
- end
269
- end
270
- end
271
- end
272
- if s0.last
273
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
274
- r0.extend(Variable0)
275
- r0.extend(Variable1)
276
- else
277
- @index = i0
278
- r0 = nil
279
- end
280
-
281
- node_cache[:variable][start_index] = r0
282
-
283
- r0
284
- end
285
-
286
- module Soa0
287
- def origin
288
- elements[0]
289
- end
290
-
291
- def space1
292
- elements[1]
293
- end
294
-
295
- def ttl
296
- elements[2]
297
- end
298
-
299
- def klass
300
- elements[3]
301
- end
302
-
303
- def space2
304
- elements[5]
305
- end
306
-
307
- def ns
308
- elements[6]
309
- end
310
-
311
- def space3
312
- elements[7]
313
- end
314
-
315
- def rp
316
- elements[8]
317
- end
318
-
319
- def space4
320
- elements[9]
321
- end
322
-
323
- def serial
324
- elements[13]
325
- end
326
-
327
- def space_or_break1
328
- elements[15]
329
- end
330
-
331
- def refresh
332
- elements[16]
333
- end
334
-
335
- def space_or_break2
336
- elements[18]
337
- end
338
-
339
- def reretry
340
- elements[19]
341
- end
342
-
343
- def space_or_break3
344
- elements[21]
345
- end
346
-
347
- def expiry
348
- elements[22]
349
- end
350
-
351
- def space_or_break4
352
- elements[24]
353
- end
354
-
355
- def nxttl
356
- elements[25]
357
- end
358
-
359
- end
360
-
361
- module Soa1
362
- def to_s
363
- "#{origin} #{ttl} #{klass} SOA #{ns} #{rp} (#{serial} #{refresh} #{reretry} #{expiry} #{nxttl})"
364
- end
365
-
366
- def parse_type ; :soa ; end
367
- end
368
-
369
- def _nt_soa
370
- start_index = index
371
- if node_cache[:soa].has_key?(index)
372
- cached = node_cache[:soa][index]
373
- if cached
374
- node_cache[:soa][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
375
- @index = cached.interval.end
376
- end
377
- return cached
378
- end
379
-
380
- i0, s0 = index, []
381
- r1 = _nt_origin
382
- s0 << r1
383
- if r1
384
- r2 = _nt_space
385
- s0 << r2
386
- if r2
387
- r3 = _nt_ttl
388
- s0 << r3
389
- if r3
390
- r4 = _nt_klass
391
- s0 << r4
392
- if r4
393
- if (match_len = has_terminal?("SOA", false, index))
394
- r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
395
- @index += match_len
396
- else
397
- terminal_parse_failure('"SOA"')
398
- r5 = nil
399
- end
400
- s0 << r5
401
- if r5
402
- r6 = _nt_space
403
- s0 << r6
404
- if r6
405
- r7 = _nt_ns
406
- s0 << r7
407
- if r7
408
- r8 = _nt_space
409
- s0 << r8
410
- if r8
411
- r9 = _nt_rp
412
- s0 << r9
413
- if r9
414
- r10 = _nt_space
415
- s0 << r10
416
- if r10
417
- if (match_len = has_terminal?("(", false, index))
418
- r12 = true
419
- @index += match_len
420
- else
421
- terminal_parse_failure('"("')
422
- r12 = nil
423
- end
424
- if r12
425
- r11 = r12
426
- else
427
- r11 = instantiate_node(SyntaxNode,input, index...index)
428
- end
429
- s0 << r11
430
- if r11
431
- s13, i13 = [], index
432
- loop do
433
- r14 = _nt_multiline_comment
434
- if r14
435
- s13 << r14
436
- else
437
- break
438
- end
439
- end
440
- r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
441
- s0 << r13
442
- if r13
443
- s15, i15 = [], index
444
- loop do
445
- r16 = _nt_space_or_break
446
- if r16
447
- s15 << r16
448
- else
449
- break
450
- end
451
- end
452
- r15 = instantiate_node(SyntaxNode,input, i15...index, s15)
453
- s0 << r15
454
- if r15
455
- r17 = _nt_serial
456
- s0 << r17
457
- if r17
458
- s18, i18 = [], index
459
- loop do
460
- r19 = _nt_multiline_comment
461
- if r19
462
- s18 << r19
463
- else
464
- break
465
- end
466
- end
467
- r18 = instantiate_node(SyntaxNode,input, i18...index, s18)
468
- s0 << r18
469
- if r18
470
- r20 = _nt_space_or_break
471
- s0 << r20
472
- if r20
473
- r21 = _nt_refresh
474
- s0 << r21
475
- if r21
476
- s22, i22 = [], index
477
- loop do
478
- r23 = _nt_multiline_comment
479
- if r23
480
- s22 << r23
481
- else
482
- break
483
- end
484
- end
485
- r22 = instantiate_node(SyntaxNode,input, i22...index, s22)
486
- s0 << r22
487
- if r22
488
- r24 = _nt_space_or_break
489
- s0 << r24
490
- if r24
491
- r25 = _nt_reretry
492
- s0 << r25
493
- if r25
494
- s26, i26 = [], index
495
- loop do
496
- r27 = _nt_multiline_comment
497
- if r27
498
- s26 << r27
499
- else
500
- break
501
- end
502
- end
503
- r26 = instantiate_node(SyntaxNode,input, i26...index, s26)
504
- s0 << r26
505
- if r26
506
- r28 = _nt_space_or_break
507
- s0 << r28
508
- if r28
509
- r29 = _nt_expiry
510
- s0 << r29
511
- if r29
512
- s30, i30 = [], index
513
- loop do
514
- r31 = _nt_multiline_comment
515
- if r31
516
- s30 << r31
517
- else
518
- break
519
- end
520
- end
521
- r30 = instantiate_node(SyntaxNode,input, i30...index, s30)
522
- s0 << r30
523
- if r30
524
- r32 = _nt_space_or_break
525
- s0 << r32
526
- if r32
527
- r33 = _nt_nxttl
528
- s0 << r33
529
- if r33
530
- s34, i34 = [], index
531
- loop do
532
- r35 = _nt_multiline_comment
533
- if r35
534
- s34 << r35
535
- else
536
- break
537
- end
538
- end
539
- r34 = instantiate_node(SyntaxNode,input, i34...index, s34)
540
- s0 << r34
541
- if r34
542
- s36, i36 = [], index
543
- loop do
544
- r37 = _nt_space_or_break
545
- if r37
546
- s36 << r37
547
- else
548
- break
549
- end
550
- end
551
- r36 = instantiate_node(SyntaxNode,input, i36...index, s36)
552
- s0 << r36
553
- if r36
554
- if (match_len = has_terminal?(")", false, index))
555
- r39 = true
556
- @index += match_len
557
- else
558
- terminal_parse_failure('")"')
559
- r39 = nil
560
- end
561
- if r39
562
- r38 = r39
563
- else
564
- r38 = instantiate_node(SyntaxNode,input, index...index)
565
- end
566
- s0 << r38
567
- end
568
- end
569
- end
570
- end
571
- end
572
- end
573
- end
574
- end
575
- end
576
- end
577
- end
578
- end
579
- end
580
- end
581
- end
582
- end
583
- end
584
- end
585
- end
586
- end
587
- end
588
- end
589
- end
590
- end
591
- end
592
- end
593
- end
594
- end
595
- if s0.last
596
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
597
- r0.extend(Soa0)
598
- r0.extend(Soa1)
599
- else
600
- @index = i0
601
- r0 = nil
602
- end
603
-
604
- node_cache[:soa][start_index] = r0
605
-
606
- r0
607
- end
608
-
609
- module ResourceRecord0
610
- def record
611
- elements[0]
612
- end
613
-
614
- def linebreak
615
- elements[3]
616
- end
617
- end
618
-
619
- module ResourceRecord1
620
- def zone
621
- p = parent
622
- while p.respond_to?(:parent) && p.parent
623
- p = p.parent
624
- end
625
- p
626
- end
627
-
628
- def to_s
629
- text_value
630
- end
631
-
632
- def record_type
633
- record.record_type
634
- end
635
-
636
- def ttl
637
- record.ttl || zone.variables['TTL'].to_i
638
- end
639
-
640
- def method_missing(method_name, *args)
641
- if record.respond_to?(method_name)
642
- record.send(method_name, *args)
643
- end
644
- end
645
-
646
- def respond_to?(method_name)
647
- super || record.respond_to?(method_name)
648
- end
649
-
650
- def parse_type ; :record ; end
651
- end
652
-
653
- def _nt_resource_record
654
- start_index = index
655
- if node_cache[:resource_record].has_key?(index)
656
- cached = node_cache[:resource_record][index]
657
- if cached
658
- node_cache[:resource_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
659
- @index = cached.interval.end
660
- end
661
- return cached
662
- end
663
-
664
- i0, s0 = index, []
665
- i1 = index
666
- r2 = _nt_a_record
667
- if r2
668
- r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
669
- r1 = r2
670
- else
671
- r3 = _nt_aaaa_record
672
- if r3
673
- r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
674
- r1 = r3
675
- else
676
- r4 = _nt_cname_record
677
- if r4
678
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
679
- r1 = r4
680
- else
681
- r5 = _nt_mx_record
682
- if r5
683
- r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
684
- r1 = r5
685
- else
686
- r6 = _nt_naptr_record
687
- if r6
688
- r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
689
- r1 = r6
690
- else
691
- r7 = _nt_ns_record
692
- if r7
693
- r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
694
- r1 = r7
695
- else
696
- r8 = _nt_ptr_record
697
- if r8
698
- r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
699
- r1 = r8
700
- else
701
- r9 = _nt_srv_record
702
- if r9
703
- r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
704
- r1 = r9
705
- else
706
- r10 = _nt_spf_record
707
- if r10
708
- r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
709
- r1 = r10
710
- else
711
- r11 = _nt_txt_record
712
- if r11
713
- r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
714
- r1 = r11
715
- else
716
- r12 = _nt_soa_record
717
- if r12
718
- r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
719
- r1 = r12
720
- else
721
- @index = i1
722
- r1 = nil
723
- end
724
- end
725
- end
726
- end
727
- end
728
- end
729
- end
730
- end
731
- end
732
- end
733
- end
734
- s0 << r1
735
- if r1
736
- s13, i13 = [], index
737
- loop do
738
- r14 = _nt_space
739
- if r14
740
- s13 << r14
741
- else
742
- break
743
- end
744
- end
745
- r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
746
- s0 << r13
747
- if r13
748
- r16 = _nt_comment
749
- if r16
750
- r15 = r16
751
- else
752
- r15 = instantiate_node(SyntaxNode,input, index...index)
753
- end
754
- s0 << r15
755
- if r15
756
- r17 = _nt_linebreak
757
- s0 << r17
758
- end
759
- end
760
- end
761
- if s0.last
762
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
763
- r0.extend(ResourceRecord0)
764
- r0.extend(ResourceRecord1)
765
- else
766
- @index = i0
767
- r0 = nil
768
- end
769
-
770
- node_cache[:resource_record][start_index] = r0
771
-
772
- r0
773
- end
774
-
775
- module ARecord0
776
- def host
777
- elements[0]
778
- end
779
-
780
- def space1
781
- elements[1]
782
- end
783
-
784
- def ms_age
785
- elements[2]
786
- end
787
-
788
- def ttl
789
- elements[3]
790
- end
791
-
792
- def klass
793
- elements[4]
794
- end
795
-
796
- def space2
797
- elements[6]
798
- end
799
-
800
- def ip_address
801
- elements[7]
802
- end
803
- end
804
-
805
- module ARecord1
806
- def to_s
807
- "#{host} #{ms_age} #{ttl} #{klass} A #{ip_address}"
808
- end
809
-
810
- def record_type
811
- "A"
812
- end
813
- end
814
-
815
- def _nt_a_record
816
- start_index = index
817
- if node_cache[:a_record].has_key?(index)
818
- cached = node_cache[:a_record][index]
819
- if cached
820
- node_cache[:a_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
821
- @index = cached.interval.end
822
- end
823
- return cached
824
- end
825
-
826
- i0, s0 = index, []
827
- r1 = _nt_host
828
- s0 << r1
829
- if r1
830
- r2 = _nt_space
831
- s0 << r2
832
- if r2
833
- r3 = _nt_ms_age
834
- s0 << r3
835
- if r3
836
- r4 = _nt_ttl
837
- s0 << r4
838
- if r4
839
- r5 = _nt_klass
840
- s0 << r5
841
- if r5
842
- if (match_len = has_terminal?("A", false, index))
843
- r6 = true
844
- @index += match_len
845
- else
846
- terminal_parse_failure('"A"')
847
- r6 = nil
848
- end
849
- s0 << r6
850
- if r6
851
- r7 = _nt_space
852
- s0 << r7
853
- if r7
854
- r8 = _nt_ip_address
855
- s0 << r8
856
- end
857
- end
858
- end
859
- end
860
- end
861
- end
862
- end
863
- if s0.last
864
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
865
- r0.extend(ARecord0)
866
- r0.extend(ARecord1)
867
- else
868
- @index = i0
869
- r0 = nil
870
- end
871
-
872
- node_cache[:a_record][start_index] = r0
873
-
874
- r0
875
- end
876
-
877
- module IpAddress0
878
- end
879
-
880
- module IpAddress1
881
- def to_s
882
- text_value
883
- end
884
- end
885
-
886
- def _nt_ip_address
887
- start_index = index
888
- if node_cache[:ip_address].has_key?(index)
889
- cached = node_cache[:ip_address][index]
890
- if cached
891
- node_cache[:ip_address][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
892
- @index = cached.interval.end
893
- end
894
- return cached
895
- end
896
-
897
- i0, s0 = index, []
898
- s1, i1 = [], index
899
- loop do
900
- if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
901
- r2 = true
902
- @index += 1
903
- else
904
- terminal_parse_failure('[\\d]')
905
- r2 = nil
906
- end
907
- if r2
908
- s1 << r2
909
- else
910
- break
911
- end
912
- end
913
- if s1.empty?
914
- @index = i1
915
- r1 = nil
916
- else
917
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
918
- end
919
- s0 << r1
920
- if r1
921
- if (match_len = has_terminal?(".", false, index))
922
- r3 = true
923
- @index += match_len
924
- else
925
- terminal_parse_failure('"."')
926
- r3 = nil
927
- end
928
- s0 << r3
929
- if r3
930
- s4, i4 = [], index
931
- loop do
932
- if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
933
- r5 = true
934
- @index += 1
935
- else
936
- terminal_parse_failure('[\\d]')
937
- r5 = nil
938
- end
939
- if r5
940
- s4 << r5
941
- else
942
- break
943
- end
944
- end
945
- if s4.empty?
946
- @index = i4
947
- r4 = nil
948
- else
949
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
950
- end
951
- s0 << r4
952
- if r4
953
- if (match_len = has_terminal?(".", false, index))
954
- r6 = true
955
- @index += match_len
956
- else
957
- terminal_parse_failure('"."')
958
- r6 = nil
959
- end
960
- s0 << r6
961
- if r6
962
- s7, i7 = [], index
963
- loop do
964
- if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
965
- r8 = true
966
- @index += 1
967
- else
968
- terminal_parse_failure('[\\d]')
969
- r8 = nil
970
- end
971
- if r8
972
- s7 << r8
973
- else
974
- break
975
- end
976
- end
977
- if s7.empty?
978
- @index = i7
979
- r7 = nil
980
- else
981
- r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
982
- end
983
- s0 << r7
984
- if r7
985
- if (match_len = has_terminal?(".", false, index))
986
- r9 = true
987
- @index += match_len
988
- else
989
- terminal_parse_failure('"."')
990
- r9 = nil
991
- end
992
- s0 << r9
993
- if r9
994
- s10, i10 = [], index
995
- loop do
996
- if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
997
- r11 = true
998
- @index += 1
999
- else
1000
- terminal_parse_failure('[\\d]')
1001
- r11 = nil
1002
- end
1003
- if r11
1004
- s10 << r11
1005
- else
1006
- break
1007
- end
1008
- end
1009
- if s10.empty?
1010
- @index = i10
1011
- r10 = nil
1012
- else
1013
- r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
1014
- end
1015
- s0 << r10
1016
- end
1017
- end
1018
- end
1019
- end
1020
- end
1021
- end
1022
- if s0.last
1023
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1024
- r0.extend(IpAddress0)
1025
- r0.extend(IpAddress1)
1026
- else
1027
- @index = i0
1028
- r0 = nil
1029
- end
1030
-
1031
- node_cache[:ip_address][start_index] = r0
1032
-
1033
- r0
1034
- end
1035
-
1036
- module AaaaRecord0
1037
- def host
1038
- elements[0]
1039
- end
1040
-
1041
- def space1
1042
- elements[1]
1043
- end
1044
-
1045
- def ms_age
1046
- elements[2]
1047
- end
1048
-
1049
- def ttl
1050
- elements[3]
1051
- end
1052
-
1053
- def klass
1054
- elements[4]
1055
- end
1056
-
1057
- def space2
1058
- elements[6]
1059
- end
1060
-
1061
- def ip_address
1062
- elements[7]
1063
- end
1064
- end
1065
-
1066
- module AaaaRecord1
1067
- def to_s
1068
- "#{host} #{ttl} #{klass} AAAA #{ip_address}"
1069
- end
1070
-
1071
- def record_type
1072
- "AAAA"
1073
- end
1074
- end
1075
-
1076
- def _nt_aaaa_record
1077
- start_index = index
1078
- if node_cache[:aaaa_record].has_key?(index)
1079
- cached = node_cache[:aaaa_record][index]
1080
- if cached
1081
- node_cache[:aaaa_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1082
- @index = cached.interval.end
1083
- end
1084
- return cached
1085
- end
1086
-
1087
- i0, s0 = index, []
1088
- r1 = _nt_host
1089
- s0 << r1
1090
- if r1
1091
- r2 = _nt_space
1092
- s0 << r2
1093
- if r2
1094
- r3 = _nt_ms_age
1095
- s0 << r3
1096
- if r3
1097
- r4 = _nt_ttl
1098
- s0 << r4
1099
- if r4
1100
- r5 = _nt_klass
1101
- s0 << r5
1102
- if r5
1103
- if (match_len = has_terminal?("AAAA", false, index))
1104
- r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1105
- @index += match_len
1106
- else
1107
- terminal_parse_failure('"AAAA"')
1108
- r6 = nil
1109
- end
1110
- s0 << r6
1111
- if r6
1112
- r7 = _nt_space
1113
- s0 << r7
1114
- if r7
1115
- r8 = _nt_ip6_address
1116
- s0 << r8
1117
- end
1118
- end
1119
- end
1120
- end
1121
- end
1122
- end
1123
- end
1124
- if s0.last
1125
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1126
- r0.extend(AaaaRecord0)
1127
- r0.extend(AaaaRecord1)
1128
- else
1129
- @index = i0
1130
- r0 = nil
1131
- end
1132
-
1133
- node_cache[:aaaa_record][start_index] = r0
1134
-
1135
- r0
1136
- end
1137
-
1138
- module Ip6Address0
1139
- def to_s
1140
- text_value.downcase
1141
- end
1142
- end
1143
-
1144
- def _nt_ip6_address
1145
- start_index = index
1146
- if node_cache[:ip6_address].has_key?(index)
1147
- cached = node_cache[:ip6_address][index]
1148
- if cached
1149
- node_cache[:ip6_address][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1150
- @index = cached.interval.end
1151
- end
1152
- return cached
1153
- end
1154
-
1155
- s0, i0 = [], index
1156
- loop do
1157
- if has_terminal?(@regexps[gr = '\A[\\da-fA-F:.]'] ||= Regexp.new(gr), :regexp, index)
1158
- r1 = true
1159
- @index += 1
1160
- else
1161
- terminal_parse_failure('[\\da-fA-F:.]')
1162
- r1 = nil
1163
- end
1164
- if r1
1165
- s0 << r1
1166
- else
1167
- break
1168
- end
1169
- if s0.size == 39
1170
- break
1171
- end
1172
- end
1173
- if s0.size < 2
1174
- @index = i0
1175
- r0 = nil
1176
- else
1177
- if s0.size < 39
1178
- @terminal_failures.pop
1179
- end
1180
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1181
- r0.extend(Ip6Address0)
1182
- r0.extend(Ip6Address0)
1183
- end
1184
-
1185
- node_cache[:ip6_address][start_index] = r0
1186
-
1187
- r0
1188
- end
1189
-
1190
- module CnameRecord0
1191
- def host
1192
- elements[0]
1193
- end
1194
-
1195
- def space1
1196
- elements[1]
1197
- end
1198
-
1199
- def ms_age
1200
- elements[2]
1201
- end
1202
-
1203
- def ttl
1204
- elements[3]
1205
- end
1206
-
1207
- def klass
1208
- elements[4]
1209
- end
1210
-
1211
- def space2
1212
- elements[6]
1213
- end
1214
-
1215
- def target
1216
- elements[7]
1217
- end
1218
- end
1219
-
1220
- module CnameRecord1
1221
- def host
1222
- elements[0]
1223
- end
1224
-
1225
- def space1
1226
- elements[1]
1227
- end
1228
-
1229
- def klass
1230
- elements[2]
1231
- end
1232
-
1233
- def ms_age
1234
- elements[3]
1235
- end
1236
-
1237
- def ttl
1238
- elements[4]
1239
- end
1240
-
1241
- def space2
1242
- elements[6]
1243
- end
1244
-
1245
- def target
1246
- elements[7]
1247
- end
1248
- end
1249
-
1250
- module CnameRecord2
1251
- def host
1252
- elements[0]
1253
- end
1254
-
1255
- def space1
1256
- elements[1]
1257
- end
1258
-
1259
- def ms_age
1260
- elements[2]
1261
- end
1262
-
1263
- def ttl
1264
- elements[3]
1265
- end
1266
-
1267
- def space2
1268
- elements[5]
1269
- end
1270
-
1271
- def target
1272
- elements[6]
1273
- end
1274
- end
1275
-
1276
- module CnameRecord3
1277
- def host
1278
- elements[0]
1279
- end
1280
-
1281
- def space1
1282
- elements[1]
1283
- end
1284
-
1285
- def klass
1286
- elements[2]
1287
- end
1288
-
1289
- def space2
1290
- elements[4]
1291
- end
1292
-
1293
- def target
1294
- elements[5]
1295
- end
1296
- end
1297
-
1298
- module CnameRecord4
1299
- def to_s
1300
- "#{host} #{ttl} #{klass} CNAME #{target}"
1301
- end
1302
-
1303
- def record_type
1304
- "CNAME"
1305
- end
1306
- end
1307
-
1308
- def _nt_cname_record
1309
- start_index = index
1310
- if node_cache[:cname_record].has_key?(index)
1311
- cached = node_cache[:cname_record][index]
1312
- if cached
1313
- node_cache[:cname_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1314
- @index = cached.interval.end
1315
- end
1316
- return cached
1317
- end
1318
-
1319
- i0 = index
1320
- i1, s1 = index, []
1321
- r2 = _nt_host
1322
- s1 << r2
1323
- if r2
1324
- r3 = _nt_space
1325
- s1 << r3
1326
- if r3
1327
- r4 = _nt_ms_age
1328
- s1 << r4
1329
- if r4
1330
- r5 = _nt_ttl
1331
- s1 << r5
1332
- if r5
1333
- r6 = _nt_klass
1334
- s1 << r6
1335
- if r6
1336
- if (match_len = has_terminal?("CNAME", false, index))
1337
- r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1338
- @index += match_len
1339
- else
1340
- terminal_parse_failure('"CNAME"')
1341
- r7 = nil
1342
- end
1343
- s1 << r7
1344
- if r7
1345
- r8 = _nt_space
1346
- s1 << r8
1347
- if r8
1348
- r9 = _nt_host
1349
- s1 << r9
1350
- end
1351
- end
1352
- end
1353
- end
1354
- end
1355
- end
1356
- end
1357
- if s1.last
1358
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1359
- r1.extend(CnameRecord0)
1360
- else
1361
- @index = i1
1362
- r1 = nil
1363
- end
1364
- if r1
1365
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1366
- r0 = r1
1367
- r0.extend(CnameRecord4)
1368
- r0.extend(CnameRecord4)
1369
- else
1370
- i10, s10 = index, []
1371
- r11 = _nt_host
1372
- s10 << r11
1373
- if r11
1374
- r12 = _nt_space
1375
- s10 << r12
1376
- if r12
1377
- r13 = _nt_klass
1378
- s10 << r13
1379
- if r13
1380
- r14 = _nt_ms_age
1381
- s10 << r14
1382
- if r14
1383
- r15 = _nt_ttl
1384
- s10 << r15
1385
- if r15
1386
- if (match_len = has_terminal?("CNAME", false, index))
1387
- r16 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1388
- @index += match_len
1389
- else
1390
- terminal_parse_failure('"CNAME"')
1391
- r16 = nil
1392
- end
1393
- s10 << r16
1394
- if r16
1395
- r17 = _nt_space
1396
- s10 << r17
1397
- if r17
1398
- r18 = _nt_host
1399
- s10 << r18
1400
- end
1401
- end
1402
- end
1403
- end
1404
- end
1405
- end
1406
- end
1407
- if s10.last
1408
- r10 = instantiate_node(SyntaxNode,input, i10...index, s10)
1409
- r10.extend(CnameRecord1)
1410
- else
1411
- @index = i10
1412
- r10 = nil
1413
- end
1414
- if r10
1415
- r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
1416
- r0 = r10
1417
- r0.extend(CnameRecord4)
1418
- r0.extend(CnameRecord4)
1419
- else
1420
- i19, s19 = index, []
1421
- r20 = _nt_host
1422
- s19 << r20
1423
- if r20
1424
- r21 = _nt_space
1425
- s19 << r21
1426
- if r21
1427
- r22 = _nt_ms_age
1428
- s19 << r22
1429
- if r22
1430
- r23 = _nt_ttl
1431
- s19 << r23
1432
- if r23
1433
- if (match_len = has_terminal?("CNAME", false, index))
1434
- r24 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1435
- @index += match_len
1436
- else
1437
- terminal_parse_failure('"CNAME"')
1438
- r24 = nil
1439
- end
1440
- s19 << r24
1441
- if r24
1442
- r25 = _nt_space
1443
- s19 << r25
1444
- if r25
1445
- r26 = _nt_host
1446
- s19 << r26
1447
- end
1448
- end
1449
- end
1450
- end
1451
- end
1452
- end
1453
- if s19.last
1454
- r19 = instantiate_node(SyntaxNode,input, i19...index, s19)
1455
- r19.extend(CnameRecord2)
1456
- else
1457
- @index = i19
1458
- r19 = nil
1459
- end
1460
- if r19
1461
- r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true
1462
- r0 = r19
1463
- r0.extend(CnameRecord4)
1464
- r0.extend(CnameRecord4)
1465
- else
1466
- i27, s27 = index, []
1467
- r28 = _nt_host
1468
- s27 << r28
1469
- if r28
1470
- r29 = _nt_space
1471
- s27 << r29
1472
- if r29
1473
- r30 = _nt_klass
1474
- s27 << r30
1475
- if r30
1476
- if (match_len = has_terminal?("CNAME", false, index))
1477
- r31 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1478
- @index += match_len
1479
- else
1480
- terminal_parse_failure('"CNAME"')
1481
- r31 = nil
1482
- end
1483
- s27 << r31
1484
- if r31
1485
- r32 = _nt_space
1486
- s27 << r32
1487
- if r32
1488
- r33 = _nt_host
1489
- s27 << r33
1490
- end
1491
- end
1492
- end
1493
- end
1494
- end
1495
- if s27.last
1496
- r27 = instantiate_node(SyntaxNode,input, i27...index, s27)
1497
- r27.extend(CnameRecord3)
1498
- else
1499
- @index = i27
1500
- r27 = nil
1501
- end
1502
- if r27
1503
- r27 = SyntaxNode.new(input, (index-1)...index) if r27 == true
1504
- r0 = r27
1505
- r0.extend(CnameRecord4)
1506
- r0.extend(CnameRecord4)
1507
- else
1508
- @index = i0
1509
- r0 = nil
1510
- end
1511
- end
1512
- end
1513
- end
1514
-
1515
- node_cache[:cname_record][start_index] = r0
1516
-
1517
- r0
1518
- end
1519
-
1520
- module MxRecord0
1521
- def host
1522
- elements[0]
1523
- end
1524
-
1525
- def space1
1526
- elements[1]
1527
- end
1528
-
1529
- def ttl
1530
- elements[2]
1531
- end
1532
-
1533
- def klass
1534
- elements[3]
1535
- end
1536
-
1537
- def space2
1538
- elements[5]
1539
- end
1540
-
1541
- def priority
1542
- elements[6]
1543
- end
1544
-
1545
- def space3
1546
- elements[7]
1547
- end
1548
-
1549
- def exchanger
1550
- elements[8]
1551
- end
1552
- end
1553
-
1554
- module MxRecord1
1555
- def to_s
1556
- "#{host} #{ttl} #{klass} MX #{priority} #{exchanger}"
1557
- end
1558
-
1559
- def record_type
1560
- "MX"
1561
- end
1562
- end
1563
-
1564
- def _nt_mx_record
1565
- start_index = index
1566
- if node_cache[:mx_record].has_key?(index)
1567
- cached = node_cache[:mx_record][index]
1568
- if cached
1569
- node_cache[:mx_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1570
- @index = cached.interval.end
1571
- end
1572
- return cached
1573
- end
1574
-
1575
- i0, s0 = index, []
1576
- r1 = _nt_host
1577
- s0 << r1
1578
- if r1
1579
- r2 = _nt_space
1580
- s0 << r2
1581
- if r2
1582
- r3 = _nt_ttl
1583
- s0 << r3
1584
- if r3
1585
- r4 = _nt_klass
1586
- s0 << r4
1587
- if r4
1588
- if (match_len = has_terminal?("MX", false, index))
1589
- r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1590
- @index += match_len
1591
- else
1592
- terminal_parse_failure('"MX"')
1593
- r5 = nil
1594
- end
1595
- s0 << r5
1596
- if r5
1597
- r6 = _nt_space
1598
- s0 << r6
1599
- if r6
1600
- r7 = _nt_integer
1601
- s0 << r7
1602
- if r7
1603
- r8 = _nt_space
1604
- s0 << r8
1605
- if r8
1606
- r9 = _nt_host
1607
- s0 << r9
1608
- end
1609
- end
1610
- end
1611
- end
1612
- end
1613
- end
1614
- end
1615
- end
1616
- if s0.last
1617
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1618
- r0.extend(MxRecord0)
1619
- r0.extend(MxRecord1)
1620
- else
1621
- @index = i0
1622
- r0 = nil
1623
- end
1624
-
1625
- node_cache[:mx_record][start_index] = r0
1626
-
1627
- r0
1628
- end
1629
-
1630
- module NaptrRecord0
1631
- def host
1632
- elements[0]
1633
- end
1634
-
1635
- def space1
1636
- elements[1]
1637
- end
1638
-
1639
- def ms_age
1640
- elements[2]
1641
- end
1642
-
1643
- def ttl
1644
- elements[3]
1645
- end
1646
-
1647
- def klass
1648
- elements[4]
1649
- end
1650
-
1651
- def space2
1652
- elements[6]
1653
- end
1654
-
1655
- def data
1656
- elements[7]
1657
- end
1658
- end
1659
-
1660
- module NaptrRecord1
1661
- def to_s
1662
- "#{host} #{ttl} #{klass} NAPTR #{data}"
1663
- end
1664
-
1665
- def record_type
1666
- "NAPTR"
1667
- end
1668
- end
1669
-
1670
- def _nt_naptr_record
1671
- start_index = index
1672
- if node_cache[:naptr_record].has_key?(index)
1673
- cached = node_cache[:naptr_record][index]
1674
- if cached
1675
- node_cache[:naptr_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1676
- @index = cached.interval.end
1677
- end
1678
- return cached
1679
- end
1680
-
1681
- i0, s0 = index, []
1682
- r1 = _nt_host
1683
- s0 << r1
1684
- if r1
1685
- r2 = _nt_space
1686
- s0 << r2
1687
- if r2
1688
- r3 = _nt_ms_age
1689
- s0 << r3
1690
- if r3
1691
- r4 = _nt_ttl
1692
- s0 << r4
1693
- if r4
1694
- r5 = _nt_klass
1695
- s0 << r5
1696
- if r5
1697
- if (match_len = has_terminal?("NAPTR", false, index))
1698
- r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1699
- @index += match_len
1700
- else
1701
- terminal_parse_failure('"NAPTR"')
1702
- r6 = nil
1703
- end
1704
- s0 << r6
1705
- if r6
1706
- r7 = _nt_space
1707
- s0 << r7
1708
- if r7
1709
- r8 = _nt_data
1710
- s0 << r8
1711
- end
1712
- end
1713
- end
1714
- end
1715
- end
1716
- end
1717
- end
1718
- if s0.last
1719
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1720
- r0.extend(NaptrRecord0)
1721
- r0.extend(NaptrRecord1)
1722
- else
1723
- @index = i0
1724
- r0 = nil
1725
- end
1726
-
1727
- node_cache[:naptr_record][start_index] = r0
1728
-
1729
- r0
1730
- end
1731
-
1732
- module NsRecord0
1733
- def host
1734
- elements[0]
1735
- end
1736
-
1737
- def space1
1738
- elements[1]
1739
- end
1740
-
1741
- def ms_age
1742
- elements[2]
1743
- end
1744
-
1745
- def ttl
1746
- elements[3]
1747
- end
1748
-
1749
- def klass
1750
- elements[4]
1751
- end
1752
-
1753
- def space2
1754
- elements[6]
1755
- end
1756
-
1757
- def nameserver
1758
- elements[7]
1759
- end
1760
- end
1761
-
1762
- module NsRecord1
1763
- def to_s
1764
- "#{host} #{ttl} #{klass} NS #{nameserver}"
1765
- end
1766
-
1767
- def record_type
1768
- "NS"
1769
- end
1770
- end
1771
-
1772
- def _nt_ns_record
1773
- start_index = index
1774
- if node_cache[:ns_record].has_key?(index)
1775
- cached = node_cache[:ns_record][index]
1776
- if cached
1777
- node_cache[:ns_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1778
- @index = cached.interval.end
1779
- end
1780
- return cached
1781
- end
1782
-
1783
- i0, s0 = index, []
1784
- r1 = _nt_host
1785
- s0 << r1
1786
- if r1
1787
- r2 = _nt_space
1788
- s0 << r2
1789
- if r2
1790
- r3 = _nt_ms_age
1791
- s0 << r3
1792
- if r3
1793
- r4 = _nt_ttl
1794
- s0 << r4
1795
- if r4
1796
- r5 = _nt_klass
1797
- s0 << r5
1798
- if r5
1799
- if (match_len = has_terminal?("NS", false, index))
1800
- r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1801
- @index += match_len
1802
- else
1803
- terminal_parse_failure('"NS"')
1804
- r6 = nil
1805
- end
1806
- s0 << r6
1807
- if r6
1808
- r7 = _nt_space
1809
- s0 << r7
1810
- if r7
1811
- r8 = _nt_host
1812
- s0 << r8
1813
- end
1814
- end
1815
- end
1816
- end
1817
- end
1818
- end
1819
- end
1820
- if s0.last
1821
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1822
- r0.extend(NsRecord0)
1823
- r0.extend(NsRecord1)
1824
- else
1825
- @index = i0
1826
- r0 = nil
1827
- end
1828
-
1829
- node_cache[:ns_record][start_index] = r0
1830
-
1831
- r0
1832
- end
1833
-
1834
- module PtrRecord0
1835
- def host
1836
- elements[0]
1837
- end
1838
-
1839
- def space1
1840
- elements[1]
1841
- end
1842
-
1843
- def ms_age
1844
- elements[2]
1845
- end
1846
-
1847
- def ttl
1848
- elements[3]
1849
- end
1850
-
1851
- def klass
1852
- elements[4]
1853
- end
1854
-
1855
- def space2
1856
- elements[6]
1857
- end
1858
-
1859
- def target
1860
- elements[7]
1861
- end
1862
- end
1863
-
1864
- module PtrRecord1
1865
- def to_s
1866
- "#{host} #{ttl} #{klass} PTR #{target}"
1867
- end
1868
-
1869
- def record_type
1870
- "PTR"
1871
- end
1872
- end
1873
-
1874
- def _nt_ptr_record
1875
- start_index = index
1876
- if node_cache[:ptr_record].has_key?(index)
1877
- cached = node_cache[:ptr_record][index]
1878
- if cached
1879
- node_cache[:ptr_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1880
- @index = cached.interval.end
1881
- end
1882
- return cached
1883
- end
1884
-
1885
- i0, s0 = index, []
1886
- r1 = _nt_host
1887
- s0 << r1
1888
- if r1
1889
- r2 = _nt_space
1890
- s0 << r2
1891
- if r2
1892
- r3 = _nt_ms_age
1893
- s0 << r3
1894
- if r3
1895
- r4 = _nt_ttl
1896
- s0 << r4
1897
- if r4
1898
- r5 = _nt_klass
1899
- s0 << r5
1900
- if r5
1901
- if (match_len = has_terminal?("PTR", false, index))
1902
- r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
1903
- @index += match_len
1904
- else
1905
- terminal_parse_failure('"PTR"')
1906
- r6 = nil
1907
- end
1908
- s0 << r6
1909
- if r6
1910
- r7 = _nt_space
1911
- s0 << r7
1912
- if r7
1913
- r8 = _nt_host
1914
- s0 << r8
1915
- end
1916
- end
1917
- end
1918
- end
1919
- end
1920
- end
1921
- end
1922
- if s0.last
1923
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1924
- r0.extend(PtrRecord0)
1925
- r0.extend(PtrRecord1)
1926
- else
1927
- @index = i0
1928
- r0 = nil
1929
- end
1930
-
1931
- node_cache[:ptr_record][start_index] = r0
1932
-
1933
- r0
1934
- end
1935
-
1936
- module SoaRecord0
1937
- def origin
1938
- elements[0]
1939
- end
1940
-
1941
- def space1
1942
- elements[1]
1943
- end
1944
-
1945
- def ms_age
1946
- elements[2]
1947
- end
1948
-
1949
- def ttl
1950
- elements[3]
1951
- end
1952
-
1953
- def klass
1954
- elements[4]
1955
- end
1956
-
1957
- def space2
1958
- elements[6]
1959
- end
1960
-
1961
- def ns
1962
- elements[7]
1963
- end
1964
-
1965
- def space3
1966
- elements[8]
1967
- end
1968
-
1969
- def rp
1970
- elements[9]
1971
- end
1972
-
1973
- def space4
1974
- elements[10]
1975
- end
1976
-
1977
- def data
1978
- elements[11]
1979
- end
1980
- end
1981
-
1982
- module SoaRecord1
1983
- def to_s
1984
- "#{origin} #{ttl} #{klass} SOA #{ns} #{rp} (#{space})"
1985
- end
1986
-
1987
- def record_type
1988
- "SOA"
1989
- end
1990
- end
1991
-
1992
- def _nt_soa_record
1993
- start_index = index
1994
- if node_cache[:soa_record].has_key?(index)
1995
- cached = node_cache[:soa_record][index]
1996
- if cached
1997
- node_cache[:soa_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1998
- @index = cached.interval.end
1999
- end
2000
- return cached
2001
- end
2002
-
2003
- i0, s0 = index, []
2004
- r1 = _nt_origin
2005
- s0 << r1
2006
- if r1
2007
- r2 = _nt_space
2008
- s0 << r2
2009
- if r2
2010
- r3 = _nt_ms_age
2011
- s0 << r3
2012
- if r3
2013
- r4 = _nt_ttl
2014
- s0 << r4
2015
- if r4
2016
- r5 = _nt_klass
2017
- s0 << r5
2018
- if r5
2019
- if (match_len = has_terminal?("SOA", false, index))
2020
- r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2021
- @index += match_len
2022
- else
2023
- terminal_parse_failure('"SOA"')
2024
- r6 = nil
2025
- end
2026
- s0 << r6
2027
- if r6
2028
- r7 = _nt_space
2029
- s0 << r7
2030
- if r7
2031
- r8 = _nt_ns
2032
- s0 << r8
2033
- if r8
2034
- r9 = _nt_space
2035
- s0 << r9
2036
- if r9
2037
- r10 = _nt_rp
2038
- s0 << r10
2039
- if r10
2040
- r11 = _nt_space
2041
- s0 << r11
2042
- if r11
2043
- r12 = _nt_data
2044
- s0 << r12
2045
- end
2046
- end
2047
- end
2048
- end
2049
- end
2050
- end
2051
- end
2052
- end
2053
- end
2054
- end
2055
- end
2056
- if s0.last
2057
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2058
- r0.extend(SoaRecord0)
2059
- r0.extend(SoaRecord1)
2060
- else
2061
- @index = i0
2062
- r0 = nil
2063
- end
2064
-
2065
- node_cache[:soa_record][start_index] = r0
2066
-
2067
- r0
2068
- end
2069
-
2070
- module SrvRecord0
2071
- def host
2072
- elements[0]
2073
- end
2074
-
2075
- def space1
2076
- elements[1]
2077
- end
2078
-
2079
- def ms_age
2080
- elements[2]
2081
- end
2082
-
2083
- def ttl
2084
- elements[3]
2085
- end
2086
-
2087
- def klass
2088
- elements[4]
2089
- end
2090
-
2091
- def space2
2092
- elements[6]
2093
- end
2094
-
2095
- def priority
2096
- elements[7]
2097
- end
2098
-
2099
- def space3
2100
- elements[8]
2101
- end
2102
-
2103
- def weight
2104
- elements[9]
2105
- end
2106
-
2107
- def space4
2108
- elements[10]
2109
- end
2110
-
2111
- def port
2112
- elements[11]
2113
- end
2114
-
2115
- def space5
2116
- elements[12]
2117
- end
2118
-
2119
- def target
2120
- elements[13]
2121
- end
2122
- end
2123
-
2124
- module SrvRecord1
2125
- def host
2126
- elements[0]
2127
- end
2128
-
2129
- def space1
2130
- elements[1]
2131
- end
2132
-
2133
- def klass
2134
- elements[2]
2135
- end
2136
-
2137
- def ms_age
2138
- elements[3]
2139
- end
2140
-
2141
- def ttl
2142
- elements[4]
2143
- end
2144
-
2145
- def space2
2146
- elements[6]
2147
- end
2148
-
2149
- def priority
2150
- elements[7]
2151
- end
2152
-
2153
- def space3
2154
- elements[8]
2155
- end
2156
-
2157
- def weight
2158
- elements[9]
2159
- end
2160
-
2161
- def space4
2162
- elements[10]
2163
- end
2164
-
2165
- def port
2166
- elements[11]
2167
- end
2168
-
2169
- def space5
2170
- elements[12]
2171
- end
2172
-
2173
- def target
2174
- elements[13]
2175
- end
2176
- end
2177
-
2178
- module SrvRecord2
2179
- def host
2180
- elements[0]
2181
- end
2182
-
2183
- def space1
2184
- elements[1]
2185
- end
2186
-
2187
- def ms_age
2188
- elements[2]
2189
- end
2190
-
2191
- def ttl
2192
- elements[3]
2193
- end
2194
-
2195
- def space2
2196
- elements[5]
2197
- end
2198
-
2199
- def priority
2200
- elements[6]
2201
- end
2202
-
2203
- def space3
2204
- elements[7]
2205
- end
2206
-
2207
- def weight
2208
- elements[8]
2209
- end
2210
-
2211
- def space4
2212
- elements[9]
2213
- end
2214
-
2215
- def port
2216
- elements[10]
2217
- end
2218
-
2219
- def space5
2220
- elements[11]
2221
- end
2222
-
2223
- def target
2224
- elements[12]
2225
- end
2226
- end
2227
-
2228
- module SrvRecord3
2229
- def host
2230
- elements[0]
2231
- end
2232
-
2233
- def space1
2234
- elements[1]
2235
- end
2236
-
2237
- def klass
2238
- elements[2]
2239
- end
2240
-
2241
- def space2
2242
- elements[4]
2243
- end
2244
-
2245
- def priority
2246
- elements[5]
2247
- end
2248
-
2249
- def space3
2250
- elements[6]
2251
- end
2252
-
2253
- def weight
2254
- elements[7]
2255
- end
2256
-
2257
- def space4
2258
- elements[8]
2259
- end
2260
-
2261
- def port
2262
- elements[9]
2263
- end
2264
-
2265
- def space5
2266
- elements[10]
2267
- end
2268
-
2269
- def target
2270
- elements[11]
2271
- end
2272
- end
2273
-
2274
- module SrvRecord4
2275
- def to_s
2276
- "#{host} #{ttl} #{klass} SRV #{priority} #{weight} #{port} #{target}"
2277
- end
2278
-
2279
- def record_type
2280
- "SRV"
2281
- end
2282
- end
2283
-
2284
- def _nt_srv_record
2285
- start_index = index
2286
- if node_cache[:srv_record].has_key?(index)
2287
- cached = node_cache[:srv_record][index]
2288
- if cached
2289
- node_cache[:srv_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2290
- @index = cached.interval.end
2291
- end
2292
- return cached
2293
- end
2294
-
2295
- i0 = index
2296
- i1, s1 = index, []
2297
- r2 = _nt_host
2298
- s1 << r2
2299
- if r2
2300
- r3 = _nt_space
2301
- s1 << r3
2302
- if r3
2303
- r4 = _nt_ms_age
2304
- s1 << r4
2305
- if r4
2306
- r5 = _nt_ttl
2307
- s1 << r5
2308
- if r5
2309
- r6 = _nt_klass
2310
- s1 << r6
2311
- if r6
2312
- if (match_len = has_terminal?("SRV", false, index))
2313
- r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2314
- @index += match_len
2315
- else
2316
- terminal_parse_failure('"SRV"')
2317
- r7 = nil
2318
- end
2319
- s1 << r7
2320
- if r7
2321
- r8 = _nt_space
2322
- s1 << r8
2323
- if r8
2324
- r9 = _nt_integer
2325
- s1 << r9
2326
- if r9
2327
- r10 = _nt_space
2328
- s1 << r10
2329
- if r10
2330
- r11 = _nt_integer
2331
- s1 << r11
2332
- if r11
2333
- r12 = _nt_space
2334
- s1 << r12
2335
- if r12
2336
- r13 = _nt_integer
2337
- s1 << r13
2338
- if r13
2339
- r14 = _nt_space
2340
- s1 << r14
2341
- if r14
2342
- r15 = _nt_host
2343
- s1 << r15
2344
- end
2345
- end
2346
- end
2347
- end
2348
- end
2349
- end
2350
- end
2351
- end
2352
- end
2353
- end
2354
- end
2355
- end
2356
- end
2357
- if s1.last
2358
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2359
- r1.extend(SrvRecord0)
2360
- else
2361
- @index = i1
2362
- r1 = nil
2363
- end
2364
- if r1
2365
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
2366
- r0 = r1
2367
- r0.extend(SrvRecord4)
2368
- r0.extend(SrvRecord4)
2369
- else
2370
- i16, s16 = index, []
2371
- r17 = _nt_host
2372
- s16 << r17
2373
- if r17
2374
- r18 = _nt_space
2375
- s16 << r18
2376
- if r18
2377
- r19 = _nt_klass
2378
- s16 << r19
2379
- if r19
2380
- r20 = _nt_ms_age
2381
- s16 << r20
2382
- if r20
2383
- r21 = _nt_ttl
2384
- s16 << r21
2385
- if r21
2386
- if (match_len = has_terminal?("SRV", false, index))
2387
- r22 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2388
- @index += match_len
2389
- else
2390
- terminal_parse_failure('"SRV"')
2391
- r22 = nil
2392
- end
2393
- s16 << r22
2394
- if r22
2395
- r23 = _nt_space
2396
- s16 << r23
2397
- if r23
2398
- r24 = _nt_integer
2399
- s16 << r24
2400
- if r24
2401
- r25 = _nt_space
2402
- s16 << r25
2403
- if r25
2404
- r26 = _nt_integer
2405
- s16 << r26
2406
- if r26
2407
- r27 = _nt_space
2408
- s16 << r27
2409
- if r27
2410
- r28 = _nt_integer
2411
- s16 << r28
2412
- if r28
2413
- r29 = _nt_space
2414
- s16 << r29
2415
- if r29
2416
- r30 = _nt_host
2417
- s16 << r30
2418
- end
2419
- end
2420
- end
2421
- end
2422
- end
2423
- end
2424
- end
2425
- end
2426
- end
2427
- end
2428
- end
2429
- end
2430
- end
2431
- if s16.last
2432
- r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
2433
- r16.extend(SrvRecord1)
2434
- else
2435
- @index = i16
2436
- r16 = nil
2437
- end
2438
- if r16
2439
- r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true
2440
- r0 = r16
2441
- r0.extend(SrvRecord4)
2442
- r0.extend(SrvRecord4)
2443
- else
2444
- i31, s31 = index, []
2445
- r32 = _nt_host
2446
- s31 << r32
2447
- if r32
2448
- r33 = _nt_space
2449
- s31 << r33
2450
- if r33
2451
- r34 = _nt_ms_age
2452
- s31 << r34
2453
- if r34
2454
- r35 = _nt_ttl
2455
- s31 << r35
2456
- if r35
2457
- if (match_len = has_terminal?("SRV", false, index))
2458
- r36 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2459
- @index += match_len
2460
- else
2461
- terminal_parse_failure('"SRV"')
2462
- r36 = nil
2463
- end
2464
- s31 << r36
2465
- if r36
2466
- r37 = _nt_space
2467
- s31 << r37
2468
- if r37
2469
- r38 = _nt_integer
2470
- s31 << r38
2471
- if r38
2472
- r39 = _nt_space
2473
- s31 << r39
2474
- if r39
2475
- r40 = _nt_integer
2476
- s31 << r40
2477
- if r40
2478
- r41 = _nt_space
2479
- s31 << r41
2480
- if r41
2481
- r42 = _nt_integer
2482
- s31 << r42
2483
- if r42
2484
- r43 = _nt_space
2485
- s31 << r43
2486
- if r43
2487
- r44 = _nt_host
2488
- s31 << r44
2489
- end
2490
- end
2491
- end
2492
- end
2493
- end
2494
- end
2495
- end
2496
- end
2497
- end
2498
- end
2499
- end
2500
- end
2501
- if s31.last
2502
- r31 = instantiate_node(SyntaxNode,input, i31...index, s31)
2503
- r31.extend(SrvRecord2)
2504
- else
2505
- @index = i31
2506
- r31 = nil
2507
- end
2508
- if r31
2509
- r31 = SyntaxNode.new(input, (index-1)...index) if r31 == true
2510
- r0 = r31
2511
- r0.extend(SrvRecord4)
2512
- r0.extend(SrvRecord4)
2513
- else
2514
- i45, s45 = index, []
2515
- r46 = _nt_host
2516
- s45 << r46
2517
- if r46
2518
- r47 = _nt_space
2519
- s45 << r47
2520
- if r47
2521
- r48 = _nt_klass
2522
- s45 << r48
2523
- if r48
2524
- if (match_len = has_terminal?("SRV", false, index))
2525
- r49 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2526
- @index += match_len
2527
- else
2528
- terminal_parse_failure('"SRV"')
2529
- r49 = nil
2530
- end
2531
- s45 << r49
2532
- if r49
2533
- r50 = _nt_space
2534
- s45 << r50
2535
- if r50
2536
- r51 = _nt_integer
2537
- s45 << r51
2538
- if r51
2539
- r52 = _nt_space
2540
- s45 << r52
2541
- if r52
2542
- r53 = _nt_integer
2543
- s45 << r53
2544
- if r53
2545
- r54 = _nt_space
2546
- s45 << r54
2547
- if r54
2548
- r55 = _nt_integer
2549
- s45 << r55
2550
- if r55
2551
- r56 = _nt_space
2552
- s45 << r56
2553
- if r56
2554
- r57 = _nt_host
2555
- s45 << r57
2556
- end
2557
- end
2558
- end
2559
- end
2560
- end
2561
- end
2562
- end
2563
- end
2564
- end
2565
- end
2566
- end
2567
- if s45.last
2568
- r45 = instantiate_node(SyntaxNode,input, i45...index, s45)
2569
- r45.extend(SrvRecord3)
2570
- else
2571
- @index = i45
2572
- r45 = nil
2573
- end
2574
- if r45
2575
- r45 = SyntaxNode.new(input, (index-1)...index) if r45 == true
2576
- r0 = r45
2577
- r0.extend(SrvRecord4)
2578
- r0.extend(SrvRecord4)
2579
- else
2580
- @index = i0
2581
- r0 = nil
2582
- end
2583
- end
2584
- end
2585
- end
2586
-
2587
- node_cache[:srv_record][start_index] = r0
2588
-
2589
- r0
2590
- end
2591
-
2592
- module SpfRecord0
2593
- def host
2594
- elements[0]
2595
- end
2596
-
2597
- def space1
2598
- elements[1]
2599
- end
2600
-
2601
- def ms_age
2602
- elements[2]
2603
- end
2604
-
2605
- def ttl
2606
- elements[3]
2607
- end
2608
-
2609
- def klass
2610
- elements[4]
2611
- end
2612
-
2613
- def space2
2614
- elements[6]
2615
- end
2616
-
2617
- def data
2618
- elements[7]
2619
- end
2620
- end
2621
-
2622
- module SpfRecord1
2623
- def to_s
2624
- "#{host} #{ttl} #{klass} SPF #{data}"
2625
- end
2626
-
2627
- def record_type
2628
- "SPF"
2629
- end
2630
- end
2631
-
2632
- def _nt_spf_record
2633
- start_index = index
2634
- if node_cache[:spf_record].has_key?(index)
2635
- cached = node_cache[:spf_record][index]
2636
- if cached
2637
- node_cache[:spf_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2638
- @index = cached.interval.end
2639
- end
2640
- return cached
2641
- end
2642
-
2643
- i0, s0 = index, []
2644
- r1 = _nt_host
2645
- s0 << r1
2646
- if r1
2647
- r2 = _nt_space
2648
- s0 << r2
2649
- if r2
2650
- r3 = _nt_ms_age
2651
- s0 << r3
2652
- if r3
2653
- r4 = _nt_ttl
2654
- s0 << r4
2655
- if r4
2656
- r5 = _nt_klass
2657
- s0 << r5
2658
- if r5
2659
- if (match_len = has_terminal?("SPF", false, index))
2660
- r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2661
- @index += match_len
2662
- else
2663
- terminal_parse_failure('"SPF"')
2664
- r6 = nil
2665
- end
2666
- s0 << r6
2667
- if r6
2668
- r7 = _nt_space
2669
- s0 << r7
2670
- if r7
2671
- r8 = _nt_txt_data
2672
- s0 << r8
2673
- end
2674
- end
2675
- end
2676
- end
2677
- end
2678
- end
2679
- end
2680
- if s0.last
2681
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2682
- r0.extend(SpfRecord0)
2683
- r0.extend(SpfRecord1)
2684
- else
2685
- @index = i0
2686
- r0 = nil
2687
- end
2688
-
2689
- node_cache[:spf_record][start_index] = r0
2690
-
2691
- r0
2692
- end
2693
-
2694
- module TxtRecord0
2695
- def host
2696
- elements[0]
2697
- end
2698
-
2699
- def space1
2700
- elements[1]
2701
- end
2702
-
2703
- def ms_age
2704
- elements[2]
2705
- end
2706
-
2707
- def ttl
2708
- elements[3]
2709
- end
2710
-
2711
- def klass
2712
- elements[4]
2713
- end
2714
-
2715
- def space2
2716
- elements[6]
2717
- end
2718
-
2719
- def data
2720
- elements[7]
2721
- end
2722
- end
2723
-
2724
- module TxtRecord1
2725
- def to_s
2726
- "#{host} #{ttl} #{klass} TXT #{data}"
2727
- end
2728
-
2729
- def record_type
2730
- "TXT"
2731
- end
2732
- end
2733
-
2734
- def _nt_txt_record
2735
- start_index = index
2736
- if node_cache[:txt_record].has_key?(index)
2737
- cached = node_cache[:txt_record][index]
2738
- if cached
2739
- node_cache[:txt_record][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2740
- @index = cached.interval.end
2741
- end
2742
- return cached
2743
- end
2744
-
2745
- i0, s0 = index, []
2746
- r1 = _nt_host
2747
- s0 << r1
2748
- if r1
2749
- r2 = _nt_space
2750
- s0 << r2
2751
- if r2
2752
- r3 = _nt_ms_age
2753
- s0 << r3
2754
- if r3
2755
- r4 = _nt_ttl
2756
- s0 << r4
2757
- if r4
2758
- r5 = _nt_klass
2759
- s0 << r5
2760
- if r5
2761
- if (match_len = has_terminal?("TXT", false, index))
2762
- r6 = instantiate_node(SyntaxNode,input, index...(index + match_len))
2763
- @index += match_len
2764
- else
2765
- terminal_parse_failure('"TXT"')
2766
- r6 = nil
2767
- end
2768
- s0 << r6
2769
- if r6
2770
- r7 = _nt_space
2771
- s0 << r7
2772
- if r7
2773
- r8 = _nt_ms_txt_data
2774
- s0 << r8
2775
- end
2776
- end
2777
- end
2778
- end
2779
- end
2780
- end
2781
- end
2782
- if s0.last
2783
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2784
- r0.extend(TxtRecord0)
2785
- r0.extend(TxtRecord1)
2786
- else
2787
- @index = i0
2788
- r0 = nil
2789
- end
2790
-
2791
- node_cache[:txt_record][start_index] = r0
2792
-
2793
- r0
2794
- end
2795
-
2796
- module Origin0
2797
- def host
2798
- elements[0]
2799
- end
2800
-
2801
- end
2802
-
2803
- module Origin1
2804
- def to_s
2805
- "#{host}"
2806
- end
2807
- end
2808
-
2809
- def _nt_origin
2810
- start_index = index
2811
- if node_cache[:origin].has_key?(index)
2812
- cached = node_cache[:origin][index]
2813
- if cached
2814
- node_cache[:origin][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2815
- @index = cached.interval.end
2816
- end
2817
- return cached
2818
- end
2819
-
2820
- i0, s0 = index, []
2821
- r1 = _nt_host
2822
- s0 << r1
2823
- if r1
2824
- s2, i2 = [], index
2825
- loop do
2826
- r3 = _nt_comment
2827
- if r3
2828
- s2 << r3
2829
- else
2830
- break
2831
- end
2832
- end
2833
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
2834
- s0 << r2
2835
- end
2836
- if s0.last
2837
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2838
- r0.extend(Origin0)
2839
- r0.extend(Origin1)
2840
- else
2841
- @index = i0
2842
- r0 = nil
2843
- end
2844
-
2845
- node_cache[:origin][start_index] = r0
2846
-
2847
- r0
2848
- end
2849
-
2850
- module MultilineComment0
2851
- end
2852
-
2853
- module MultilineComment1
2854
- def to_s
2855
- text_value.strip
2856
- end
2857
- end
2858
-
2859
- def _nt_multiline_comment
2860
- start_index = index
2861
- if node_cache[:multiline_comment].has_key?(index)
2862
- cached = node_cache[:multiline_comment][index]
2863
- if cached
2864
- node_cache[:multiline_comment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2865
- @index = cached.interval.end
2866
- end
2867
- return cached
2868
- end
2869
-
2870
- i0, s0 = index, []
2871
- s1, i1 = [], index
2872
- loop do
2873
- r2 = _nt_linebreak
2874
- if r2
2875
- s1 << r2
2876
- else
2877
- break
2878
- end
2879
- end
2880
- if s1.empty?
2881
- @index = i1
2882
- r1 = nil
2883
- else
2884
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
2885
- end
2886
- s0 << r1
2887
- if r1
2888
- s3, i3 = [], index
2889
- loop do
2890
- r4 = _nt_comment
2891
- if r4
2892
- s3 << r4
2893
- else
2894
- break
2895
- end
2896
- end
2897
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
2898
- s0 << r3
2899
- end
2900
- if s0.last
2901
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2902
- r0.extend(MultilineComment0)
2903
- r0.extend(MultilineComment1)
2904
- else
2905
- @index = i0
2906
- r0 = nil
2907
- end
2908
-
2909
- node_cache[:multiline_comment][start_index] = r0
2910
-
2911
- r0
2912
- end
2913
-
2914
- module Space0
2915
- def to_s
2916
- text_value
2917
- end
2918
- end
2919
-
2920
- def _nt_space
2921
- start_index = index
2922
- if node_cache[:space].has_key?(index)
2923
- cached = node_cache[:space][index]
2924
- if cached
2925
- node_cache[:space][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2926
- @index = cached.interval.end
2927
- end
2928
- return cached
2929
- end
2930
-
2931
- s0, i0 = [], index
2932
- loop do
2933
- if has_terminal?(@regexps[gr = '\A[ \\t]'] ||= Regexp.new(gr), :regexp, index)
2934
- r1 = true
2935
- @index += 1
2936
- else
2937
- terminal_parse_failure('[ \\t]')
2938
- r1 = nil
2939
- end
2940
- if r1
2941
- s0 << r1
2942
- else
2943
- break
2944
- end
2945
- end
2946
- if s0.empty?
2947
- @index = i0
2948
- r0 = nil
2949
- else
2950
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2951
- r0.extend(Space0)
2952
- r0.extend(Space0)
2953
- end
2954
-
2955
- node_cache[:space][start_index] = r0
2956
-
2957
- r0
2958
- end
2959
-
2960
- module Linebreak0
2961
- def to_s
2962
- ''
2963
- end
2964
- end
2965
-
2966
- def _nt_linebreak
2967
- start_index = index
2968
- if node_cache[:linebreak].has_key?(index)
2969
- cached = node_cache[:linebreak][index]
2970
- if cached
2971
- node_cache[:linebreak][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
2972
- @index = cached.interval.end
2973
- end
2974
- return cached
2975
- end
2976
-
2977
- s0, i0 = [], index
2978
- loop do
2979
- if has_terminal?(@regexps[gr = '\A[\\n\\r]'] ||= Regexp.new(gr), :regexp, index)
2980
- r1 = true
2981
- @index += 1
2982
- else
2983
- terminal_parse_failure('[\\n\\r]')
2984
- r1 = nil
2985
- end
2986
- if r1
2987
- s0 << r1
2988
- else
2989
- break
2990
- end
2991
- end
2992
- if s0.empty?
2993
- @index = i0
2994
- r0 = nil
2995
- else
2996
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
2997
- r0.extend(Linebreak0)
2998
- r0.extend(Linebreak0)
2999
- end
3000
-
3001
- node_cache[:linebreak][start_index] = r0
3002
-
3003
- r0
3004
- end
3005
-
3006
- module SpaceOrBreak0
3007
- def to_s
3008
- text_value
3009
- end
3010
- end
3011
-
3012
- def _nt_space_or_break
3013
- start_index = index
3014
- if node_cache[:space_or_break].has_key?(index)
3015
- cached = node_cache[:space_or_break][index]
3016
- if cached
3017
- node_cache[:space_or_break][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3018
- @index = cached.interval.end
3019
- end
3020
- return cached
3021
- end
3022
-
3023
- s0, i0 = [], index
3024
- loop do
3025
- if has_terminal?(@regexps[gr = '\A[\\s]'] ||= Regexp.new(gr), :regexp, index)
3026
- r1 = true
3027
- @index += 1
3028
- else
3029
- terminal_parse_failure('[\\s]')
3030
- r1 = nil
3031
- end
3032
- if r1
3033
- s0 << r1
3034
- else
3035
- break
3036
- end
3037
- end
3038
- if s0.empty?
3039
- @index = i0
3040
- r0 = nil
3041
- else
3042
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3043
- r0.extend(SpaceOrBreak0)
3044
- r0.extend(SpaceOrBreak0)
3045
- end
3046
-
3047
- node_cache[:space_or_break][start_index] = r0
3048
-
3049
- r0
3050
- end
3051
-
3052
- module Klass0
3053
- def space
3054
- elements[1]
3055
- end
3056
- end
3057
-
3058
- module Klass1
3059
- def to_s
3060
- text_value.strip
3061
- end
3062
- end
3063
-
3064
- def _nt_klass
3065
- start_index = index
3066
- if node_cache[:klass].has_key?(index)
3067
- cached = node_cache[:klass][index]
3068
- if cached
3069
- node_cache[:klass][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3070
- @index = cached.interval.end
3071
- end
3072
- return cached
3073
- end
3074
-
3075
- i0 = index
3076
- i1, s1 = index, []
3077
- if (match_len = has_terminal?("IN", false, index))
3078
- r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
3079
- @index += match_len
3080
- else
3081
- terminal_parse_failure('"IN"')
3082
- r2 = nil
3083
- end
3084
- s1 << r2
3085
- if r2
3086
- r3 = _nt_space
3087
- s1 << r3
3088
- end
3089
- if s1.last
3090
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3091
- r1.extend(Klass0)
3092
- else
3093
- @index = i1
3094
- r1 = nil
3095
- end
3096
- if r1
3097
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
3098
- r0 = r1
3099
- r0.extend(Klass1)
3100
- r0.extend(Klass1)
3101
- else
3102
- if (match_len = has_terminal?('', false, index))
3103
- r4 = true
3104
- @index += match_len
3105
- else
3106
- terminal_parse_failure('\'\'')
3107
- r4 = nil
3108
- end
3109
- if r4
3110
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
3111
- r0 = r4
3112
- r0.extend(Klass1)
3113
- r0.extend(Klass1)
3114
- else
3115
- @index = i0
3116
- r0 = nil
3117
- end
3118
- end
3119
-
3120
- node_cache[:klass][start_index] = r0
3121
-
3122
- r0
3123
- end
3124
-
3125
- module Comment0
3126
- end
3127
-
3128
- module Comment1
3129
- def to_s
3130
- text_value.strip
3131
- end
3132
- end
3133
-
3134
- def _nt_comment
3135
- start_index = index
3136
- if node_cache[:comment].has_key?(index)
3137
- cached = node_cache[:comment][index]
3138
- if cached
3139
- node_cache[:comment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3140
- @index = cached.interval.end
3141
- end
3142
- return cached
3143
- end
3144
-
3145
- i0, s0 = index, []
3146
- s1, i1 = [], index
3147
- loop do
3148
- r2 = _nt_space
3149
- if r2
3150
- s1 << r2
3151
- else
3152
- break
3153
- end
3154
- end
3155
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3156
- s0 << r1
3157
- if r1
3158
- if (match_len = has_terminal?(";", false, index))
3159
- r3 = true
3160
- @index += match_len
3161
- else
3162
- terminal_parse_failure('";"')
3163
- r3 = nil
3164
- end
3165
- s0 << r3
3166
- if r3
3167
- s4, i4 = [], index
3168
- loop do
3169
- if has_terminal?(@regexps[gr = '\A[^\\n\\r]'] ||= Regexp.new(gr), :regexp, index)
3170
- r5 = true
3171
- @index += 1
3172
- else
3173
- terminal_parse_failure('[^\\n\\r]')
3174
- r5 = nil
3175
- end
3176
- if r5
3177
- s4 << r5
3178
- else
3179
- break
3180
- end
3181
- end
3182
- r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
3183
- s0 << r4
3184
- end
3185
- end
3186
- if s0.last
3187
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3188
- r0.extend(Comment0)
3189
- r0.extend(Comment1)
3190
- else
3191
- @index = i0
3192
- r0 = nil
3193
- end
3194
-
3195
- node_cache[:comment][start_index] = r0
3196
-
3197
- r0
3198
- end
3199
-
3200
- module Ns0
3201
- def host
3202
- elements[0]
3203
- end
3204
-
3205
- end
3206
-
3207
- module Ns1
3208
- def to_s
3209
- "#{host}"
3210
- end
3211
- end
3212
-
3213
- def _nt_ns
3214
- start_index = index
3215
- if node_cache[:ns].has_key?(index)
3216
- cached = node_cache[:ns][index]
3217
- if cached
3218
- node_cache[:ns][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3219
- @index = cached.interval.end
3220
- end
3221
- return cached
3222
- end
3223
-
3224
- i0, s0 = index, []
3225
- r1 = _nt_host
3226
- s0 << r1
3227
- if r1
3228
- s2, i2 = [], index
3229
- loop do
3230
- r3 = _nt_comment
3231
- if r3
3232
- s2 << r3
3233
- else
3234
- break
3235
- end
3236
- end
3237
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3238
- s0 << r2
3239
- end
3240
- if s0.last
3241
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3242
- r0.extend(Ns0)
3243
- r0.extend(Ns1)
3244
- else
3245
- @index = i0
3246
- r0 = nil
3247
- end
3248
-
3249
- node_cache[:ns][start_index] = r0
3250
-
3251
- r0
3252
- end
3253
-
3254
- module Rp0
3255
- end
3256
-
3257
- module Rp1
3258
- def to_s
3259
- text_value
3260
- end
3261
- end
3262
-
3263
- def _nt_rp
3264
- start_index = index
3265
- if node_cache[:rp].has_key?(index)
3266
- cached = node_cache[:rp][index]
3267
- if cached
3268
- node_cache[:rp][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3269
- @index = cached.interval.end
3270
- end
3271
- return cached
3272
- end
3273
-
3274
- s0, i0 = [], index
3275
- loop do
3276
- i1, s1 = index, []
3277
- s2, i2 = [], index
3278
- loop do
3279
- i3 = index
3280
- if (match_len = has_terminal?("\\.", false, index))
3281
- r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
3282
- @index += match_len
3283
- else
3284
- terminal_parse_failure('"\\\\."')
3285
- r4 = nil
3286
- end
3287
- if r4
3288
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
3289
- r3 = r4
3290
- else
3291
- if has_terminal?(@regexps[gr = '\A[+a-zA-Z0-9\\-)]'] ||= Regexp.new(gr), :regexp, index)
3292
- r5 = true
3293
- @index += 1
3294
- else
3295
- terminal_parse_failure('[+a-zA-Z0-9\\-)]')
3296
- r5 = nil
3297
- end
3298
- if r5
3299
- r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
3300
- r3 = r5
3301
- else
3302
- @index = i3
3303
- r3 = nil
3304
- end
3305
- end
3306
- if r3
3307
- s2 << r3
3308
- else
3309
- break
3310
- end
3311
- end
3312
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3313
- s1 << r2
3314
- if r2
3315
- if (match_len = has_terminal?(".", false, index))
3316
- r6 = true
3317
- @index += match_len
3318
- else
3319
- terminal_parse_failure('"."')
3320
- r6 = nil
3321
- end
3322
- s1 << r6
3323
- end
3324
- if s1.last
3325
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3326
- r1.extend(Rp0)
3327
- else
3328
- @index = i1
3329
- r1 = nil
3330
- end
3331
- if r1
3332
- s0 << r1
3333
- else
3334
- break
3335
- end
3336
- end
3337
- if s0.empty?
3338
- @index = i0
3339
- r0 = nil
3340
- else
3341
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3342
- r0.extend(Rp1)
3343
- r0.extend(Rp1)
3344
- end
3345
-
3346
- node_cache[:rp][start_index] = r0
3347
-
3348
- r0
3349
- end
3350
-
3351
- module Serial0
3352
- def integer
3353
- elements[0]
3354
- end
3355
-
3356
- end
3357
-
3358
- module Serial1
3359
- def to_i
3360
- integer.to_i
3361
- end
3362
- def to_s
3363
- "#{to_i}"
3364
- end
3365
- end
3366
-
3367
- def _nt_serial
3368
- start_index = index
3369
- if node_cache[:serial].has_key?(index)
3370
- cached = node_cache[:serial][index]
3371
- if cached
3372
- node_cache[:serial][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3373
- @index = cached.interval.end
3374
- end
3375
- return cached
3376
- end
3377
-
3378
- i0, s0 = index, []
3379
- r1 = _nt_integer
3380
- s0 << r1
3381
- if r1
3382
- s2, i2 = [], index
3383
- loop do
3384
- r3 = _nt_comment
3385
- if r3
3386
- s2 << r3
3387
- else
3388
- break
3389
- end
3390
- end
3391
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3392
- s0 << r2
3393
- end
3394
- if s0.last
3395
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3396
- r0.extend(Serial0)
3397
- r0.extend(Serial1)
3398
- else
3399
- @index = i0
3400
- r0 = nil
3401
- end
3402
-
3403
- node_cache[:serial][start_index] = r0
3404
-
3405
- r0
3406
- end
3407
-
3408
- module TimeInterval0
3409
- def integer
3410
- elements[0]
3411
- end
3412
-
3413
- def time_multiplier
3414
- elements[1]
3415
- end
3416
- end
3417
-
3418
- module TimeInterval1
3419
- def to_s
3420
- text_value
3421
- end
3422
-
3423
- def to_i
3424
- time_multiplier.to_i * integer.to_i
3425
- end
3426
- end
3427
-
3428
- def _nt_time_interval
3429
- start_index = index
3430
- if node_cache[:time_interval].has_key?(index)
3431
- cached = node_cache[:time_interval][index]
3432
- if cached
3433
- node_cache[:time_interval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3434
- @index = cached.interval.end
3435
- end
3436
- return cached
3437
- end
3438
-
3439
- i0, s0 = index, []
3440
- r1 = _nt_integer
3441
- s0 << r1
3442
- if r1
3443
- r2 = _nt_time_multiplier
3444
- s0 << r2
3445
- end
3446
- if s0.last
3447
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3448
- r0.extend(TimeInterval0)
3449
- r0.extend(TimeInterval1)
3450
- else
3451
- @index = i0
3452
- r0 = nil
3453
- end
3454
-
3455
- node_cache[:time_interval][start_index] = r0
3456
-
3457
- r0
3458
- end
3459
-
3460
- module Refresh0
3461
- def time_interval
3462
- elements[0]
3463
- end
3464
-
3465
- end
3466
-
3467
- module Refresh1
3468
- def to_i
3469
- time_interval.to_i
3470
- end
3471
- def to_s
3472
- time_interval.to_s
3473
- end
3474
- end
3475
-
3476
- def _nt_refresh
3477
- start_index = index
3478
- if node_cache[:refresh].has_key?(index)
3479
- cached = node_cache[:refresh][index]
3480
- if cached
3481
- node_cache[:refresh][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3482
- @index = cached.interval.end
3483
- end
3484
- return cached
3485
- end
3486
-
3487
- i0, s0 = index, []
3488
- r1 = _nt_time_interval
3489
- s0 << r1
3490
- if r1
3491
- s2, i2 = [], index
3492
- loop do
3493
- r3 = _nt_comment
3494
- if r3
3495
- s2 << r3
3496
- else
3497
- break
3498
- end
3499
- end
3500
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3501
- s0 << r2
3502
- end
3503
- if s0.last
3504
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3505
- r0.extend(Refresh0)
3506
- r0.extend(Refresh1)
3507
- else
3508
- @index = i0
3509
- r0 = nil
3510
- end
3511
-
3512
- node_cache[:refresh][start_index] = r0
3513
-
3514
- r0
3515
- end
3516
-
3517
- module Integer0
3518
- def to_i
3519
- text_value.to_i
3520
- end
3521
- def to_s
3522
- "#{to_i}"
3523
- end
3524
- end
3525
-
3526
- def _nt_integer
3527
- start_index = index
3528
- if node_cache[:integer].has_key?(index)
3529
- cached = node_cache[:integer][index]
3530
- if cached
3531
- node_cache[:integer][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3532
- @index = cached.interval.end
3533
- end
3534
- return cached
3535
- end
3536
-
3537
- s0, i0 = [], index
3538
- loop do
3539
- if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index)
3540
- r1 = true
3541
- @index += 1
3542
- else
3543
- terminal_parse_failure('[0-9]')
3544
- r1 = nil
3545
- end
3546
- if r1
3547
- s0 << r1
3548
- else
3549
- break
3550
- end
3551
- end
3552
- if s0.empty?
3553
- @index = i0
3554
- r0 = nil
3555
- else
3556
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3557
- r0.extend(Integer0)
3558
- r0.extend(Integer0)
3559
- end
3560
-
3561
- node_cache[:integer][start_index] = r0
3562
-
3563
- r0
3564
- end
3565
-
3566
- module TimeMultiplier0
3567
- def to_s
3568
- text_value
3569
- end
3570
- def to_i
3571
- case text_value.downcase
3572
- when 'm' then 60
3573
- when 'h' then 60 * 60
3574
- when 'd' then 60 * 60 * 24
3575
- when 'w' then 60 * 60 * 24 * 7
3576
- else
3577
- 1
3578
- end
3579
- end
3580
- end
3581
-
3582
- def _nt_time_multiplier
3583
- start_index = index
3584
- if node_cache[:time_multiplier].has_key?(index)
3585
- cached = node_cache[:time_multiplier][index]
3586
- if cached
3587
- node_cache[:time_multiplier][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3588
- @index = cached.interval.end
3589
- end
3590
- return cached
3591
- end
3592
-
3593
- i0 = index
3594
- if (match_len = has_terminal?('s', false, index))
3595
- r1 = true
3596
- @index += match_len
3597
- else
3598
- terminal_parse_failure('\'s\'')
3599
- r1 = nil
3600
- end
3601
- if r1
3602
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
3603
- r0 = r1
3604
- r0.extend(TimeMultiplier0)
3605
- r0.extend(TimeMultiplier0)
3606
- else
3607
- if (match_len = has_terminal?('S', false, index))
3608
- r2 = true
3609
- @index += match_len
3610
- else
3611
- terminal_parse_failure('\'S\'')
3612
- r2 = nil
3613
- end
3614
- if r2
3615
- r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
3616
- r0 = r2
3617
- r0.extend(TimeMultiplier0)
3618
- r0.extend(TimeMultiplier0)
3619
- else
3620
- if (match_len = has_terminal?('m', false, index))
3621
- r3 = true
3622
- @index += match_len
3623
- else
3624
- terminal_parse_failure('\'m\'')
3625
- r3 = nil
3626
- end
3627
- if r3
3628
- r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
3629
- r0 = r3
3630
- r0.extend(TimeMultiplier0)
3631
- r0.extend(TimeMultiplier0)
3632
- else
3633
- if (match_len = has_terminal?('M', false, index))
3634
- r4 = true
3635
- @index += match_len
3636
- else
3637
- terminal_parse_failure('\'M\'')
3638
- r4 = nil
3639
- end
3640
- if r4
3641
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
3642
- r0 = r4
3643
- r0.extend(TimeMultiplier0)
3644
- r0.extend(TimeMultiplier0)
3645
- else
3646
- if (match_len = has_terminal?('h', false, index))
3647
- r5 = true
3648
- @index += match_len
3649
- else
3650
- terminal_parse_failure('\'h\'')
3651
- r5 = nil
3652
- end
3653
- if r5
3654
- r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
3655
- r0 = r5
3656
- r0.extend(TimeMultiplier0)
3657
- r0.extend(TimeMultiplier0)
3658
- else
3659
- if (match_len = has_terminal?('H', false, index))
3660
- r6 = true
3661
- @index += match_len
3662
- else
3663
- terminal_parse_failure('\'H\'')
3664
- r6 = nil
3665
- end
3666
- if r6
3667
- r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
3668
- r0 = r6
3669
- r0.extend(TimeMultiplier0)
3670
- r0.extend(TimeMultiplier0)
3671
- else
3672
- if (match_len = has_terminal?('d', false, index))
3673
- r7 = true
3674
- @index += match_len
3675
- else
3676
- terminal_parse_failure('\'d\'')
3677
- r7 = nil
3678
- end
3679
- if r7
3680
- r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
3681
- r0 = r7
3682
- r0.extend(TimeMultiplier0)
3683
- r0.extend(TimeMultiplier0)
3684
- else
3685
- if (match_len = has_terminal?('D', false, index))
3686
- r8 = true
3687
- @index += match_len
3688
- else
3689
- terminal_parse_failure('\'D\'')
3690
- r8 = nil
3691
- end
3692
- if r8
3693
- r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
3694
- r0 = r8
3695
- r0.extend(TimeMultiplier0)
3696
- r0.extend(TimeMultiplier0)
3697
- else
3698
- if (match_len = has_terminal?('w', false, index))
3699
- r9 = true
3700
- @index += match_len
3701
- else
3702
- terminal_parse_failure('\'w\'')
3703
- r9 = nil
3704
- end
3705
- if r9
3706
- r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
3707
- r0 = r9
3708
- r0.extend(TimeMultiplier0)
3709
- r0.extend(TimeMultiplier0)
3710
- else
3711
- if (match_len = has_terminal?('W', false, index))
3712
- r10 = true
3713
- @index += match_len
3714
- else
3715
- terminal_parse_failure('\'W\'')
3716
- r10 = nil
3717
- end
3718
- if r10
3719
- r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
3720
- r0 = r10
3721
- r0.extend(TimeMultiplier0)
3722
- r0.extend(TimeMultiplier0)
3723
- else
3724
- if (match_len = has_terminal?('', false, index))
3725
- r11 = true
3726
- @index += match_len
3727
- else
3728
- terminal_parse_failure('\'\'')
3729
- r11 = nil
3730
- end
3731
- if r11
3732
- r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
3733
- r0 = r11
3734
- r0.extend(TimeMultiplier0)
3735
- r0.extend(TimeMultiplier0)
3736
- else
3737
- @index = i0
3738
- r0 = nil
3739
- end
3740
- end
3741
- end
3742
- end
3743
- end
3744
- end
3745
- end
3746
- end
3747
- end
3748
- end
3749
- end
3750
-
3751
- node_cache[:time_multiplier][start_index] = r0
3752
-
3753
- r0
3754
- end
3755
-
3756
- module Reretry0
3757
- def time_interval
3758
- elements[0]
3759
- end
3760
-
3761
- end
3762
-
3763
- module Reretry1
3764
- def to_i
3765
- time_interval.to_i
3766
- end
3767
- def to_s
3768
- time_interval.to_s
3769
- end
3770
- end
3771
-
3772
- def _nt_reretry
3773
- start_index = index
3774
- if node_cache[:reretry].has_key?(index)
3775
- cached = node_cache[:reretry][index]
3776
- if cached
3777
- node_cache[:reretry][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3778
- @index = cached.interval.end
3779
- end
3780
- return cached
3781
- end
3782
-
3783
- i0, s0 = index, []
3784
- r1 = _nt_time_interval
3785
- s0 << r1
3786
- if r1
3787
- s2, i2 = [], index
3788
- loop do
3789
- r3 = _nt_comment
3790
- if r3
3791
- s2 << r3
3792
- else
3793
- break
3794
- end
3795
- end
3796
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3797
- s0 << r2
3798
- end
3799
- if s0.last
3800
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3801
- r0.extend(Reretry0)
3802
- r0.extend(Reretry1)
3803
- else
3804
- @index = i0
3805
- r0 = nil
3806
- end
3807
-
3808
- node_cache[:reretry][start_index] = r0
3809
-
3810
- r0
3811
- end
3812
-
3813
- module Expiry0
3814
- def time_interval
3815
- elements[0]
3816
- end
3817
-
3818
- end
3819
-
3820
- module Expiry1
3821
- def to_i
3822
- time_interval.to_i
3823
- end
3824
- def to_s
3825
- time_interval.to_s
3826
- end
3827
- end
3828
-
3829
- def _nt_expiry
3830
- start_index = index
3831
- if node_cache[:expiry].has_key?(index)
3832
- cached = node_cache[:expiry][index]
3833
- if cached
3834
- node_cache[:expiry][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3835
- @index = cached.interval.end
3836
- end
3837
- return cached
3838
- end
3839
-
3840
- i0, s0 = index, []
3841
- r1 = _nt_time_interval
3842
- s0 << r1
3843
- if r1
3844
- s2, i2 = [], index
3845
- loop do
3846
- r3 = _nt_comment
3847
- if r3
3848
- s2 << r3
3849
- else
3850
- break
3851
- end
3852
- end
3853
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3854
- s0 << r2
3855
- end
3856
- if s0.last
3857
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3858
- r0.extend(Expiry0)
3859
- r0.extend(Expiry1)
3860
- else
3861
- @index = i0
3862
- r0 = nil
3863
- end
3864
-
3865
- node_cache[:expiry][start_index] = r0
3866
-
3867
- r0
3868
- end
3869
-
3870
- module Nxttl0
3871
- def time_interval
3872
- elements[0]
3873
- end
3874
-
3875
- end
3876
-
3877
- module Nxttl1
3878
- def to_i
3879
- time_interval.to_i
3880
- end
3881
- def to_s
3882
- time_interval.to_s
3883
- end
3884
- end
3885
-
3886
- def _nt_nxttl
3887
- start_index = index
3888
- if node_cache[:nxttl].has_key?(index)
3889
- cached = node_cache[:nxttl][index]
3890
- if cached
3891
- node_cache[:nxttl][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3892
- @index = cached.interval.end
3893
- end
3894
- return cached
3895
- end
3896
-
3897
- i0, s0 = index, []
3898
- r1 = _nt_time_interval
3899
- s0 << r1
3900
- if r1
3901
- s2, i2 = [], index
3902
- loop do
3903
- r3 = _nt_comment
3904
- if r3
3905
- s2 << r3
3906
- else
3907
- break
3908
- end
3909
- end
3910
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
3911
- s0 << r2
3912
- end
3913
- if s0.last
3914
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
3915
- r0.extend(Nxttl0)
3916
- r0.extend(Nxttl1)
3917
- else
3918
- @index = i0
3919
- r0 = nil
3920
- end
3921
-
3922
- node_cache[:nxttl][start_index] = r0
3923
-
3924
- r0
3925
- end
3926
-
3927
- module MsAge0
3928
- def space
3929
- elements[3]
3930
- end
3931
- end
3932
-
3933
- module MsAge1
3934
- def to_s
3935
- text_value
3936
- end
3937
- end
3938
-
3939
- def _nt_ms_age
3940
- start_index = index
3941
- if node_cache[:ms_age].has_key?(index)
3942
- cached = node_cache[:ms_age][index]
3943
- if cached
3944
- node_cache[:ms_age][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
3945
- @index = cached.interval.end
3946
- end
3947
- return cached
3948
- end
3949
-
3950
- i0 = index
3951
- i1, s1 = index, []
3952
- if (match_len = has_terminal?("[AGE:", false, index))
3953
- r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
3954
- @index += match_len
3955
- else
3956
- terminal_parse_failure('"[AGE:"')
3957
- r2 = nil
3958
- end
3959
- s1 << r2
3960
- if r2
3961
- s3, i3 = [], index
3962
- loop do
3963
- if has_terminal?(@regexps[gr = '\A[\\d]'] ||= Regexp.new(gr), :regexp, index)
3964
- r4 = true
3965
- @index += 1
3966
- else
3967
- terminal_parse_failure('[\\d]')
3968
- r4 = nil
3969
- end
3970
- if r4
3971
- s3 << r4
3972
- else
3973
- break
3974
- end
3975
- end
3976
- if s3.empty?
3977
- @index = i3
3978
- r3 = nil
3979
- else
3980
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
3981
- end
3982
- s1 << r3
3983
- if r3
3984
- if (match_len = has_terminal?("]", false, index))
3985
- r5 = true
3986
- @index += match_len
3987
- else
3988
- terminal_parse_failure('"]"')
3989
- r5 = nil
3990
- end
3991
- s1 << r5
3992
- if r5
3993
- r6 = _nt_space
3994
- s1 << r6
3995
- end
3996
- end
3997
- end
3998
- if s1.last
3999
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4000
- r1.extend(MsAge0)
4001
- else
4002
- @index = i1
4003
- r1 = nil
4004
- end
4005
- if r1
4006
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
4007
- r0 = r1
4008
- r0.extend(MsAge1)
4009
- r0.extend(MsAge1)
4010
- else
4011
- if (match_len = has_terminal?('', false, index))
4012
- r7 = true
4013
- @index += match_len
4014
- else
4015
- terminal_parse_failure('\'\'')
4016
- r7 = nil
4017
- end
4018
- if r7
4019
- r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
4020
- r0 = r7
4021
- r0.extend(MsAge1)
4022
- r0.extend(MsAge1)
4023
- else
4024
- @index = i0
4025
- r0 = nil
4026
- end
4027
- end
4028
-
4029
- node_cache[:ms_age][start_index] = r0
4030
-
4031
- r0
4032
- end
4033
-
4034
- module Ttl0
4035
- def time_interval
4036
- elements[0]
4037
- end
4038
-
4039
- def space
4040
- elements[1]
4041
- end
4042
- end
4043
-
4044
- module Ttl1
4045
- def to_i
4046
- respond_to?(:time_interval) ? time_interval.to_i : nil
4047
- end
4048
- def to_s
4049
- respond_to?(:time_interval) ? time_interval.to_s : ''
4050
- end
4051
- end
4052
-
4053
- def _nt_ttl
4054
- start_index = index
4055
- if node_cache[:ttl].has_key?(index)
4056
- cached = node_cache[:ttl][index]
4057
- if cached
4058
- node_cache[:ttl][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4059
- @index = cached.interval.end
4060
- end
4061
- return cached
4062
- end
4063
-
4064
- i0 = index
4065
- i1, s1 = index, []
4066
- r2 = _nt_time_interval
4067
- s1 << r2
4068
- if r2
4069
- r3 = _nt_space
4070
- s1 << r3
4071
- end
4072
- if s1.last
4073
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4074
- r1.extend(Ttl0)
4075
- else
4076
- @index = i1
4077
- r1 = nil
4078
- end
4079
- if r1
4080
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
4081
- r0 = r1
4082
- r0.extend(Ttl1)
4083
- r0.extend(Ttl1)
4084
- else
4085
- if (match_len = has_terminal?('', false, index))
4086
- r4 = true
4087
- @index += match_len
4088
- else
4089
- terminal_parse_failure('\'\'')
4090
- r4 = nil
4091
- end
4092
- if r4
4093
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
4094
- r0 = r4
4095
- r0.extend(Ttl1)
4096
- r0.extend(Ttl1)
4097
- else
4098
- @index = i0
4099
- r0 = nil
4100
- end
4101
- end
4102
-
4103
- node_cache[:ttl][start_index] = r0
4104
-
4105
- r0
4106
- end
4107
-
4108
- module Host0
4109
- def to_s
4110
- case text_value
4111
- when /\.$/
4112
- text_value
4113
- when "@", /\s/
4114
- text_value
4115
- else
4116
- text_value + '.@'
4117
- end
4118
- end
4119
- end
4120
-
4121
- def _nt_host
4122
- start_index = index
4123
- if node_cache[:host].has_key?(index)
4124
- cached = node_cache[:host][index]
4125
- if cached
4126
- node_cache[:host][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4127
- @index = cached.interval.end
4128
- end
4129
- return cached
4130
- end
4131
-
4132
- i0 = index
4133
- s1, i1 = [], index
4134
- loop do
4135
- if has_terminal?(@regexps[gr = '\A[*a-zA-Z0-9\\-\\._]'] ||= Regexp.new(gr), :regexp, index)
4136
- r2 = true
4137
- @index += 1
4138
- else
4139
- terminal_parse_failure('[*a-zA-Z0-9\\-\\._]')
4140
- r2 = nil
4141
- end
4142
- if r2
4143
- s1 << r2
4144
- else
4145
- break
4146
- end
4147
- end
4148
- if s1.empty?
4149
- @index = i1
4150
- r1 = nil
4151
- else
4152
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4153
- end
4154
- if r1
4155
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
4156
- r0 = r1
4157
- r0.extend(Host0)
4158
- r0.extend(Host0)
4159
- else
4160
- if (match_len = has_terminal?("@", false, index))
4161
- r3 = true
4162
- @index += match_len
4163
- else
4164
- terminal_parse_failure('"@"')
4165
- r3 = nil
4166
- end
4167
- if r3
4168
- r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
4169
- r0 = r3
4170
- r0.extend(Host0)
4171
- r0.extend(Host0)
4172
- else
4173
- if (match_len = has_terminal?(' ', false, index))
4174
- r4 = true
4175
- @index += match_len
4176
- else
4177
- terminal_parse_failure('\' \'')
4178
- r4 = nil
4179
- end
4180
- if r4
4181
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
4182
- r0 = r4
4183
- r0.extend(Host0)
4184
- r0.extend(Host0)
4185
- else
4186
- if (match_len = has_terminal?("\t", false, index))
4187
- r5 = true
4188
- @index += match_len
4189
- else
4190
- terminal_parse_failure('"\\t"')
4191
- r5 = nil
4192
- end
4193
- if r5
4194
- r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
4195
- r0 = r5
4196
- r0.extend(Host0)
4197
- r0.extend(Host0)
4198
- else
4199
- @index = i0
4200
- r0 = nil
4201
- end
4202
- end
4203
- end
4204
- end
4205
-
4206
- node_cache[:host][start_index] = r0
4207
-
4208
- r0
4209
- end
4210
-
4211
- module Data0
4212
- def to_s
4213
- text_value.strip
4214
- end
4215
- end
4216
-
4217
- def _nt_data
4218
- start_index = index
4219
- if node_cache[:data].has_key?(index)
4220
- cached = node_cache[:data][index]
4221
- if cached
4222
- node_cache[:data][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4223
- @index = cached.interval.end
4224
- end
4225
- return cached
4226
- end
4227
-
4228
- s0, i0 = [], index
4229
- loop do
4230
- if has_terminal?(@regexps[gr = '\A[^;\\n\\r]'] ||= Regexp.new(gr), :regexp, index)
4231
- r1 = true
4232
- @index += 1
4233
- else
4234
- terminal_parse_failure('[^;\\n\\r]')
4235
- r1 = nil
4236
- end
4237
- if r1
4238
- s0 << r1
4239
- else
4240
- break
4241
- end
4242
- end
4243
- if s0.empty?
4244
- @index = i0
4245
- r0 = nil
4246
- else
4247
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4248
- r0.extend(Data0)
4249
- r0.extend(Data0)
4250
- end
4251
-
4252
- node_cache[:data][start_index] = r0
4253
-
4254
- r0
4255
- end
4256
-
4257
- module MsTxtData0
4258
- def data
4259
- elements[2]
4260
- end
4261
-
4262
- end
4263
-
4264
- module MsTxtData1
4265
- def data
4266
- elements[0]
4267
- end
4268
- end
4269
-
4270
- module MsTxtData2
4271
- def to_s
4272
- data.to_s
4273
- end
4274
- end
4275
-
4276
- def _nt_ms_txt_data
4277
- start_index = index
4278
- if node_cache[:ms_txt_data].has_key?(index)
4279
- cached = node_cache[:ms_txt_data][index]
4280
- if cached
4281
- node_cache[:ms_txt_data][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4282
- @index = cached.interval.end
4283
- end
4284
- return cached
4285
- end
4286
-
4287
- i0 = index
4288
- i1, s1 = index, []
4289
- if (match_len = has_terminal?("(", false, index))
4290
- r2 = true
4291
- @index += match_len
4292
- else
4293
- terminal_parse_failure('"("')
4294
- r2 = nil
4295
- end
4296
- s1 << r2
4297
- if r2
4298
- s3, i3 = [], index
4299
- loop do
4300
- r4 = _nt_space
4301
- if r4
4302
- s3 << r4
4303
- else
4304
- break
4305
- end
4306
- end
4307
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4308
- s1 << r3
4309
- if r3
4310
- r5 = _nt_txt_data
4311
- s1 << r5
4312
- if r5
4313
- s6, i6 = [], index
4314
- loop do
4315
- r7 = _nt_space
4316
- if r7
4317
- s6 << r7
4318
- else
4319
- break
4320
- end
4321
- end
4322
- r6 = instantiate_node(SyntaxNode,input, i6...index, s6)
4323
- s1 << r6
4324
- if r6
4325
- if (match_len = has_terminal?(")", false, index))
4326
- r8 = true
4327
- @index += match_len
4328
- else
4329
- terminal_parse_failure('")"')
4330
- r8 = nil
4331
- end
4332
- s1 << r8
4333
- end
4334
- end
4335
- end
4336
- end
4337
- if s1.last
4338
- r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
4339
- r1.extend(MsTxtData0)
4340
- else
4341
- @index = i1
4342
- r1 = nil
4343
- end
4344
- if r1
4345
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
4346
- r0 = r1
4347
- r0.extend(MsTxtData2)
4348
- r0.extend(MsTxtData2)
4349
- else
4350
- i9, s9 = index, []
4351
- r10 = _nt_txt_data
4352
- s9 << r10
4353
- if s9.last
4354
- r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
4355
- r9.extend(MsTxtData1)
4356
- else
4357
- @index = i9
4358
- r9 = nil
4359
- end
4360
- if r9
4361
- r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
4362
- r0 = r9
4363
- r0.extend(MsTxtData2)
4364
- r0.extend(MsTxtData2)
4365
- else
4366
- @index = i0
4367
- r0 = nil
4368
- end
4369
- end
4370
-
4371
- node_cache[:ms_txt_data][start_index] = r0
4372
-
4373
- r0
4374
- end
4375
-
4376
- module TxtData0
4377
- def space
4378
- elements[0]
4379
- end
4380
-
4381
- def txt_data
4382
- elements[1]
4383
- end
4384
- end
4385
-
4386
- module TxtData1
4387
- def txt_string
4388
- elements[0]
4389
- end
4390
-
4391
- end
4392
-
4393
- module TxtData2
4394
- def to_s
4395
- text_value
4396
- end
4397
- end
4398
-
4399
- def _nt_txt_data
4400
- start_index = index
4401
- if node_cache[:txt_data].has_key?(index)
4402
- cached = node_cache[:txt_data][index]
4403
- if cached
4404
- node_cache[:txt_data][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4405
- @index = cached.interval.end
4406
- end
4407
- return cached
4408
- end
4409
-
4410
- i0, s0 = index, []
4411
- r1 = _nt_txt_string
4412
- s0 << r1
4413
- if r1
4414
- s2, i2 = [], index
4415
- loop do
4416
- i3, s3 = index, []
4417
- r4 = _nt_space
4418
- s3 << r4
4419
- if r4
4420
- r5 = _nt_txt_data
4421
- s3 << r5
4422
- end
4423
- if s3.last
4424
- r3 = instantiate_node(SyntaxNode,input, i3...index, s3)
4425
- r3.extend(TxtData0)
4426
- else
4427
- @index = i3
4428
- r3 = nil
4429
- end
4430
- if r3
4431
- s2 << r3
4432
- else
4433
- break
4434
- end
4435
- end
4436
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4437
- s0 << r2
4438
- end
4439
- if s0.last
4440
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4441
- r0.extend(TxtData1)
4442
- r0.extend(TxtData2)
4443
- else
4444
- @index = i0
4445
- r0 = nil
4446
- end
4447
-
4448
- node_cache[:txt_data][start_index] = r0
4449
-
4450
- r0
4451
- end
4452
-
4453
- module TxtString0
4454
- def to_s
4455
- text_value
4456
- end
4457
- end
4458
-
4459
- def _nt_txt_string
4460
- start_index = index
4461
- if node_cache[:txt_string].has_key?(index)
4462
- cached = node_cache[:txt_string][index]
4463
- if cached
4464
- node_cache[:txt_string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4465
- @index = cached.interval.end
4466
- end
4467
- return cached
4468
- end
4469
-
4470
- i0 = index
4471
- r1 = _nt_quoted_string
4472
- if r1
4473
- r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
4474
- r0 = r1
4475
- r0.extend(TxtString0)
4476
- r0.extend(TxtString0)
4477
- else
4478
- r2 = _nt_unquoted_string
4479
- if r2
4480
- r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
4481
- r0 = r2
4482
- r0.extend(TxtString0)
4483
- r0.extend(TxtString0)
4484
- else
4485
- @index = i0
4486
- r0 = nil
4487
- end
4488
- end
4489
-
4490
- node_cache[:txt_string][start_index] = r0
4491
-
4492
- r0
4493
- end
4494
-
4495
- module QuotedString0
4496
- end
4497
-
4498
- module QuotedString1
4499
- def to_s
4500
- text_value
4501
- end
4502
- end
4503
-
4504
- def _nt_quoted_string
4505
- start_index = index
4506
- if node_cache[:quoted_string].has_key?(index)
4507
- cached = node_cache[:quoted_string][index]
4508
- if cached
4509
- node_cache[:quoted_string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4510
- @index = cached.interval.end
4511
- end
4512
- return cached
4513
- end
4514
-
4515
- i0, s0 = index, []
4516
- if (match_len = has_terminal?('"', false, index))
4517
- r1 = true
4518
- @index += match_len
4519
- else
4520
- terminal_parse_failure('\'"\'')
4521
- r1 = nil
4522
- end
4523
- s0 << r1
4524
- if r1
4525
- s2, i2 = [], index
4526
- loop do
4527
- i3 = index
4528
- if (match_len = has_terminal?('\"', false, index))
4529
- r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
4530
- @index += match_len
4531
- else
4532
- terminal_parse_failure('\'\\"\'')
4533
- r4 = nil
4534
- end
4535
- if r4
4536
- r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
4537
- r3 = r4
4538
- else
4539
- if has_terminal?(@regexps[gr = '\A[^"]'] ||= Regexp.new(gr), :regexp, index)
4540
- r5 = true
4541
- @index += 1
4542
- else
4543
- terminal_parse_failure('[^"]')
4544
- r5 = nil
4545
- end
4546
- if r5
4547
- r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
4548
- r3 = r5
4549
- else
4550
- @index = i3
4551
- r3 = nil
4552
- end
4553
- end
4554
- if r3
4555
- s2 << r3
4556
- else
4557
- break
4558
- end
4559
- end
4560
- r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
4561
- s0 << r2
4562
- if r2
4563
- if (match_len = has_terminal?('"', false, index))
4564
- r6 = true
4565
- @index += match_len
4566
- else
4567
- terminal_parse_failure('\'"\'')
4568
- r6 = nil
4569
- end
4570
- s0 << r6
4571
- end
4572
- end
4573
- if s0.last
4574
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4575
- r0.extend(QuotedString0)
4576
- r0.extend(QuotedString1)
4577
- else
4578
- @index = i0
4579
- r0 = nil
4580
- end
4581
-
4582
- node_cache[:quoted_string][start_index] = r0
4583
-
4584
- r0
4585
- end
4586
-
4587
- module UnquotedString0
4588
- def to_s
4589
- text_value
4590
- end
4591
- end
4592
-
4593
- def _nt_unquoted_string
4594
- start_index = index
4595
- if node_cache[:unquoted_string].has_key?(index)
4596
- cached = node_cache[:unquoted_string][index]
4597
- if cached
4598
- node_cache[:unquoted_string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
4599
- @index = cached.interval.end
4600
- end
4601
- return cached
4602
- end
4603
-
4604
- s0, i0 = [], index
4605
- loop do
4606
- if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9]'] ||= Regexp.new(gr), :regexp, index)
4607
- r1 = true
4608
- @index += 1
4609
- else
4610
- terminal_parse_failure('[a-zA-Z0-9]')
4611
- r1 = nil
4612
- end
4613
- if r1
4614
- s0 << r1
4615
- else
4616
- break
4617
- end
4618
- end
4619
- if s0.empty?
4620
- @index = i0
4621
- r0 = nil
4622
- else
4623
- r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
4624
- r0.extend(UnquotedString0)
4625
- r0.extend(UnquotedString0)
4626
- end
4627
-
4628
- node_cache[:unquoted_string][start_index] = r0
4629
-
4630
- r0
4631
- end
4632
-
4633
- end
4634
-
4635
- class Parser < Treetop::Runtime::CompiledParser
4636
- include ZonefileGrammar # :nodoc:
4637
- end
4638
- end
4639
- end