1## -*- tcl -*-
2##
3## NX-based Tcl/PARAM implementation of the parsing
4## expression grammar
5##
6##	TEMPLATE
7##
8## Generated from file	TEST
9##            for user  unknown
10##
11# # ## ### ##### ######## ############# #####################
12## Requirements
13
14package require Tcl 8.5
15package require nx
16package require pt::rde::nx ; # NX-based implementation of the
17			      # PARAM virtual machine
18			      # underlying the Tcl/PARAM code
19			      # used below.
20
21# # ## ### ##### ######## ############# #####################
22##
23
24nx::Class create PARSER -superclasses pt::rde::nx {
25    # # ## ### ##### ######## #############
26    ## Public API
27
28    :public method parse {channel} {
29	:reset $channel
30	:MAIN ; # Entrypoint for the generated code.
31	return [:complete]
32    }
33
34    :public method parset {text} {
35	:reset {}
36	:data $text
37	:MAIN ; # Entrypoint for the generated code.
38	return [:complete]
39    }
40
41    # # ## ### ###### ######## #############
42    ## BEGIN of GENERATED CODE. DO NOT EDIT.
43
44    #
45    # Grammar Start Expression
46    #
47
48    :method MAIN {} {
49        : sym_Grammar
50        return
51    }
52
53    #
54    # leaf Symbol 'ALNUM'
55    #
56
57    :method sym_ALNUM {} {
58        # x
59        #     "<alnum>"
60        #     (WHITESPACE)
61
62        : si:void_symbol_start ALNUM
63        : sequence_4
64        : si:void_leaf_symbol_end ALNUM
65        return
66    }
67
68    :method sequence_4 {} {
69        # x
70        #     "<alnum>"
71        #     (WHITESPACE)
72
73        : si:void_state_push
74        : si:next_str <alnum>
75        : si:voidvoid_part
76        : sym_WHITESPACE
77        : si:void_state_merge
78        return
79    }
80
81    #
82    # leaf Symbol 'ALPHA'
83    #
84
85    :method sym_ALPHA {} {
86        # x
87        #     "<alpha>"
88        #     (WHITESPACE)
89
90        : si:void_symbol_start ALPHA
91        : sequence_9
92        : si:void_leaf_symbol_end ALPHA
93        return
94    }
95
96    :method sequence_9 {} {
97        # x
98        #     "<alpha>"
99        #     (WHITESPACE)
100
101        : si:void_state_push
102        : si:next_str <alpha>
103        : si:voidvoid_part
104        : sym_WHITESPACE
105        : si:void_state_merge
106        return
107    }
108
109    #
110    # leaf Symbol 'AND'
111    #
112
113    :method sym_AND {} {
114        # x
115        #     '&'
116        #     (WHITESPACE)
117
118        : si:void_symbol_start AND
119        : sequence_14
120        : si:void_leaf_symbol_end AND
121        return
122    }
123
124    :method sequence_14 {} {
125        # x
126        #     '&'
127        #     (WHITESPACE)
128
129        : si:void_state_push
130        : si:next_char &
131        : si:voidvoid_part
132        : sym_WHITESPACE
133        : si:void_state_merge
134        return
135    }
136
137    #
138    # void Symbol 'APOSTROPH'
139    #
140
141    :method sym_APOSTROPH {} {
142        # '''
143
144        : si:void_void_symbol_start APOSTROPH
145        : si:next_char '
146        : si:void_clear_symbol_end APOSTROPH
147        return
148    }
149
150    #
151    # leaf Symbol 'ASCII'
152    #
153
154    :method sym_ASCII {} {
155        # x
156        #     "<ascii>"
157        #     (WHITESPACE)
158
159        : si:void_symbol_start ASCII
160        : sequence_21
161        : si:void_leaf_symbol_end ASCII
162        return
163    }
164
165    :method sequence_21 {} {
166        # x
167        #     "<ascii>"
168        #     (WHITESPACE)
169
170        : si:void_state_push
171        : si:next_str <ascii>
172        : si:voidvoid_part
173        : sym_WHITESPACE
174        : si:void_state_merge
175        return
176    }
177
178    #
179    # value Symbol 'Attribute'
180    #
181
182    :method sym_Attribute {} {
183        # x
184        #     /
185        #         (VOID)
186        #         (LEAF)
187        #     (COLON)
188
189        : si:value_symbol_start Attribute
190        : sequence_29
191        : si:reduce_symbol_end Attribute
192        return
193    }
194
195    :method sequence_29 {} {
196        # x
197        #     /
198        #         (VOID)
199        #         (LEAF)
200        #     (COLON)
201
202        : si:value_state_push
203        : choice_26
204        : si:valuevalue_part
205        : sym_COLON
206        : si:value_state_merge
207        return
208    }
209
210    :method choice_26 {} {
211        # /
212        #     (VOID)
213        #     (LEAF)
214
215        : si:value_state_push
216        : sym_VOID
217        : si:valuevalue_branch
218        : sym_LEAF
219        : si:value_state_merge
220        return
221    }
222
223    #
224    # value Symbol 'Char'
225    #
226
227    :method sym_Char {} {
228        # /
229        #     (CharSpecial)
230        #     (CharOctalFull)
231        #     (CharOctalPart)
232        #     (CharUnicode)
233        #     (CharUnescaped)
234
235        : si:value_symbol_start Char
236        : choice_37
237        : si:reduce_symbol_end Char
238        return
239    }
240
241    :method choice_37 {} {
242        # /
243        #     (CharSpecial)
244        #     (CharOctalFull)
245        #     (CharOctalPart)
246        #     (CharUnicode)
247        #     (CharUnescaped)
248
249        : si:value_state_push
250        : sym_CharSpecial
251        : si:valuevalue_branch
252        : sym_CharOctalFull
253        : si:valuevalue_branch
254        : sym_CharOctalPart
255        : si:valuevalue_branch
256        : sym_CharUnicode
257        : si:valuevalue_branch
258        : sym_CharUnescaped
259        : si:value_state_merge
260        return
261    }
262
263    #
264    # leaf Symbol 'CharOctalFull'
265    #
266
267    :method sym_CharOctalFull {} {
268        # x
269        #     '\'
270        #     range (0 .. 2)
271        #     range (0 .. 7)
272        #     range (0 .. 7)
273
274        : si:void_symbol_start CharOctalFull
275        : sequence_44
276        : si:void_leaf_symbol_end CharOctalFull
277        return
278    }
279
280    :method sequence_44 {} {
281        # x
282        #     '\'
283        #     range (0 .. 2)
284        #     range (0 .. 7)
285        #     range (0 .. 7)
286
287        : si:void_state_push
288        : si:next_char \134
289        : si:voidvoid_part
290        : si:next_range 0 2
291        : si:voidvoid_part
292        : si:next_range 0 7
293        : si:voidvoid_part
294        : si:next_range 0 7
295        : si:void_state_merge
296        return
297    }
298
299    #
300    # leaf Symbol 'CharOctalPart'
301    #
302
303    :method sym_CharOctalPart {} {
304        # x
305        #     '\'
306        #     range (0 .. 7)
307        #     ?
308        #         range (0 .. 7)
309
310        : si:void_symbol_start CharOctalPart
311        : sequence_52
312        : si:void_leaf_symbol_end CharOctalPart
313        return
314    }
315
316    :method sequence_52 {} {
317        # x
318        #     '\'
319        #     range (0 .. 7)
320        #     ?
321        #         range (0 .. 7)
322
323        : si:void_state_push
324        : si:next_char \134
325        : si:voidvoid_part
326        : si:next_range 0 7
327        : si:voidvoid_part
328        : optional_50
329        : si:void_state_merge
330        return
331    }
332
333    :method optional_50 {} {
334        # ?
335        #     range (0 .. 7)
336
337        : si:void2_state_push
338        : si:next_range 0 7
339        : si:void_state_merge_ok
340        return
341    }
342
343    #
344    # leaf Symbol 'CharSpecial'
345    #
346
347    :method sym_CharSpecial {} {
348        # x
349        #     '\'
350        #     [nrt'\"[]\]
351
352        : si:void_symbol_start CharSpecial
353        : sequence_57
354        : si:void_leaf_symbol_end CharSpecial
355        return
356    }
357
358    :method sequence_57 {} {
359        # x
360        #     '\'
361        #     [nrt'\"[]\]
362
363        : si:void_state_push
364        : si:next_char \134
365        : si:voidvoid_part
366        : si:next_class nrt'\42\133\135\134
367        : si:void_state_merge
368        return
369    }
370
371    #
372    # leaf Symbol 'CharUnescaped'
373    #
374
375    :method sym_CharUnescaped {} {
376        # x
377        #     !
378        #         '\'
379        #     <dot>
380
381        : si:void_symbol_start CharUnescaped
382        : sequence_64
383        : si:void_leaf_symbol_end CharUnescaped
384        return
385    }
386
387    :method sequence_64 {} {
388        # x
389        #     !
390        #         '\'
391        #     <dot>
392
393        : si:void_state_push
394        : notahead_61
395        : si:voidvoid_part
396        : i_input_next dot
397        : si:void_state_merge
398        return
399    }
400
401    :method notahead_61 {} {
402        # !
403        #     '\'
404
405        : i_loc_push
406        : si:next_char \134
407        : si:void_notahead_exit
408        return
409    }
410
411    #
412    # leaf Symbol 'CharUnicode'
413    #
414
415    :method sym_CharUnicode {} {
416        # x
417        #     "\u"
418        #     <xdigit>
419        #     ?
420        #         x
421        #             <xdigit>
422        #             ?
423        #                 x
424        #                     <xdigit>
425        #                     ?
426        #                         <xdigit>
427
428        : si:void_symbol_start CharUnicode
429        : sequence_82
430        : si:void_leaf_symbol_end CharUnicode
431        return
432    }
433
434    :method sequence_82 {} {
435        # x
436        #     "\u"
437        #     <xdigit>
438        #     ?
439        #         x
440        #             <xdigit>
441        #             ?
442        #                 x
443        #                     <xdigit>
444        #                     ?
445        #                         <xdigit>
446
447        : si:void_state_push
448        : si:next_str \134u
449        : si:voidvoid_part
450        : si:next_xdigit
451        : si:voidvoid_part
452        : optional_80
453        : si:void_state_merge
454        return
455    }
456
457    :method optional_80 {} {
458        # ?
459        #     x
460        #         <xdigit>
461        #         ?
462        #             x
463        #                 <xdigit>
464        #                 ?
465        #                     <xdigit>
466
467        : si:void2_state_push
468        : sequence_78
469        : si:void_state_merge_ok
470        return
471    }
472
473    :method sequence_78 {} {
474        # x
475        #     <xdigit>
476        #     ?
477        #         x
478        #             <xdigit>
479        #             ?
480        #                 <xdigit>
481
482        : si:void_state_push
483        : si:next_xdigit
484        : si:voidvoid_part
485        : optional_76
486        : si:void_state_merge
487        return
488    }
489
490    :method optional_76 {} {
491        # ?
492        #     x
493        #         <xdigit>
494        #         ?
495        #             <xdigit>
496
497        : si:void2_state_push
498        : sequence_74
499        : si:void_state_merge_ok
500        return
501    }
502
503    :method sequence_74 {} {
504        # x
505        #     <xdigit>
506        #     ?
507        #         <xdigit>
508
509        : si:void_state_push
510        : si:next_xdigit
511        : si:voidvoid_part
512        : optional_72
513        : si:void_state_merge
514        return
515    }
516
517    :method optional_72 {} {
518        # ?
519        #     <xdigit>
520
521        : si:void2_state_push
522        : si:next_xdigit
523        : si:void_state_merge_ok
524        return
525    }
526
527    #
528    # value Symbol 'Class'
529    #
530
531    :method sym_Class {} {
532        # x
533        #     (OPENB)
534        #     *
535        #         x
536        #             !
537        #                 (CLOSEB)
538        #             (Range)
539        #     (CLOSEB)
540        #     (WHITESPACE)
541
542        : si:value_symbol_start Class
543        : sequence_96
544        : si:reduce_symbol_end Class
545        return
546    }
547
548    :method sequence_96 {} {
549        # x
550        #     (OPENB)
551        #     *
552        #         x
553        #             !
554        #                 (CLOSEB)
555        #             (Range)
556        #     (CLOSEB)
557        #     (WHITESPACE)
558
559        : si:void_state_push
560        : sym_OPENB
561        : si:voidvalue_part
562        : kleene_92
563        : si:valuevalue_part
564        : sym_CLOSEB
565        : si:valuevalue_part
566        : sym_WHITESPACE
567        : si:value_state_merge
568        return
569    }
570
571    :method kleene_92 {} {
572        # *
573        #     x
574        #         !
575        #             (CLOSEB)
576        #         (Range)
577
578        while {1} {
579            : si:void2_state_push
580        : sequence_90
581            : si:kleene_close
582        }
583        return
584    }
585
586    :method sequence_90 {} {
587        # x
588        #     !
589        #         (CLOSEB)
590        #     (Range)
591
592        : si:void_state_push
593        : notahead_87
594        : si:voidvalue_part
595        : sym_Range
596        : si:value_state_merge
597        return
598    }
599
600    :method notahead_87 {} {
601        # !
602        #     (CLOSEB)
603
604        : i_loc_push
605        : sym_CLOSEB
606        : si:void_notahead_exit
607        return
608    }
609
610    #
611    # void Symbol 'CLOSE'
612    #
613
614    :method sym_CLOSE {} {
615        # x
616        #     '\)'
617        #     (WHITESPACE)
618
619        : si:void_void_symbol_start CLOSE
620        : sequence_101
621        : si:void_clear_symbol_end CLOSE
622        return
623    }
624
625    :method sequence_101 {} {
626        # x
627        #     '\)'
628        #     (WHITESPACE)
629
630        : si:void_state_push
631        : si:next_char \51
632        : si:voidvoid_part
633        : sym_WHITESPACE
634        : si:void_state_merge
635        return
636    }
637
638    #
639    # void Symbol 'CLOSEB'
640    #
641
642    :method sym_CLOSEB {} {
643        # ']'
644
645        : si:void_void_symbol_start CLOSEB
646        : si:next_char \135
647        : si:void_clear_symbol_end CLOSEB
648        return
649    }
650
651    #
652    # void Symbol 'COLON'
653    #
654
655    :method sym_COLON {} {
656        # x
657        #     ':'
658        #     (WHITESPACE)
659
660        : si:void_void_symbol_start COLON
661        : sequence_108
662        : si:void_clear_symbol_end COLON
663        return
664    }
665
666    :method sequence_108 {} {
667        # x
668        #     ':'
669        #     (WHITESPACE)
670
671        : si:void_state_push
672        : si:next_char :
673        : si:voidvoid_part
674        : sym_WHITESPACE
675        : si:void_state_merge
676        return
677    }
678
679    #
680    # void Symbol 'COMMENT'
681    #
682
683    :method sym_COMMENT {} {
684        # x
685        #     '#'
686        #     *
687        #         x
688        #             !
689        #                 (EOL)
690        #             <dot>
691        #     (EOL)
692
693        : si:void_void_symbol_start COMMENT
694        : sequence_121
695        : si:void_clear_symbol_end COMMENT
696        return
697    }
698
699    :method sequence_121 {} {
700        # x
701        #     '#'
702        #     *
703        #         x
704        #             !
705        #                 (EOL)
706        #             <dot>
707        #     (EOL)
708
709        : si:void_state_push
710        : si:next_char #
711        : si:voidvoid_part
712        : kleene_118
713        : si:voidvoid_part
714        : sym_EOL
715        : si:void_state_merge
716        return
717    }
718
719    :method kleene_118 {} {
720        # *
721        #     x
722        #         !
723        #             (EOL)
724        #         <dot>
725
726        while {1} {
727            : si:void2_state_push
728        : sequence_116
729            : si:kleene_close
730        }
731        return
732    }
733
734    :method sequence_116 {} {
735        # x
736        #     !
737        #         (EOL)
738        #     <dot>
739
740        : si:void_state_push
741        : notahead_113
742        : si:voidvoid_part
743        : i_input_next dot
744        : si:void_state_merge
745        return
746    }
747
748    :method notahead_113 {} {
749        # !
750        #     (EOL)
751
752        : i_loc_push
753        : sym_EOL
754        : si:void_notahead_exit
755        return
756    }
757
758    #
759    # leaf Symbol 'CONTROL'
760    #
761
762    :method sym_CONTROL {} {
763        # x
764        #     "<control>"
765        #     (WHITESPACE)
766
767        : si:void_symbol_start CONTROL
768        : sequence_126
769        : si:void_leaf_symbol_end CONTROL
770        return
771    }
772
773    :method sequence_126 {} {
774        # x
775        #     "<control>"
776        #     (WHITESPACE)
777
778        : si:void_state_push
779        : si:next_str <control>
780        : si:voidvoid_part
781        : sym_WHITESPACE
782        : si:void_state_merge
783        return
784    }
785
786    #
787    # void Symbol 'DAPOSTROPH'
788    #
789
790    :method sym_DAPOSTROPH {} {
791        # '\"'
792
793        : si:void_void_symbol_start DAPOSTROPH
794        : si:next_char \42
795        : si:void_clear_symbol_end DAPOSTROPH
796        return
797    }
798
799    #
800    # leaf Symbol 'DDIGIT'
801    #
802
803    :method sym_DDIGIT {} {
804        # x
805        #     "<ddigit>"
806        #     (WHITESPACE)
807
808        : si:void_symbol_start DDIGIT
809        : sequence_133
810        : si:void_leaf_symbol_end DDIGIT
811        return
812    }
813
814    :method sequence_133 {} {
815        # x
816        #     "<ddigit>"
817        #     (WHITESPACE)
818
819        : si:void_state_push
820        : si:next_str <ddigit>
821        : si:voidvoid_part
822        : sym_WHITESPACE
823        : si:void_state_merge
824        return
825    }
826
827    #
828    # value Symbol 'Definition'
829    #
830
831    :method sym_Definition {} {
832        # x
833        #     ?
834        #         (Attribute)
835        #     (Identifier)
836        #     (IS)
837        #     (Expression)
838        #     (SEMICOLON)
839
840        : si:value_symbol_start Definition
841        : sequence_143
842        : si:reduce_symbol_end Definition
843        return
844    }
845
846    :method sequence_143 {} {
847        # x
848        #     ?
849        #         (Attribute)
850        #     (Identifier)
851        #     (IS)
852        #     (Expression)
853        #     (SEMICOLON)
854
855        : si:value_state_push
856        : optional_137
857        : si:valuevalue_part
858        : sym_Identifier
859        : si:valuevalue_part
860        : sym_IS
861        : si:valuevalue_part
862        : sym_Expression
863        : si:valuevalue_part
864        : sym_SEMICOLON
865        : si:value_state_merge
866        return
867    }
868
869    :method optional_137 {} {
870        # ?
871        #     (Attribute)
872
873        : si:void2_state_push
874        : sym_Attribute
875        : si:void_state_merge_ok
876        return
877    }
878
879    #
880    # leaf Symbol 'DIGIT'
881    #
882
883    :method sym_DIGIT {} {
884        # x
885        #     "<digit>"
886        #     (WHITESPACE)
887
888        : si:void_symbol_start DIGIT
889        : sequence_148
890        : si:void_leaf_symbol_end DIGIT
891        return
892    }
893
894    :method sequence_148 {} {
895        # x
896        #     "<digit>"
897        #     (WHITESPACE)
898
899        : si:void_state_push
900        : si:next_str <digit>
901        : si:voidvoid_part
902        : sym_WHITESPACE
903        : si:void_state_merge
904        return
905    }
906
907    #
908    # leaf Symbol 'DOT'
909    #
910
911    :method sym_DOT {} {
912        # x
913        #     '.'
914        #     (WHITESPACE)
915
916        : si:void_symbol_start DOT
917        : sequence_153
918        : si:void_leaf_symbol_end DOT
919        return
920    }
921
922    :method sequence_153 {} {
923        # x
924        #     '.'
925        #     (WHITESPACE)
926
927        : si:void_state_push
928        : si:next_char .
929        : si:voidvoid_part
930        : sym_WHITESPACE
931        : si:void_state_merge
932        return
933    }
934
935    #
936    # void Symbol 'EOF'
937    #
938
939    :method sym_EOF {} {
940        # !
941        #     <dot>
942
943        : si:void_void_symbol_start EOF
944        : notahead_157
945        : si:void_clear_symbol_end EOF
946        return
947    }
948
949    :method notahead_157 {} {
950        # !
951        #     <dot>
952
953        : i_loc_push
954        : i_input_next dot
955        : si:void_notahead_exit
956        return
957    }
958
959    #
960    # void Symbol 'EOL'
961    #
962
963    :method sym_EOL {} {
964        # [\n\r]
965
966        : si:void_void_symbol_start EOL
967        : si:next_class \n\r
968        : si:void_clear_symbol_end EOL
969        return
970    }
971
972    #
973    # value Symbol 'Expression'
974    #
975
976    :method sym_Expression {} {
977        # x
978        #     (Sequence)
979        #     *
980        #         x
981        #             (SLASH)
982        #             (Sequence)
983
984        : si:value_symbol_start Expression
985        : sequence_169
986        : si:reduce_symbol_end Expression
987        return
988    }
989
990    :method sequence_169 {} {
991        # x
992        #     (Sequence)
993        #     *
994        #         x
995        #             (SLASH)
996        #             (Sequence)
997
998        : si:value_state_push
999        : sym_Sequence
1000        : si:valuevalue_part
1001        : kleene_167
1002        : si:value_state_merge
1003        return
1004    }
1005
1006    :method kleene_167 {} {
1007        # *
1008        #     x
1009        #         (SLASH)
1010        #         (Sequence)
1011
1012        while {1} {
1013            : si:void2_state_push
1014        : sequence_165
1015            : si:kleene_close
1016        }
1017        return
1018    }
1019
1020    :method sequence_165 {} {
1021        # x
1022        #     (SLASH)
1023        #     (Sequence)
1024
1025        : si:void_state_push
1026        : sym_SLASH
1027        : si:voidvalue_part
1028        : sym_Sequence
1029        : si:value_state_merge
1030        return
1031    }
1032
1033    #
1034    # void Symbol 'Final'
1035    #
1036
1037    :method sym_Final {} {
1038        # x
1039        #     "END"
1040        #     (WHITESPACE)
1041        #     (SEMICOLON)
1042        #     (WHITESPACE)
1043
1044        : si:void_void_symbol_start Final
1045        : sequence_176
1046        : si:void_clear_symbol_end Final
1047        return
1048    }
1049
1050    :method sequence_176 {} {
1051        # x
1052        #     "END"
1053        #     (WHITESPACE)
1054        #     (SEMICOLON)
1055        #     (WHITESPACE)
1056
1057        : si:void_state_push
1058        : si:next_str END
1059        : si:voidvoid_part
1060        : sym_WHITESPACE
1061        : si:voidvoid_part
1062        : sym_SEMICOLON
1063        : si:voidvoid_part
1064        : sym_WHITESPACE
1065        : si:void_state_merge
1066        return
1067    }
1068
1069    #
1070    # value Symbol 'Grammar'
1071    #
1072
1073    :method sym_Grammar {} {
1074        # x
1075        #     (WHITESPACE)
1076        #     (Header)
1077        #     *
1078        #         (Definition)
1079        #     (Final)
1080        #     (EOF)
1081
1082        : si:value_symbol_start Grammar
1083        : sequence_186
1084        : si:reduce_symbol_end Grammar
1085        return
1086    }
1087
1088    :method sequence_186 {} {
1089        # x
1090        #     (WHITESPACE)
1091        #     (Header)
1092        #     *
1093        #         (Definition)
1094        #     (Final)
1095        #     (EOF)
1096
1097        : si:void_state_push
1098        : sym_WHITESPACE
1099        : si:voidvalue_part
1100        : sym_Header
1101        : si:valuevalue_part
1102        : kleene_182
1103        : si:valuevalue_part
1104        : sym_Final
1105        : si:valuevalue_part
1106        : sym_EOF
1107        : si:value_state_merge
1108        return
1109    }
1110
1111    :method kleene_182 {} {
1112        # *
1113        #     (Definition)
1114
1115        while {1} {
1116            : si:void2_state_push
1117        : sym_Definition
1118            : si:kleene_close
1119        }
1120        return
1121    }
1122
1123    #
1124    # leaf Symbol 'GRAPH'
1125    #
1126
1127    :method sym_GRAPH {} {
1128        # x
1129        #     "<graph>"
1130        #     (WHITESPACE)
1131
1132        : si:void_symbol_start GRAPH
1133        : sequence_191
1134        : si:void_leaf_symbol_end GRAPH
1135        return
1136    }
1137
1138    :method sequence_191 {} {
1139        # x
1140        #     "<graph>"
1141        #     (WHITESPACE)
1142
1143        : si:void_state_push
1144        : si:next_str <graph>
1145        : si:voidvoid_part
1146        : sym_WHITESPACE
1147        : si:void_state_merge
1148        return
1149    }
1150
1151    #
1152    # value Symbol 'Header'
1153    #
1154
1155    :method sym_Header {} {
1156        # x
1157        #     (PEG)
1158        #     (Identifier)
1159        #     (StartExpr)
1160
1161        : si:value_symbol_start Header
1162        : sequence_197
1163        : si:reduce_symbol_end Header
1164        return
1165    }
1166
1167    :method sequence_197 {} {
1168        # x
1169        #     (PEG)
1170        #     (Identifier)
1171        #     (StartExpr)
1172
1173        : si:void_state_push
1174        : sym_PEG
1175        : si:voidvalue_part
1176        : sym_Identifier
1177        : si:valuevalue_part
1178        : sym_StartExpr
1179        : si:value_state_merge
1180        return
1181    }
1182
1183    #
1184    # leaf Symbol 'Ident'
1185    #
1186
1187    :method sym_Ident {} {
1188        # x
1189        #     /
1190        #         [_:]
1191        #         <alpha>
1192        #     *
1193        #         /
1194        #             [_:]
1195        #             <alnum>
1196
1197        : si:void_symbol_start Ident
1198        : sequence_210
1199        : si:void_leaf_symbol_end Ident
1200        return
1201    }
1202
1203    :method sequence_210 {} {
1204        # x
1205        #     /
1206        #         [_:]
1207        #         <alpha>
1208        #     *
1209        #         /
1210        #             [_:]
1211        #             <alnum>
1212
1213        : si:void_state_push
1214        : choice_202
1215        : si:voidvoid_part
1216        : kleene_208
1217        : si:void_state_merge
1218        return
1219    }
1220
1221    :method choice_202 {} {
1222        # /
1223        #     [_:]
1224        #     <alpha>
1225
1226        : si:void_state_push
1227        : si:next_class _:
1228        : si:voidvoid_branch
1229        : si:next_alpha
1230        : si:void_state_merge
1231        return
1232    }
1233
1234    :method kleene_208 {} {
1235        # *
1236        #     /
1237        #         [_:]
1238        #         <alnum>
1239
1240        while {1} {
1241            : si:void2_state_push
1242        : choice_206
1243            : si:kleene_close
1244        }
1245        return
1246    }
1247
1248    :method choice_206 {} {
1249        # /
1250        #     [_:]
1251        #     <alnum>
1252
1253        : si:void_state_push
1254        : si:next_class _:
1255        : si:voidvoid_branch
1256        : si:next_alnum
1257        : si:void_state_merge
1258        return
1259    }
1260
1261    #
1262    # value Symbol 'Identifier'
1263    #
1264
1265    :method sym_Identifier {} {
1266        # x
1267        #     (Ident)
1268        #     (WHITESPACE)
1269
1270        : si:value_symbol_start Identifier
1271        : sequence_215
1272        : si:reduce_symbol_end Identifier
1273        return
1274    }
1275
1276    :method sequence_215 {} {
1277        # x
1278        #     (Ident)
1279        #     (WHITESPACE)
1280
1281        : si:value_state_push
1282        : sym_Ident
1283        : si:valuevalue_part
1284        : sym_WHITESPACE
1285        : si:value_state_merge
1286        return
1287    }
1288
1289    #
1290    # void Symbol 'IS'
1291    #
1292
1293    :method sym_IS {} {
1294        # x
1295        #     "<-"
1296        #     (WHITESPACE)
1297
1298        : si:void_void_symbol_start IS
1299        : sequence_220
1300        : si:void_clear_symbol_end IS
1301        return
1302    }
1303
1304    :method sequence_220 {} {
1305        # x
1306        #     "<-"
1307        #     (WHITESPACE)
1308
1309        : si:void_state_push
1310        : si:next_str <-
1311        : si:voidvoid_part
1312        : sym_WHITESPACE
1313        : si:void_state_merge
1314        return
1315    }
1316
1317    #
1318    # leaf Symbol 'LEAF'
1319    #
1320
1321    :method sym_LEAF {} {
1322        # x
1323        #     "leaf"
1324        #     (WHITESPACE)
1325
1326        : si:void_symbol_start LEAF
1327        : sequence_225
1328        : si:void_leaf_symbol_end LEAF
1329        return
1330    }
1331
1332    :method sequence_225 {} {
1333        # x
1334        #     "leaf"
1335        #     (WHITESPACE)
1336
1337        : si:void_state_push
1338        : si:next_str leaf
1339        : si:voidvoid_part
1340        : sym_WHITESPACE
1341        : si:void_state_merge
1342        return
1343    }
1344
1345    #
1346    # value Symbol 'Literal'
1347    #
1348
1349    :method sym_Literal {} {
1350        # /
1351        #     x
1352        #         (APOSTROPH)
1353        #         *
1354        #             x
1355        #                 !
1356        #                     (APOSTROPH)
1357        #                 (Char)
1358        #         (APOSTROPH)
1359        #         (WHITESPACE)
1360        #     x
1361        #         (DAPOSTROPH)
1362        #         *
1363        #             x
1364        #                 !
1365        #                     (DAPOSTROPH)
1366        #                 (Char)
1367        #         (DAPOSTROPH)
1368        #         (WHITESPACE)
1369
1370        : si:value_symbol_start Literal
1371        : choice_254
1372        : si:reduce_symbol_end Literal
1373        return
1374    }
1375
1376    :method choice_254 {} {
1377        # /
1378        #     x
1379        #         (APOSTROPH)
1380        #         *
1381        #             x
1382        #                 !
1383        #                     (APOSTROPH)
1384        #                 (Char)
1385        #         (APOSTROPH)
1386        #         (WHITESPACE)
1387        #     x
1388        #         (DAPOSTROPH)
1389        #         *
1390        #             x
1391        #                 !
1392        #                     (DAPOSTROPH)
1393        #                 (Char)
1394        #         (DAPOSTROPH)
1395        #         (WHITESPACE)
1396
1397        : si:value_state_push
1398        : sequence_239
1399        : si:valuevalue_branch
1400        : sequence_252
1401        : si:value_state_merge
1402        return
1403    }
1404
1405    :method sequence_239 {} {
1406        # x
1407        #     (APOSTROPH)
1408        #     *
1409        #         x
1410        #             !
1411        #                 (APOSTROPH)
1412        #             (Char)
1413        #     (APOSTROPH)
1414        #     (WHITESPACE)
1415
1416        : si:void_state_push
1417        : sym_APOSTROPH
1418        : si:voidvalue_part
1419        : kleene_235
1420        : si:valuevalue_part
1421        : sym_APOSTROPH
1422        : si:valuevalue_part
1423        : sym_WHITESPACE
1424        : si:value_state_merge
1425        return
1426    }
1427
1428    :method kleene_235 {} {
1429        # *
1430        #     x
1431        #         !
1432        #             (APOSTROPH)
1433        #         (Char)
1434
1435        while {1} {
1436            : si:void2_state_push
1437        : sequence_233
1438            : si:kleene_close
1439        }
1440        return
1441    }
1442
1443    :method sequence_233 {} {
1444        # x
1445        #     !
1446        #         (APOSTROPH)
1447        #     (Char)
1448
1449        : si:void_state_push
1450        : notahead_230
1451        : si:voidvalue_part
1452        : sym_Char
1453        : si:value_state_merge
1454        return
1455    }
1456
1457    :method notahead_230 {} {
1458        # !
1459        #     (APOSTROPH)
1460
1461        : i_loc_push
1462        : sym_APOSTROPH
1463        : si:void_notahead_exit
1464        return
1465    }
1466
1467    :method sequence_252 {} {
1468        # x
1469        #     (DAPOSTROPH)
1470        #     *
1471        #         x
1472        #             !
1473        #                 (DAPOSTROPH)
1474        #             (Char)
1475        #     (DAPOSTROPH)
1476        #     (WHITESPACE)
1477
1478        : si:void_state_push
1479        : sym_DAPOSTROPH
1480        : si:voidvalue_part
1481        : kleene_248
1482        : si:valuevalue_part
1483        : sym_DAPOSTROPH
1484        : si:valuevalue_part
1485        : sym_WHITESPACE
1486        : si:value_state_merge
1487        return
1488    }
1489
1490    :method kleene_248 {} {
1491        # *
1492        #     x
1493        #         !
1494        #             (DAPOSTROPH)
1495        #         (Char)
1496
1497        while {1} {
1498            : si:void2_state_push
1499        : sequence_246
1500            : si:kleene_close
1501        }
1502        return
1503    }
1504
1505    :method sequence_246 {} {
1506        # x
1507        #     !
1508        #         (DAPOSTROPH)
1509        #     (Char)
1510
1511        : si:void_state_push
1512        : notahead_243
1513        : si:voidvalue_part
1514        : sym_Char
1515        : si:value_state_merge
1516        return
1517    }
1518
1519    :method notahead_243 {} {
1520        # !
1521        #     (DAPOSTROPH)
1522
1523        : i_loc_push
1524        : sym_DAPOSTROPH
1525        : si:void_notahead_exit
1526        return
1527    }
1528
1529    #
1530    # leaf Symbol 'LOWER'
1531    #
1532
1533    :method sym_LOWER {} {
1534        # x
1535        #     "<lower>"
1536        #     (WHITESPACE)
1537
1538        : si:void_symbol_start LOWER
1539        : sequence_259
1540        : si:void_leaf_symbol_end LOWER
1541        return
1542    }
1543
1544    :method sequence_259 {} {
1545        # x
1546        #     "<lower>"
1547        #     (WHITESPACE)
1548
1549        : si:void_state_push
1550        : si:next_str <lower>
1551        : si:voidvoid_part
1552        : sym_WHITESPACE
1553        : si:void_state_merge
1554        return
1555    }
1556
1557    #
1558    # leaf Symbol 'NOT'
1559    #
1560
1561    :method sym_NOT {} {
1562        # x
1563        #     '!'
1564        #     (WHITESPACE)
1565
1566        : si:void_symbol_start NOT
1567        : sequence_264
1568        : si:void_leaf_symbol_end NOT
1569        return
1570    }
1571
1572    :method sequence_264 {} {
1573        # x
1574        #     '!'
1575        #     (WHITESPACE)
1576
1577        : si:void_state_push
1578        : si:next_char !
1579        : si:voidvoid_part
1580        : sym_WHITESPACE
1581        : si:void_state_merge
1582        return
1583    }
1584
1585    #
1586    # void Symbol 'OPEN'
1587    #
1588
1589    :method sym_OPEN {} {
1590        # x
1591        #     '\('
1592        #     (WHITESPACE)
1593
1594        : si:void_void_symbol_start OPEN
1595        : sequence_269
1596        : si:void_clear_symbol_end OPEN
1597        return
1598    }
1599
1600    :method sequence_269 {} {
1601        # x
1602        #     '\('
1603        #     (WHITESPACE)
1604
1605        : si:void_state_push
1606        : si:next_char \50
1607        : si:voidvoid_part
1608        : sym_WHITESPACE
1609        : si:void_state_merge
1610        return
1611    }
1612
1613    #
1614    # void Symbol 'OPENB'
1615    #
1616
1617    :method sym_OPENB {} {
1618        # '['
1619
1620        : si:void_void_symbol_start OPENB
1621        : si:next_char \133
1622        : si:void_clear_symbol_end OPENB
1623        return
1624    }
1625
1626    #
1627    # void Symbol 'PEG'
1628    #
1629
1630    :method sym_PEG {} {
1631        # x
1632        #     "PEG"
1633        #     !
1634        #         /
1635        #             [_:]
1636        #             <alnum>
1637        #     (WHITESPACE)
1638
1639        : si:void_void_symbol_start PEG
1640        : sequence_281
1641        : si:void_clear_symbol_end PEG
1642        return
1643    }
1644
1645    :method sequence_281 {} {
1646        # x
1647        #     "PEG"
1648        #     !
1649        #         /
1650        #             [_:]
1651        #             <alnum>
1652        #     (WHITESPACE)
1653
1654        : si:void_state_push
1655        : si:next_str PEG
1656        : si:voidvoid_part
1657        : notahead_278
1658        : si:voidvoid_part
1659        : sym_WHITESPACE
1660        : si:void_state_merge
1661        return
1662    }
1663
1664    :method notahead_278 {} {
1665        # !
1666        #     /
1667        #         [_:]
1668        #         <alnum>
1669
1670        : i_loc_push
1671        : choice_206
1672        : si:void_notahead_exit
1673        return
1674    }
1675
1676    #
1677    # leaf Symbol 'PLUS'
1678    #
1679
1680    :method sym_PLUS {} {
1681        # x
1682        #     '+'
1683        #     (WHITESPACE)
1684
1685        : si:void_symbol_start PLUS
1686        : sequence_286
1687        : si:void_leaf_symbol_end PLUS
1688        return
1689    }
1690
1691    :method sequence_286 {} {
1692        # x
1693        #     '+'
1694        #     (WHITESPACE)
1695
1696        : si:void_state_push
1697        : si:next_char +
1698        : si:voidvoid_part
1699        : sym_WHITESPACE
1700        : si:void_state_merge
1701        return
1702    }
1703
1704    #
1705    # value Symbol 'Prefix'
1706    #
1707
1708    :method sym_Prefix {} {
1709        # x
1710        #     ?
1711        #         /
1712        #             (AND)
1713        #             (NOT)
1714        #     (Suffix)
1715
1716        : si:value_symbol_start Prefix
1717        : sequence_296
1718        : si:reduce_symbol_end Prefix
1719        return
1720    }
1721
1722    :method sequence_296 {} {
1723        # x
1724        #     ?
1725        #         /
1726        #             (AND)
1727        #             (NOT)
1728        #     (Suffix)
1729
1730        : si:value_state_push
1731        : optional_293
1732        : si:valuevalue_part
1733        : sym_Suffix
1734        : si:value_state_merge
1735        return
1736    }
1737
1738    :method optional_293 {} {
1739        # ?
1740        #     /
1741        #         (AND)
1742        #         (NOT)
1743
1744        : si:void2_state_push
1745        : choice_291
1746        : si:void_state_merge_ok
1747        return
1748    }
1749
1750    :method choice_291 {} {
1751        # /
1752        #     (AND)
1753        #     (NOT)
1754
1755        : si:value_state_push
1756        : sym_AND
1757        : si:valuevalue_branch
1758        : sym_NOT
1759        : si:value_state_merge
1760        return
1761    }
1762
1763    #
1764    # value Symbol 'Primary'
1765    #
1766
1767    :method sym_Primary {} {
1768        # /
1769        #     (ALNUM)
1770        #     (ALPHA)
1771        #     (ASCII)
1772        #     (CONTROL)
1773        #     (DDIGIT)
1774        #     (DIGIT)
1775        #     (GRAPH)
1776        #     (LOWER)
1777        #     (PRINTABLE)
1778        #     (PUNCT)
1779        #     (SPACE)
1780        #     (UPPER)
1781        #     (WORDCHAR)
1782        #     (XDIGIT)
1783        #     (Identifier)
1784        #     x
1785        #         (OPEN)
1786        #         (Expression)
1787        #         (CLOSE)
1788        #     (Literal)
1789        #     (Class)
1790        #     (DOT)
1791
1792        : si:value_symbol_start Primary
1793        : choice_322
1794        : si:reduce_symbol_end Primary
1795        return
1796    }
1797
1798    :method choice_322 {} {
1799        # /
1800        #     (ALNUM)
1801        #     (ALPHA)
1802        #     (ASCII)
1803        #     (CONTROL)
1804        #     (DDIGIT)
1805        #     (DIGIT)
1806        #     (GRAPH)
1807        #     (LOWER)
1808        #     (PRINTABLE)
1809        #     (PUNCT)
1810        #     (SPACE)
1811        #     (UPPER)
1812        #     (WORDCHAR)
1813        #     (XDIGIT)
1814        #     (Identifier)
1815        #     x
1816        #         (OPEN)
1817        #         (Expression)
1818        #         (CLOSE)
1819        #     (Literal)
1820        #     (Class)
1821        #     (DOT)
1822
1823        : si:value_state_push
1824        : sym_ALNUM
1825        : si:valuevalue_branch
1826        : sym_ALPHA
1827        : si:valuevalue_branch
1828        : sym_ASCII
1829        : si:valuevalue_branch
1830        : sym_CONTROL
1831        : si:valuevalue_branch
1832        : sym_DDIGIT
1833        : si:valuevalue_branch
1834        : sym_DIGIT
1835        : si:valuevalue_branch
1836        : sym_GRAPH
1837        : si:valuevalue_branch
1838        : sym_LOWER
1839        : si:valuevalue_branch
1840        : sym_PRINTABLE
1841        : si:valuevalue_branch
1842        : sym_PUNCT
1843        : si:valuevalue_branch
1844        : sym_SPACE
1845        : si:valuevalue_branch
1846        : sym_UPPER
1847        : si:valuevalue_branch
1848        : sym_WORDCHAR
1849        : si:valuevalue_branch
1850        : sym_XDIGIT
1851        : si:valuevalue_branch
1852        : sym_Identifier
1853        : si:valuevalue_branch
1854        : sequence_317
1855        : si:valuevalue_branch
1856        : sym_Literal
1857        : si:valuevalue_branch
1858        : sym_Class
1859        : si:valuevalue_branch
1860        : sym_DOT
1861        : si:value_state_merge
1862        return
1863    }
1864
1865    :method sequence_317 {} {
1866        # x
1867        #     (OPEN)
1868        #     (Expression)
1869        #     (CLOSE)
1870
1871        : si:void_state_push
1872        : sym_OPEN
1873        : si:voidvalue_part
1874        : sym_Expression
1875        : si:valuevalue_part
1876        : sym_CLOSE
1877        : si:value_state_merge
1878        return
1879    }
1880
1881    #
1882    # leaf Symbol 'PRINTABLE'
1883    #
1884
1885    :method sym_PRINTABLE {} {
1886        # x
1887        #     "<print>"
1888        #     (WHITESPACE)
1889
1890        : si:void_symbol_start PRINTABLE
1891        : sequence_327
1892        : si:void_leaf_symbol_end PRINTABLE
1893        return
1894    }
1895
1896    :method sequence_327 {} {
1897        # x
1898        #     "<print>"
1899        #     (WHITESPACE)
1900
1901        : si:void_state_push
1902        : si:next_str <print>
1903        : si:voidvoid_part
1904        : sym_WHITESPACE
1905        : si:void_state_merge
1906        return
1907    }
1908
1909    #
1910    # leaf Symbol 'PUNCT'
1911    #
1912
1913    :method sym_PUNCT {} {
1914        # x
1915        #     "<punct>"
1916        #     (WHITESPACE)
1917
1918        : si:void_symbol_start PUNCT
1919        : sequence_332
1920        : si:void_leaf_symbol_end PUNCT
1921        return
1922    }
1923
1924    :method sequence_332 {} {
1925        # x
1926        #     "<punct>"
1927        #     (WHITESPACE)
1928
1929        : si:void_state_push
1930        : si:next_str <punct>
1931        : si:voidvoid_part
1932        : sym_WHITESPACE
1933        : si:void_state_merge
1934        return
1935    }
1936
1937    #
1938    # leaf Symbol 'QUESTION'
1939    #
1940
1941    :method sym_QUESTION {} {
1942        # x
1943        #     '?'
1944        #     (WHITESPACE)
1945
1946        : si:void_symbol_start QUESTION
1947        : sequence_337
1948        : si:void_leaf_symbol_end QUESTION
1949        return
1950    }
1951
1952    :method sequence_337 {} {
1953        # x
1954        #     '?'
1955        #     (WHITESPACE)
1956
1957        : si:void_state_push
1958        : si:next_char ?
1959        : si:voidvoid_part
1960        : sym_WHITESPACE
1961        : si:void_state_merge
1962        return
1963    }
1964
1965    #
1966    # value Symbol 'Range'
1967    #
1968
1969    :method sym_Range {} {
1970        # /
1971        #     x
1972        #         (Char)
1973        #         (TO)
1974        #         (Char)
1975        #     (Char)
1976
1977        : si:value_symbol_start Range
1978        : choice_346
1979        : si:reduce_symbol_end Range
1980        return
1981    }
1982
1983    :method choice_346 {} {
1984        # /
1985        #     x
1986        #         (Char)
1987        #         (TO)
1988        #         (Char)
1989        #     (Char)
1990
1991        : si:value_state_push
1992        : sequence_343
1993        : si:valuevalue_branch
1994        : sym_Char
1995        : si:value_state_merge
1996        return
1997    }
1998
1999    :method sequence_343 {} {
2000        # x
2001        #     (Char)
2002        #     (TO)
2003        #     (Char)
2004
2005        : si:value_state_push
2006        : sym_Char
2007        : si:valuevalue_part
2008        : sym_TO
2009        : si:valuevalue_part
2010        : sym_Char
2011        : si:value_state_merge
2012        return
2013    }
2014
2015    #
2016    # void Symbol 'SEMICOLON'
2017    #
2018
2019    :method sym_SEMICOLON {} {
2020        # x
2021        #     ';'
2022        #     (WHITESPACE)
2023
2024        : si:void_void_symbol_start SEMICOLON
2025        : sequence_351
2026        : si:void_clear_symbol_end SEMICOLON
2027        return
2028    }
2029
2030    :method sequence_351 {} {
2031        # x
2032        #     ';'
2033        #     (WHITESPACE)
2034
2035        : si:void_state_push
2036        : si:next_char \73
2037        : si:voidvoid_part
2038        : sym_WHITESPACE
2039        : si:void_state_merge
2040        return
2041    }
2042
2043    #
2044    # value Symbol 'Sequence'
2045    #
2046
2047    :method sym_Sequence {} {
2048        # +
2049        #     (Prefix)
2050
2051        : si:value_symbol_start Sequence
2052        : poskleene_355
2053        : si:reduce_symbol_end Sequence
2054        return
2055    }
2056
2057    :method poskleene_355 {} {
2058        # +
2059        #     (Prefix)
2060
2061        : i_loc_push
2062        : sym_Prefix
2063        : si:kleene_abort
2064        while {1} {
2065            : si:void2_state_push
2066        : sym_Prefix
2067            : si:kleene_close
2068        }
2069        return
2070    }
2071
2072    #
2073    # void Symbol 'SLASH'
2074    #
2075
2076    :method sym_SLASH {} {
2077        # x
2078        #     '/'
2079        #     (WHITESPACE)
2080
2081        : si:void_void_symbol_start SLASH
2082        : sequence_360
2083        : si:void_clear_symbol_end SLASH
2084        return
2085    }
2086
2087    :method sequence_360 {} {
2088        # x
2089        #     '/'
2090        #     (WHITESPACE)
2091
2092        : si:void_state_push
2093        : si:next_char /
2094        : si:voidvoid_part
2095        : sym_WHITESPACE
2096        : si:void_state_merge
2097        return
2098    }
2099
2100    #
2101    # leaf Symbol 'SPACE'
2102    #
2103
2104    :method sym_SPACE {} {
2105        # x
2106        #     "<space>"
2107        #     (WHITESPACE)
2108
2109        : si:void_symbol_start SPACE
2110        : sequence_365
2111        : si:void_leaf_symbol_end SPACE
2112        return
2113    }
2114
2115    :method sequence_365 {} {
2116        # x
2117        #     "<space>"
2118        #     (WHITESPACE)
2119
2120        : si:void_state_push
2121        : si:next_str <space>
2122        : si:voidvoid_part
2123        : sym_WHITESPACE
2124        : si:void_state_merge
2125        return
2126    }
2127
2128    #
2129    # leaf Symbol 'STAR'
2130    #
2131
2132    :method sym_STAR {} {
2133        # x
2134        #     '*'
2135        #     (WHITESPACE)
2136
2137        : si:void_symbol_start STAR
2138        : sequence_370
2139        : si:void_leaf_symbol_end STAR
2140        return
2141    }
2142
2143    :method sequence_370 {} {
2144        # x
2145        #     '*'
2146        #     (WHITESPACE)
2147
2148        : si:void_state_push
2149        : si:next_char *
2150        : si:voidvoid_part
2151        : sym_WHITESPACE
2152        : si:void_state_merge
2153        return
2154    }
2155
2156    #
2157    # value Symbol 'StartExpr'
2158    #
2159
2160    :method sym_StartExpr {} {
2161        # x
2162        #     (OPEN)
2163        #     (Expression)
2164        #     (CLOSE)
2165
2166        : si:value_symbol_start StartExpr
2167        : sequence_317
2168        : si:reduce_symbol_end StartExpr
2169        return
2170    }
2171
2172    #
2173    # value Symbol 'Suffix'
2174    #
2175
2176    :method sym_Suffix {} {
2177        # x
2178        #     (Primary)
2179        #     ?
2180        #         /
2181        #             (QUESTION)
2182        #             (STAR)
2183        #             (PLUS)
2184
2185        : si:value_symbol_start Suffix
2186        : sequence_386
2187        : si:reduce_symbol_end Suffix
2188        return
2189    }
2190
2191    :method sequence_386 {} {
2192        # x
2193        #     (Primary)
2194        #     ?
2195        #         /
2196        #             (QUESTION)
2197        #             (STAR)
2198        #             (PLUS)
2199
2200        : si:value_state_push
2201        : sym_Primary
2202        : si:valuevalue_part
2203        : optional_384
2204        : si:value_state_merge
2205        return
2206    }
2207
2208    :method optional_384 {} {
2209        # ?
2210        #     /
2211        #         (QUESTION)
2212        #         (STAR)
2213        #         (PLUS)
2214
2215        : si:void2_state_push
2216        : choice_382
2217        : si:void_state_merge_ok
2218        return
2219    }
2220
2221    :method choice_382 {} {
2222        # /
2223        #     (QUESTION)
2224        #     (STAR)
2225        #     (PLUS)
2226
2227        : si:value_state_push
2228        : sym_QUESTION
2229        : si:valuevalue_branch
2230        : sym_STAR
2231        : si:valuevalue_branch
2232        : sym_PLUS
2233        : si:value_state_merge
2234        return
2235    }
2236
2237    #
2238    # void Symbol 'TO'
2239    #
2240
2241    :method sym_TO {} {
2242        # '-'
2243
2244        : si:void_void_symbol_start TO
2245        : si:next_char -
2246        : si:void_clear_symbol_end TO
2247        return
2248    }
2249
2250    #
2251    # leaf Symbol 'UPPER'
2252    #
2253
2254    :method sym_UPPER {} {
2255        # x
2256        #     "<upper>"
2257        #     (WHITESPACE)
2258
2259        : si:void_symbol_start UPPER
2260        : sequence_393
2261        : si:void_leaf_symbol_end UPPER
2262        return
2263    }
2264
2265    :method sequence_393 {} {
2266        # x
2267        #     "<upper>"
2268        #     (WHITESPACE)
2269
2270        : si:void_state_push
2271        : si:next_str <upper>
2272        : si:voidvoid_part
2273        : sym_WHITESPACE
2274        : si:void_state_merge
2275        return
2276    }
2277
2278    #
2279    # leaf Symbol 'VOID'
2280    #
2281
2282    :method sym_VOID {} {
2283        # x
2284        #     "void"
2285        #     (WHITESPACE)
2286
2287        : si:void_symbol_start VOID
2288        : sequence_398
2289        : si:void_leaf_symbol_end VOID
2290        return
2291    }
2292
2293    :method sequence_398 {} {
2294        # x
2295        #     "void"
2296        #     (WHITESPACE)
2297
2298        : si:void_state_push
2299        : si:next_str void
2300        : si:voidvoid_part
2301        : sym_WHITESPACE
2302        : si:void_state_merge
2303        return
2304    }
2305
2306    #
2307    # void Symbol 'WHITESPACE'
2308    #
2309
2310    :method sym_WHITESPACE {} {
2311        # *
2312        #     /
2313        #         <space>
2314        #         (COMMENT)
2315
2316        : si:void_void_symbol_start WHITESPACE
2317        : kleene_405
2318        : si:void_clear_symbol_end WHITESPACE
2319        return
2320    }
2321
2322    :method kleene_405 {} {
2323        # *
2324        #     /
2325        #         <space>
2326        #         (COMMENT)
2327
2328        while {1} {
2329            : si:void2_state_push
2330        : choice_403
2331            : si:kleene_close
2332        }
2333        return
2334    }
2335
2336    :method choice_403 {} {
2337        # /
2338        #     <space>
2339        #     (COMMENT)
2340
2341        : si:void_state_push
2342        : si:next_space
2343        : si:voidvoid_branch
2344        : sym_COMMENT
2345        : si:void_state_merge
2346        return
2347    }
2348
2349    #
2350    # leaf Symbol 'WORDCHAR'
2351    #
2352
2353    :method sym_WORDCHAR {} {
2354        # x
2355        #     "<wordchar>"
2356        #     (WHITESPACE)
2357
2358        : si:void_symbol_start WORDCHAR
2359        : sequence_410
2360        : si:void_leaf_symbol_end WORDCHAR
2361        return
2362    }
2363
2364    :method sequence_410 {} {
2365        # x
2366        #     "<wordchar>"
2367        #     (WHITESPACE)
2368
2369        : si:void_state_push
2370        : si:next_str <wordchar>
2371        : si:voidvoid_part
2372        : sym_WHITESPACE
2373        : si:void_state_merge
2374        return
2375    }
2376
2377    #
2378    # leaf Symbol 'XDIGIT'
2379    #
2380
2381    :method sym_XDIGIT {} {
2382        # x
2383        #     "<xdigit>"
2384        #     (WHITESPACE)
2385
2386        : si:void_symbol_start XDIGIT
2387        : sequence_415
2388        : si:void_leaf_symbol_end XDIGIT
2389        return
2390    }
2391
2392    :method sequence_415 {} {
2393        # x
2394        #     "<xdigit>"
2395        #     (WHITESPACE)
2396
2397        : si:void_state_push
2398        : si:next_str <xdigit>
2399        : si:voidvoid_part
2400        : sym_WHITESPACE
2401        : si:void_state_merge
2402        return
2403    }
2404
2405    ## END of GENERATED CODE. DO NOT EDIT.
2406    # # ## ### ###### ######## #############
2407}
2408
2409# # ## ### ##### ######## ############# #####################
2410## Ready
2411
2412package provide NX_PACKAGE 1
2413return
2414