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