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