Grammar of primitives common between specs. Partial grammars for network status and...
[torspec-validations.git] / lib / torspec / primitives.rb
blob3c9739f26ad3506db6c0b848003652baecab8356
1 # Autogenerated from a Treetop grammar. Edits may be lost.
4 module Torspec
5   module Primitives
6     include Treetop::Runtime
8     def root
9       @root ||= :Year
10     end
12     module Year0
13     end
15     def _nt_Year
16       start_index = index
17       if node_cache[:Year].has_key?(index)
18         cached = node_cache[:Year][index]
19         if cached
20           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
21           @index = cached.interval.end
22         end
23         return cached
24       end
26       i0, s0 = index, []
27       if has_terminal?('\G[0-9]', true, index)
28         r1 = true
29         @index += 1
30       else
31         r1 = nil
32       end
33       s0 << r1
34       if r1
35         if has_terminal?('\G[0-9]', true, index)
36           r2 = true
37           @index += 1
38         else
39           r2 = nil
40         end
41         s0 << r2
42         if r2
43           if has_terminal?('\G[0-9]', true, index)
44             r3 = true
45             @index += 1
46           else
47             r3 = nil
48           end
49           s0 << r3
50           if r3
51             if has_terminal?('\G[0-9]', true, index)
52               r4 = true
53               @index += 1
54             else
55               r4 = nil
56             end
57             s0 << r4
58           end
59         end
60       end
61       if s0.last
62         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
63         r0.extend(Year0)
64       else
65         @index = i0
66         r0 = nil
67       end
69       node_cache[:Year][start_index] = r0
71       r0
72     end
74     module Month0
75     end
77     module Month1
78     end
80     def _nt_Month
81       start_index = index
82       if node_cache[:Month].has_key?(index)
83         cached = node_cache[:Month][index]
84         if cached
85           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
86           @index = cached.interval.end
87         end
88         return cached
89       end
91       i0 = index
92       i1, s1 = index, []
93       if has_terminal?('\G[0]', true, index)
94         r2 = true
95         @index += 1
96       else
97         r2 = nil
98       end
99       s1 << r2
100       if r2
101         if has_terminal?('\G[1-9]', true, index)
102           r3 = true
103           @index += 1
104         else
105           r3 = nil
106         end
107         s1 << r3
108       end
109       if s1.last
110         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
111         r1.extend(Month0)
112       else
113         @index = i1
114         r1 = nil
115       end
116       if r1
117         r0 = r1
118       else
119         i4, s4 = index, []
120         if has_terminal?('\G[1]', true, index)
121           r5 = true
122           @index += 1
123         else
124           r5 = nil
125         end
126         s4 << r5
127         if r5
128           if has_terminal?('\G[0-2]', true, index)
129             r6 = true
130             @index += 1
131           else
132             r6 = nil
133           end
134           s4 << r6
135         end
136         if s4.last
137           r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
138           r4.extend(Month1)
139         else
140           @index = i4
141           r4 = nil
142         end
143         if r4
144           r0 = r4
145         else
146           @index = i0
147           r0 = nil
148         end
149       end
151       node_cache[:Month][start_index] = r0
153       r0
154     end
156     module Day0
157     end
159     module Day1
160     end
162     def _nt_Day
163       start_index = index
164       if node_cache[:Day].has_key?(index)
165         cached = node_cache[:Day][index]
166         if cached
167           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
168           @index = cached.interval.end
169         end
170         return cached
171       end
173       i0 = index
174       i1, s1 = index, []
175       if has_terminal?('\G[0-2]', true, index)
176         r2 = true
177         @index += 1
178       else
179         r2 = nil
180       end
181       s1 << r2
182       if r2
183         if has_terminal?('\G[0-9]', true, index)
184           r3 = true
185           @index += 1
186         else
187           r3 = nil
188         end
189         s1 << r3
190       end
191       if s1.last
192         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
193         r1.extend(Day0)
194       else
195         @index = i1
196         r1 = nil
197       end
198       if r1
199         r0 = r1
200       else
201         i4, s4 = index, []
202         if has_terminal?('\G[3]', true, index)
203           r5 = true
204           @index += 1
205         else
206           r5 = nil
207         end
208         s4 << r5
209         if r5
210           if has_terminal?('\G[0-1]', true, index)
211             r6 = true
212             @index += 1
213           else
214             r6 = nil
215           end
216           s4 << r6
217         end
218         if s4.last
219           r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
220           r4.extend(Day1)
221         else
222           @index = i4
223           r4 = nil
224         end
225         if r4
226           r0 = r4
227         else
228           @index = i0
229           r0 = nil
230         end
231       end
233       node_cache[:Day][start_index] = r0
235       r0
236     end
238     module Hour0
239     end
241     module Hour1
242     end
244     module Hour2
245     end
247     def _nt_Hour
248       start_index = index
249       if node_cache[:Hour].has_key?(index)
250         cached = node_cache[:Hour][index]
251         if cached
252           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
253           @index = cached.interval.end
254         end
255         return cached
256       end
258       i0 = index
259       i1, s1 = index, []
260       if has_terminal?('\G[0]', true, index)
261         r2 = true
262         @index += 1
263       else
264         r2 = nil
265       end
266       s1 << r2
267       if r2
268         if has_terminal?('\G[1-9]', true, index)
269           r3 = true
270           @index += 1
271         else
272           r3 = nil
273         end
274         s1 << r3
275       end
276       if s1.last
277         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
278         r1.extend(Hour0)
279       else
280         @index = i1
281         r1 = nil
282       end
283       if r1
284         r0 = r1
285       else
286         i4, s4 = index, []
287         if has_terminal?('\G[1]', true, index)
288           r5 = true
289           @index += 1
290         else
291           r5 = nil
292         end
293         s4 << r5
294         if r5
295           if has_terminal?('\G[0-9]', true, index)
296             r6 = true
297             @index += 1
298           else
299             r6 = nil
300           end
301           s4 << r6
302         end
303         if s4.last
304           r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
305           r4.extend(Hour1)
306         else
307           @index = i4
308           r4 = nil
309         end
310         if r4
311           r0 = r4
312         else
313           i7, s7 = index, []
314           if has_terminal?('\G[2]', true, index)
315             r8 = true
316             @index += 1
317           else
318             r8 = nil
319           end
320           s7 << r8
321           if r8
322             if has_terminal?('\G[0-4]', true, index)
323               r9 = true
324               @index += 1
325             else
326               r9 = nil
327             end
328             s7 << r9
329           end
330           if s7.last
331             r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
332             r7.extend(Hour2)
333           else
334             @index = i7
335             r7 = nil
336           end
337           if r7
338             r0 = r7
339           else
340             @index = i0
341             r0 = nil
342           end
343         end
344       end
346       node_cache[:Hour][start_index] = r0
348       r0
349     end
351     module Minute0
352     end
354     module Minute1
355     end
357     def _nt_Minute
358       start_index = index
359       if node_cache[:Minute].has_key?(index)
360         cached = node_cache[:Minute][index]
361         if cached
362           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
363           @index = cached.interval.end
364         end
365         return cached
366       end
368       i0 = index
369       i1, s1 = index, []
370       if has_terminal?('\G[0]', true, index)
371         r2 = true
372         @index += 1
373       else
374         r2 = nil
375       end
376       s1 << r2
377       if r2
378         if has_terminal?('\G[0-9]', true, index)
379           r3 = true
380           @index += 1
381         else
382           r3 = nil
383         end
384         s1 << r3
385       end
386       if s1.last
387         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
388         r1.extend(Minute0)
389       else
390         @index = i1
391         r1 = nil
392       end
393       if r1
394         r0 = r1
395       else
396         i4, s4 = index, []
397         if has_terminal?('\G[1-5]', true, index)
398           r5 = true
399           @index += 1
400         else
401           r5 = nil
402         end
403         s4 << r5
404         if r5
405           if has_terminal?('\G[0-9]', true, index)
406             r6 = true
407             @index += 1
408           else
409             r6 = nil
410           end
411           s4 << r6
412         end
413         if s4.last
414           r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
415           r4.extend(Minute1)
416         else
417           @index = i4
418           r4 = nil
419         end
420         if r4
421           r0 = r4
422         else
423           @index = i0
424           r0 = nil
425         end
426       end
428       node_cache[:Minute][start_index] = r0
430       r0
431     end
433     module Second0
434     end
436     module Second1
437     end
439     def _nt_Second
440       start_index = index
441       if node_cache[:Second].has_key?(index)
442         cached = node_cache[:Second][index]
443         if cached
444           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
445           @index = cached.interval.end
446         end
447         return cached
448       end
450       i0 = index
451       i1, s1 = index, []
452       if has_terminal?('\G[0]', true, index)
453         r2 = true
454         @index += 1
455       else
456         r2 = nil
457       end
458       s1 << r2
459       if r2
460         if has_terminal?('\G[0-9]', true, index)
461           r3 = true
462           @index += 1
463         else
464           r3 = nil
465         end
466         s1 << r3
467       end
468       if s1.last
469         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
470         r1.extend(Second0)
471       else
472         @index = i1
473         r1 = nil
474       end
475       if r1
476         r0 = r1
477       else
478         i4, s4 = index, []
479         if has_terminal?('\G[1-5]', true, index)
480           r5 = true
481           @index += 1
482         else
483           r5 = nil
484         end
485         s4 << r5
486         if r5
487           if has_terminal?('\G[0-9]', true, index)
488             r6 = true
489             @index += 1
490           else
491             r6 = nil
492           end
493           s4 << r6
494         end
495         if s4.last
496           r4 = instantiate_node(SyntaxNode,input, i4...index, s4)
497           r4.extend(Second1)
498         else
499           @index = i4
500           r4 = nil
501         end
502         if r4
503           r0 = r4
504         else
505           @index = i0
506           r0 = nil
507         end
508       end
510       node_cache[:Second][start_index] = r0
512       r0
513     end
515     module DateTime0
516       def Year
517         elements[0]
518       end
520       def Month
521         elements[2]
522       end
524       def Day
525         elements[4]
526       end
528       def Hour
529         elements[6]
530       end
532       def Minute
533         elements[8]
534       end
536       def Second
537         elements[10]
538       end
539     end
541     def _nt_DateTime
542       start_index = index
543       if node_cache[:DateTime].has_key?(index)
544         cached = node_cache[:DateTime][index]
545         if cached
546           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
547           @index = cached.interval.end
548         end
549         return cached
550       end
552       i0, s0 = index, []
553       r1 = _nt_Year
554       s0 << r1
555       if r1
556         if has_terminal?("-", false, index)
557           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
558           @index += 1
559         else
560           terminal_parse_failure("-")
561           r2 = nil
562         end
563         s0 << r2
564         if r2
565           r3 = _nt_Month
566           s0 << r3
567           if r3
568             if has_terminal?("-", false, index)
569               r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
570               @index += 1
571             else
572               terminal_parse_failure("-")
573               r4 = nil
574             end
575             s0 << r4
576             if r4
577               r5 = _nt_Day
578               s0 << r5
579               if r5
580                 if has_terminal?(" ", false, index)
581                   r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
582                   @index += 1
583                 else
584                   terminal_parse_failure(" ")
585                   r6 = nil
586                 end
587                 s0 << r6
588                 if r6
589                   r7 = _nt_Hour
590                   s0 << r7
591                   if r7
592                     if has_terminal?(":", false, index)
593                       r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
594                       @index += 1
595                     else
596                       terminal_parse_failure(":")
597                       r8 = nil
598                     end
599                     s0 << r8
600                     if r8
601                       r9 = _nt_Minute
602                       s0 << r9
603                       if r9
604                         if has_terminal?(":", false, index)
605                           r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
606                           @index += 1
607                         else
608                           terminal_parse_failure(":")
609                           r10 = nil
610                         end
611                         s0 << r10
612                         if r10
613                           r11 = _nt_Second
614                           s0 << r11
615                         end
616                       end
617                     end
618                   end
619                 end
620               end
621             end
622           end
623         end
624       end
625       if s0.last
626         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
627         r0.extend(DateTime0)
628       else
629         @index = i0
630         r0 = nil
631       end
633       node_cache[:DateTime][start_index] = r0
635       r0
636     end
638     def _nt_Base64Char
639       start_index = index
640       if node_cache[:Base64Char].has_key?(index)
641         cached = node_cache[:Base64Char][index]
642         if cached
643           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
644           @index = cached.interval.end
645         end
646         return cached
647       end
649       if has_terminal?('\G[A-Za-z0-9+/]', true, index)
650         r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
651         @index += 1
652       else
653         r0 = nil
654       end
656       node_cache[:Base64Char][start_index] = r0
658       r0
659     end
661     def _nt_Base64Hash
662       start_index = index
663       if node_cache[:Base64Hash].has_key?(index)
664         cached = node_cache[:Base64Hash][index]
665         if cached
666           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
667           @index = cached.interval.end
668         end
669         return cached
670       end
672       s0, i0 = [], index
673       loop do
674         r1 = _nt_Base64Char
675         if r1
676           s0 << r1
677         else
678           break
679         end
680       end
681       if s0.empty?
682         @index = i0
683         r0 = nil
684       else
685         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
686       end
688       node_cache[:Base64Hash][start_index] = r0
690       r0
691     end
693     module IPv4Byte0
694     end
696     module IPv4Byte1
697     end
699     module IPv4Byte2
700     end
702     module IPv4Byte3
703     end
705     def _nt_IPv4Byte
706       start_index = index
707       if node_cache[:IPv4Byte].has_key?(index)
708         cached = node_cache[:IPv4Byte][index]
709         if cached
710           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
711           @index = cached.interval.end
712         end
713         return cached
714       end
716       i0 = index
717       i1, s1 = index, []
718       if has_terminal?('\G[2]', true, index)
719         r2 = true
720         @index += 1
721       else
722         r2 = nil
723       end
724       s1 << r2
725       if r2
726         if has_terminal?('\G[5]', true, index)
727           r3 = true
728           @index += 1
729         else
730           r3 = nil
731         end
732         s1 << r3
733         if r3
734           if has_terminal?('\G[0-5]', true, index)
735             r4 = true
736             @index += 1
737           else
738             r4 = nil
739           end
740           s1 << r4
741         end
742       end
743       if s1.last
744         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
745         r1.extend(IPv4Byte0)
746       else
747         @index = i1
748         r1 = nil
749       end
750       if r1
751         r0 = r1
752       else
753         i5, s5 = index, []
754         if has_terminal?('\G[2]', true, index)
755           r6 = true
756           @index += 1
757         else
758           r6 = nil
759         end
760         s5 << r6
761         if r6
762           if has_terminal?('\G[0-4]', true, index)
763             r7 = true
764             @index += 1
765           else
766             r7 = nil
767           end
768           s5 << r7
769           if r7
770             if has_terminal?('\G[0-9]', true, index)
771               r8 = true
772               @index += 1
773             else
774               r8 = nil
775             end
776             s5 << r8
777           end
778         end
779         if s5.last
780           r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
781           r5.extend(IPv4Byte1)
782         else
783           @index = i5
784           r5 = nil
785         end
786         if r5
787           r0 = r5
788         else
789           i9, s9 = index, []
790           if has_terminal?('\G[1]', true, index)
791             r10 = true
792             @index += 1
793           else
794             r10 = nil
795           end
796           s9 << r10
797           if r10
798             if has_terminal?('\G[0-9]', true, index)
799               r11 = true
800               @index += 1
801             else
802               r11 = nil
803             end
804             s9 << r11
805             if r11
806               if has_terminal?('\G[0-9]', true, index)
807                 r12 = true
808                 @index += 1
809               else
810                 r12 = nil
811               end
812               s9 << r12
813             end
814           end
815           if s9.last
816             r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
817             r9.extend(IPv4Byte2)
818           else
819             @index = i9
820             r9 = nil
821           end
822           if r9
823             r0 = r9
824           else
825             i13, s13 = index, []
826             if has_terminal?('\G[1-9]', true, index)
827               r14 = true
828               @index += 1
829             else
830               r14 = nil
831             end
832             s13 << r14
833             if r14
834               if has_terminal?('\G[0-9]', true, index)
835                 r15 = true
836                 @index += 1
837               else
838                 r15 = nil
839               end
840               s13 << r15
841             end
842             if s13.last
843               r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
844               r13.extend(IPv4Byte3)
845             else
846               @index = i13
847               r13 = nil
848             end
849             if r13
850               r0 = r13
851             else
852               if has_terminal?('\G[0-9]', true, index)
853                 r16 = true
854                 @index += 1
855               else
856                 r16 = nil
857               end
858               if r16
859                 r0 = r16
860               else
861                 @index = i0
862                 r0 = nil
863               end
864             end
865           end
866         end
867       end
869       node_cache[:IPv4Byte][start_index] = r0
871       r0
872     end
874     module IPv4Address0
875       def IPv4Byte1
876         elements[0]
877       end
879       def IPv4Byte2
880         elements[2]
881       end
883       def IPv4Byte3
884         elements[4]
885       end
887       def IPv4Byte4
888         elements[6]
889       end
890     end
892     def _nt_IPv4Address
893       start_index = index
894       if node_cache[:IPv4Address].has_key?(index)
895         cached = node_cache[:IPv4Address][index]
896         if cached
897           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
898           @index = cached.interval.end
899         end
900         return cached
901       end
903       i0, s0 = index, []
904       r1 = _nt_IPv4Byte
905       s0 << r1
906       if r1
907         if has_terminal?(".", false, index)
908           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
909           @index += 1
910         else
911           terminal_parse_failure(".")
912           r2 = nil
913         end
914         s0 << r2
915         if r2
916           r3 = _nt_IPv4Byte
917           s0 << r3
918           if r3
919             if has_terminal?(".", false, index)
920               r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
921               @index += 1
922             else
923               terminal_parse_failure(".")
924               r4 = nil
925             end
926             s0 << r4
927             if r4
928               r5 = _nt_IPv4Byte
929               s0 << r5
930               if r5
931                 if has_terminal?(".", false, index)
932                   r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
933                   @index += 1
934                 else
935                   terminal_parse_failure(".")
936                   r6 = nil
937                 end
938                 s0 << r6
939                 if r6
940                   r7 = _nt_IPv4Byte
941                   s0 << r7
942                 end
943               end
944             end
945           end
946         end
947       end
948       if s0.last
949         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
950         r0.extend(IPv4Address0)
951       else
952         @index = i0
953         r0 = nil
954       end
956       node_cache[:IPv4Address][start_index] = r0
958       r0
959     end
961     def _nt_IP
962       start_index = index
963       if node_cache[:IP].has_key?(index)
964         cached = node_cache[:IP][index]
965         if cached
966           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
967           @index = cached.interval.end
968         end
969         return cached
970       end
972       r0 = _nt_IPv4Address
974       node_cache[:IP][start_index] = r0
976       r0
977     end
979     def _nt_Hostname
980       start_index = index
981       if node_cache[:Hostname].has_key?(index)
982         cached = node_cache[:Hostname][index]
983         if cached
984           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
985           @index = cached.interval.end
986         end
987         return cached
988       end
990       s0, i0 = [], index
991       loop do
992         if has_terminal?('\G[a-zA-Z\\.\\-]', true, index)
993           r1 = true
994           @index += 1
995         else
996           r1 = nil
997         end
998         if r1
999           s0 << r1
1000         else
1001           break
1002         end
1003       end
1004       if s0.empty?
1005         @index = i0
1006         r0 = nil
1007       else
1008         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1009       end
1011       node_cache[:Hostname][start_index] = r0
1013       r0
1014     end
1016     def _nt_Address
1017       start_index = index
1018       if node_cache[:Address].has_key?(index)
1019         cached = node_cache[:Address][index]
1020         if cached
1021           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1022           @index = cached.interval.end
1023         end
1024         return cached
1025       end
1027       i0 = index
1028       r1 = _nt_Hostname
1029       if r1
1030         r0 = r1
1031       else
1032         r2 = _nt_IP
1033         if r2
1034           r0 = r2
1035         else
1036           @index = i0
1037           r0 = nil
1038         end
1039       end
1041       node_cache[:Address][start_index] = r0
1043       r0
1044     end
1046     def _nt_Port
1047       start_index = index
1048       if node_cache[:Port].has_key?(index)
1049         cached = node_cache[:Port][index]
1050         if cached
1051           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1052           @index = cached.interval.end
1053         end
1054         return cached
1055       end
1057       s0, i0 = [], index
1058       loop do
1059         if has_terminal?('\G[0-9]', true, index)
1060           r1 = true
1061           @index += 1
1062         else
1063           r1 = nil
1064         end
1065         if r1
1066           s0 << r1
1067         else
1068           break
1069         end
1070       end
1071       if s0.empty?
1072         @index = i0
1073         r0 = nil
1074       else
1075         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1076       end
1078       node_cache[:Port][start_index] = r0
1080       r0
1081     end
1083     def _nt_ORPort
1084       start_index = index
1085       if node_cache[:ORPort].has_key?(index)
1086         cached = node_cache[:ORPort][index]
1087         if cached
1088           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1089           @index = cached.interval.end
1090         end
1091         return cached
1092       end
1094       r0 = _nt_Port
1096       node_cache[:ORPort][start_index] = r0
1098       r0
1099     end
1101     def _nt_DirPort
1102       start_index = index
1103       if node_cache[:DirPort].has_key?(index)
1104         cached = node_cache[:DirPort][index]
1105         if cached
1106           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1107           @index = cached.interval.end
1108         end
1109         return cached
1110       end
1112       r0 = _nt_Port
1114       node_cache[:DirPort][start_index] = r0
1116       r0
1117     end
1119     def _nt_SP
1120       start_index = index
1121       if node_cache[:SP].has_key?(index)
1122         cached = node_cache[:SP][index]
1123         if cached
1124           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1125           @index = cached.interval.end
1126         end
1127         return cached
1128       end
1130       if has_terminal?(" ", false, index)
1131         r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
1132         @index += 1
1133       else
1134         terminal_parse_failure(" ")
1135         r0 = nil
1136       end
1138       node_cache[:SP][start_index] = r0
1140       r0
1141     end
1143     def _nt_NL
1144       start_index = index
1145       if node_cache[:NL].has_key?(index)
1146         cached = node_cache[:NL][index]
1147         if cached
1148           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1149           @index = cached.interval.end
1150         end
1151         return cached
1152       end
1154       if has_terminal?("\r\n", false, index)
1155         r0 = instantiate_node(SyntaxNode,input, index...(index + 2))
1156         @index += 2
1157       else
1158         terminal_parse_failure("\r\n")
1159         r0 = nil
1160       end
1162       node_cache[:NL][start_index] = r0
1164       r0
1165     end
1167     def _nt_ALPHA
1168       start_index = index
1169       if node_cache[:ALPHA].has_key?(index)
1170         cached = node_cache[:ALPHA][index]
1171         if cached
1172           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1173           @index = cached.interval.end
1174         end
1175         return cached
1176       end
1178       i0 = index
1179       if has_terminal?('\G[A-Z]', true, index)
1180         r1 = true
1181         @index += 1
1182       else
1183         r1 = nil
1184       end
1185       if r1
1186         r0 = r1
1187       else
1188         if has_terminal?('\G[a-z]', true, index)
1189           r2 = true
1190           @index += 1
1191         else
1192           r2 = nil
1193         end
1194         if r2
1195           r0 = r2
1196         else
1197           @index = i0
1198           r0 = nil
1199         end
1200       end
1202       node_cache[:ALPHA][start_index] = r0
1204       r0
1205     end
1207     def _nt_DIGIT
1208       start_index = index
1209       if node_cache[:DIGIT].has_key?(index)
1210         cached = node_cache[:DIGIT][index]
1211         if cached
1212           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1213           @index = cached.interval.end
1214         end
1215         return cached
1216       end
1218       if has_terminal?('\G[0-9]', true, index)
1219         r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
1220         @index += 1
1221       else
1222         r0 = nil
1223       end
1225       node_cache[:DIGIT][start_index] = r0
1227       r0
1228     end
1230     def _nt_HEXDIG
1231       start_index = index
1232       if node_cache[:HEXDIG].has_key?(index)
1233         cached = node_cache[:HEXDIG][index]
1234         if cached
1235           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1236           @index = cached.interval.end
1237         end
1238         return cached
1239       end
1241       i0 = index
1242       r1 = _nt_DIGIT
1243       if r1
1244         r0 = r1
1245       else
1246         if has_terminal?("A", false, index)
1247           r2 = instantiate_node(SyntaxNode,input, index...(index + 1))
1248           @index += 1
1249         else
1250           terminal_parse_failure("A")
1251           r2 = nil
1252         end
1253         if r2
1254           r0 = r2
1255         else
1256           if has_terminal?("B", false, index)
1257             r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1258             @index += 1
1259           else
1260             terminal_parse_failure("B")
1261             r3 = nil
1262           end
1263           if r3
1264             r0 = r3
1265           else
1266             if has_terminal?("C", false, index)
1267               r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1268               @index += 1
1269             else
1270               terminal_parse_failure("C")
1271               r4 = nil
1272             end
1273             if r4
1274               r0 = r4
1275             else
1276               if has_terminal?("D", false, index)
1277                 r5 = instantiate_node(SyntaxNode,input, index...(index + 1))
1278                 @index += 1
1279               else
1280                 terminal_parse_failure("D")
1281                 r5 = nil
1282               end
1283               if r5
1284                 r0 = r5
1285               else
1286                 if has_terminal?("E", false, index)
1287                   r6 = instantiate_node(SyntaxNode,input, index...(index + 1))
1288                   @index += 1
1289                 else
1290                   terminal_parse_failure("E")
1291                   r6 = nil
1292                 end
1293                 if r6
1294                   r0 = r6
1295                 else
1296                   if has_terminal?("F", false, index)
1297                     r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
1298                     @index += 1
1299                   else
1300                     terminal_parse_failure("F")
1301                     r7 = nil
1302                   end
1303                   if r7
1304                     r0 = r7
1305                   else
1306                     @index = i0
1307                     r0 = nil
1308                   end
1309                 end
1310               end
1311             end
1312           end
1313         end
1314       end
1316       node_cache[:HEXDIG][start_index] = r0
1318       r0
1319     end
1321     def _nt_IDChar
1322       start_index = index
1323       if node_cache[:IDChar].has_key?(index)
1324         cached = node_cache[:IDChar][index]
1325         if cached
1326           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1327           @index = cached.interval.end
1328         end
1329         return cached
1330       end
1332       i0 = index
1333       r1 = _nt_ALPHA
1334       if r1
1335         r0 = r1
1336       else
1337         r2 = _nt_DIGIT
1338         if r2
1339           r0 = r2
1340         else
1341           @index = i0
1342           r0 = nil
1343         end
1344       end
1346       node_cache[:IDChar][start_index] = r0
1348       r0
1349     end
1351     def _nt_NicknameChar
1352       start_index = index
1353       if node_cache[:NicknameChar].has_key?(index)
1354         cached = node_cache[:NicknameChar][index]
1355         if cached
1356           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1357           @index = cached.interval.end
1358         end
1359         return cached
1360       end
1362       i0 = index
1363       if has_terminal?('\G[A-Z]', true, index)
1364         r1 = true
1365         @index += 1
1366       else
1367         r1 = nil
1368       end
1369       if r1
1370         r0 = r1
1371       else
1372         if has_terminal?('\G[a-z]', true, index)
1373           r2 = true
1374           @index += 1
1375         else
1376           r2 = nil
1377         end
1378         if r2
1379           r0 = r2
1380         else
1381           if has_terminal?('\G[0-9]', true, index)
1382             r3 = true
1383             @index += 1
1384           else
1385             r3 = nil
1386           end
1387           if r3
1388             r0 = r3
1389           else
1390             @index = i0
1391             r0 = nil
1392           end
1393         end
1394       end
1396       node_cache[:NicknameChar][start_index] = r0
1398       r0
1399     end
1401     def _nt_Nickname
1402       start_index = index
1403       if node_cache[:Nickname].has_key?(index)
1404         cached = node_cache[:Nickname][index]
1405         if cached
1406           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1407           @index = cached.interval.end
1408         end
1409         return cached
1410       end
1412       s0, i0 = [], index
1413       loop do
1414         r1 = _nt_NicknameChar
1415         if r1
1416           s0 << r1
1417         else
1418           break
1419         end
1420         if s0.size == 19
1421           break
1422         end
1423       end
1424       if s0.size < 1
1425         @index = i0
1426         r0 = nil
1427       else
1428         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1429       end
1431       node_cache[:Nickname][start_index] = r0
1433       r0
1434     end
1436     module Fingerprint0
1437     end
1439     def _nt_Fingerprint
1440       start_index = index
1441       if node_cache[:Fingerprint].has_key?(index)
1442         cached = node_cache[:Fingerprint][index]
1443         if cached
1444           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1445           @index = cached.interval.end
1446         end
1447         return cached
1448       end
1450       i0, s0 = index, []
1451       if has_terminal?("$", false, index)
1452         r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
1453         @index += 1
1454       else
1455         terminal_parse_failure("$")
1456         r1 = nil
1457       end
1458       s0 << r1
1459       if r1
1460         s2, i2 = [], index
1461         loop do
1462           r3 = _nt_HEXDIG
1463           if r3
1464             s2 << r3
1465           else
1466             break
1467           end
1468           if s2.size == 40
1469             break
1470           end
1471         end
1472         if s2.size < 40
1473           @index = i2
1474           r2 = nil
1475         else
1476           r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1477         end
1478         s0 << r2
1479       end
1480       if s0.last
1481         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1482         r0.extend(Fingerprint0)
1483       else
1484         @index = i0
1485         r0 = nil
1486       end
1488       node_cache[:Fingerprint][start_index] = r0
1490       r0
1491     end
1493     def _nt_ServerID
1494       start_index = index
1495       if node_cache[:ServerID].has_key?(index)
1496         cached = node_cache[:ServerID][index]
1497         if cached
1498           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1499           @index = cached.interval.end
1500         end
1501         return cached
1502       end
1504       i0 = index
1505       r1 = _nt_Nickname
1506       if r1
1507         r0 = r1
1508       else
1509         r2 = _nt_Fingerprint
1510         if r2
1511           r0 = r2
1512         else
1513           @index = i0
1514           r0 = nil
1515         end
1516       end
1518       node_cache[:ServerID][start_index] = r0
1520       r0
1521     end
1523     module LongName0
1524       def f
1525         elements[0]
1526       end
1528       def n
1529         elements[2]
1530       end
1531     end
1533     def _nt_LongName
1534       start_index = index
1535       if node_cache[:LongName].has_key?(index)
1536         cached = node_cache[:LongName][index]
1537         if cached
1538           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1539           @index = cached.interval.end
1540         end
1541         return cached
1542       end
1544       i0 = index
1545       i1, s1 = index, []
1546       r2 = _nt_Fingerprint
1547       s1 << r2
1548       if r2
1549         if has_terminal?("=", false, index)
1550           r3 = instantiate_node(SyntaxNode,input, index...(index + 1))
1551           @index += 1
1552         else
1553           terminal_parse_failure("=")
1554           r3 = nil
1555         end
1556         s1 << r3
1557         if r3
1558           r4 = _nt_Nickname
1559           s1 << r4
1560         end
1561       end
1562       if s1.last
1563         r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
1564         r1.extend(LongName0)
1565       else
1566         @index = i1
1567         r1 = nil
1568       end
1569       if r1
1570         r0 = r1
1571       else
1572         r5 = _nt_Fingerprint
1573         if r5
1574           r0 = r5
1575         else
1576           @index = i0
1577           r0 = nil
1578         end
1579       end
1581       node_cache[:LongName][start_index] = r0
1583       r0
1584     end
1586     def _nt_ServerSpec
1587       start_index = index
1588       if node_cache[:ServerSpec].has_key?(index)
1589         cached = node_cache[:ServerSpec][index]
1590         if cached
1591           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1592           @index = cached.interval.end
1593         end
1594         return cached
1595       end
1597       i0 = index
1598       r1 = _nt_LongName
1599       if r1
1600         r0 = r1
1601       else
1602         r2 = _nt_Nickname
1603         if r2
1604           r0 = r2
1605         else
1606           @index = i0
1607           r0 = nil
1608         end
1609       end
1611       node_cache[:ServerSpec][start_index] = r0
1613       r0
1614     end
1616     def _nt_StreamID
1617       start_index = index
1618       if node_cache[:StreamID].has_key?(index)
1619         cached = node_cache[:StreamID][index]
1620         if cached
1621           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1622           @index = cached.interval.end
1623         end
1624         return cached
1625       end
1627       s0, i0 = [], index
1628       loop do
1629         r1 = _nt_IDChar
1630         if r1
1631           s0 << r1
1632         else
1633           break
1634         end
1635         if s0.size == 16
1636           break
1637         end
1638       end
1639       if s0.size < 1
1640         @index = i0
1641         r0 = nil
1642       else
1643         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1644       end
1646       node_cache[:StreamID][start_index] = r0
1648       r0
1649     end
1651     def _nt_CircuitID
1652       start_index = index
1653       if node_cache[:CircuitID].has_key?(index)
1654         cached = node_cache[:CircuitID][index]
1655         if cached
1656           cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1657           @index = cached.interval.end
1658         end
1659         return cached
1660       end
1662       s0, i0 = [], index
1663       loop do
1664         r1 = _nt_IDChar
1665         if r1
1666           s0 << r1
1667         else
1668           break
1669         end
1670         if s0.size == 16
1671           break
1672         end
1673       end
1674       if s0.size < 1
1675         @index = i0
1676         r0 = nil
1677       else
1678         r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
1679       end
1681       node_cache[:CircuitID][start_index] = r0
1683       r0
1684     end
1686   end
1688   class PrimitivesParser < Treetop::Runtime::CompiledParser
1689     include Primitives
1690   end