dns-zonefile 1.0.7 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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