1## -*- tcl -*-
2##
3## Snit-based Tcl/PARAM implementation of the parsing
4## expression grammar
5##
6##	PEG
7##
8## Generated from file	3_peg_itself
9##            for user  aku
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 ::pt::parse::peg_tcl {
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 'END'
955    #
956
957    proc sym_END {} { upvar 1 myparser myparser
958        # x
959        #     "END"
960        #     (WHITESPACE)
961
962        $myparser si:void_void_symbol_start END
963        sequence_158
964        $myparser si:void_clear_symbol_end END
965        return
966    }
967
968    proc sequence_158 {} { upvar 1 myparser myparser
969        # x
970        #     "END"
971        #     (WHITESPACE)
972
973        $myparser si:void_state_push
974        $myparser si:next_str END
975        $myparser si:voidvoid_part
976        sym_WHITESPACE
977        $myparser si:void_state_merge
978        return
979    }
980
981    #
982    # void Symbol 'EOF'
983    #
984
985    proc sym_EOF {} { upvar 1 myparser myparser
986        # !
987        #     <dot>
988
989        $myparser si:void_void_symbol_start EOF
990        notahead_162
991        $myparser si:void_clear_symbol_end EOF
992        return
993    }
994
995    proc notahead_162 {} { upvar 1 myparser myparser
996        # !
997        #     <dot>
998
999        $myparser i_loc_push
1000        $myparser i_input_next dot
1001        $myparser si:void_notahead_exit
1002        return
1003    }
1004
1005    #
1006    # void Symbol 'EOL'
1007    #
1008
1009    proc sym_EOL {} { upvar 1 myparser myparser
1010
1011        $myparser si:void_void_symbol_start EOL
1012        $myparser si:next_class \n\r
1013        $myparser si:void_clear_symbol_end EOL
1014        return
1015    }
1016
1017    #
1018    # value Symbol 'Expression'
1019    #
1020
1021    proc sym_Expression {} { upvar 1 myparser myparser
1022        # x
1023        #     (Sequence)
1024        #     *
1025        #         x
1026        #             (SLASH)
1027        #             (Sequence)
1028
1029        $myparser si:value_symbol_start Expression
1030        sequence_174
1031        $myparser si:reduce_symbol_end Expression
1032        return
1033    }
1034
1035    proc sequence_174 {} { upvar 1 myparser myparser
1036        # x
1037        #     (Sequence)
1038        #     *
1039        #         x
1040        #             (SLASH)
1041        #             (Sequence)
1042
1043        $myparser si:value_state_push
1044        sym_Sequence
1045        $myparser si:valuevalue_part
1046        kleene_172
1047        $myparser si:value_state_merge
1048        return
1049    }
1050
1051    proc kleene_172 {} { upvar 1 myparser myparser
1052        # *
1053        #     x
1054        #         (SLASH)
1055        #         (Sequence)
1056
1057        while {1} {
1058            $myparser si:void2_state_push
1059        sequence_170
1060            $myparser si:kleene_close
1061        }
1062        return
1063    }
1064
1065    proc sequence_170 {} { upvar 1 myparser myparser
1066        # x
1067        #     (SLASH)
1068        #     (Sequence)
1069
1070        $myparser si:void_state_push
1071        sym_SLASH
1072        $myparser si:voidvalue_part
1073        sym_Sequence
1074        $myparser si:value_state_merge
1075        return
1076    }
1077
1078    #
1079    # void Symbol 'Final'
1080    #
1081
1082    proc sym_Final {} { upvar 1 myparser myparser
1083        # x
1084        #     (END)
1085        #     (SEMICOLON)
1086        #     (WHITESPACE)
1087
1088        $myparser si:void_void_symbol_start Final
1089        sequence_180
1090        $myparser si:void_clear_symbol_end Final
1091        return
1092    }
1093
1094    proc sequence_180 {} { upvar 1 myparser myparser
1095        # x
1096        #     (END)
1097        #     (SEMICOLON)
1098        #     (WHITESPACE)
1099
1100        $myparser si:void_state_push
1101        sym_END
1102        $myparser si:voidvoid_part
1103        sym_SEMICOLON
1104        $myparser si:voidvoid_part
1105        sym_WHITESPACE
1106        $myparser si:void_state_merge
1107        return
1108    }
1109
1110    #
1111    # value Symbol 'Grammar'
1112    #
1113
1114    proc sym_Grammar {} { upvar 1 myparser myparser
1115        # x
1116        #     (WHITESPACE)
1117        #     (Header)
1118        #     *
1119        #         (Definition)
1120        #     (Final)
1121        #     (EOF)
1122
1123        $myparser si:value_symbol_start Grammar
1124        sequence_190
1125        $myparser si:reduce_symbol_end Grammar
1126        return
1127    }
1128
1129    proc sequence_190 {} { upvar 1 myparser myparser
1130        # x
1131        #     (WHITESPACE)
1132        #     (Header)
1133        #     *
1134        #         (Definition)
1135        #     (Final)
1136        #     (EOF)
1137
1138        $myparser si:void_state_push
1139        sym_WHITESPACE
1140        $myparser si:voidvalue_part
1141        sym_Header
1142        $myparser si:valuevalue_part
1143        kleene_186
1144        $myparser si:valuevalue_part
1145        sym_Final
1146        $myparser si:valuevalue_part
1147        sym_EOF
1148        $myparser si:value_state_merge
1149        return
1150    }
1151
1152    proc kleene_186 {} { upvar 1 myparser myparser
1153        # *
1154        #     (Definition)
1155
1156        while {1} {
1157            $myparser si:void2_state_push
1158        sym_Definition
1159            $myparser si:kleene_close
1160        }
1161        return
1162    }
1163
1164    #
1165    # leaf Symbol 'GRAPH'
1166    #
1167
1168    proc sym_GRAPH {} { upvar 1 myparser myparser
1169        # x
1170        #     "<graph>"
1171        #     (WHITESPACE)
1172
1173        $myparser si:void_symbol_start GRAPH
1174        sequence_195
1175        $myparser si:void_leaf_symbol_end GRAPH
1176        return
1177    }
1178
1179    proc sequence_195 {} { upvar 1 myparser myparser
1180        # x
1181        #     "<graph>"
1182        #     (WHITESPACE)
1183
1184        $myparser si:void_state_push
1185        $myparser si:next_str <graph>
1186        $myparser si:voidvoid_part
1187        sym_WHITESPACE
1188        $myparser si:void_state_merge
1189        return
1190    }
1191
1192    #
1193    # value Symbol 'Header'
1194    #
1195
1196    proc sym_Header {} { upvar 1 myparser myparser
1197        # x
1198        #     (PEG)
1199        #     (Identifier)
1200        #     (StartExpr)
1201
1202        $myparser si:value_symbol_start Header
1203        sequence_201
1204        $myparser si:reduce_symbol_end Header
1205        return
1206    }
1207
1208    proc sequence_201 {} { upvar 1 myparser myparser
1209        # x
1210        #     (PEG)
1211        #     (Identifier)
1212        #     (StartExpr)
1213
1214        $myparser si:void_state_push
1215        sym_PEG
1216        $myparser si:voidvalue_part
1217        sym_Identifier
1218        $myparser si:valuevalue_part
1219        sym_StartExpr
1220        $myparser si:value_state_merge
1221        return
1222    }
1223
1224    #
1225    # leaf Symbol 'Ident'
1226    #
1227
1228    proc sym_Ident {} { upvar 1 myparser myparser
1229        # x
1230        #     /
1231        #         [_:]
1232        #         <alpha>
1233        #     *
1234        #         /
1235        #             [_:]
1236        #             <alnum>
1237
1238        $myparser si:void_symbol_start Ident
1239        sequence_214
1240        $myparser si:void_leaf_symbol_end Ident
1241        return
1242    }
1243
1244    proc sequence_214 {} { upvar 1 myparser myparser
1245        # x
1246        #     /
1247        #         [_:]
1248        #         <alpha>
1249        #     *
1250        #         /
1251        #             [_:]
1252        #             <alnum>
1253
1254        $myparser si:void_state_push
1255        choice_206
1256        $myparser si:voidvoid_part
1257        kleene_212
1258        $myparser si:void_state_merge
1259        return
1260    }
1261
1262    proc choice_206 {} { upvar 1 myparser myparser
1263        # /
1264        #     [_:]
1265        #     <alpha>
1266
1267        $myparser si:void_state_push
1268        $myparser si:next_class _:
1269        $myparser si:voidvoid_branch
1270        $myparser si:next_alpha
1271        $myparser si:void_state_merge
1272        return
1273    }
1274
1275    proc kleene_212 {} { upvar 1 myparser myparser
1276        # *
1277        #     /
1278        #         [_:]
1279        #         <alnum>
1280
1281        while {1} {
1282            $myparser si:void2_state_push
1283        choice_210
1284            $myparser si:kleene_close
1285        }
1286        return
1287    }
1288
1289    proc choice_210 {} { upvar 1 myparser myparser
1290        # /
1291        #     [_:]
1292        #     <alnum>
1293
1294        $myparser si:void_state_push
1295        $myparser si:next_class _:
1296        $myparser si:voidvoid_branch
1297        $myparser si:next_alnum
1298        $myparser si:void_state_merge
1299        return
1300    }
1301
1302    #
1303    # value Symbol 'Identifier'
1304    #
1305
1306    proc sym_Identifier {} { upvar 1 myparser myparser
1307        # x
1308        #     (Ident)
1309        #     (WHITESPACE)
1310
1311        $myparser si:value_symbol_start Identifier
1312        sequence_219
1313        $myparser si:reduce_symbol_end Identifier
1314        return
1315    }
1316
1317    proc sequence_219 {} { upvar 1 myparser myparser
1318        # x
1319        #     (Ident)
1320        #     (WHITESPACE)
1321
1322        $myparser si:value_state_push
1323        sym_Ident
1324        $myparser si:valuevalue_part
1325        sym_WHITESPACE
1326        $myparser si:value_state_merge
1327        return
1328    }
1329
1330    #
1331    # void Symbol 'IS'
1332    #
1333
1334    proc sym_IS {} { upvar 1 myparser myparser
1335        # x
1336        #     "<-"
1337        #     (WHITESPACE)
1338
1339        $myparser si:void_void_symbol_start IS
1340        sequence_224
1341        $myparser si:void_clear_symbol_end IS
1342        return
1343    }
1344
1345    proc sequence_224 {} { upvar 1 myparser myparser
1346        # x
1347        #     "<-"
1348        #     (WHITESPACE)
1349
1350        $myparser si:void_state_push
1351        $myparser si:next_str <-
1352        $myparser si:voidvoid_part
1353        sym_WHITESPACE
1354        $myparser si:void_state_merge
1355        return
1356    }
1357
1358    #
1359    # leaf Symbol 'LEAF'
1360    #
1361
1362    proc sym_LEAF {} { upvar 1 myparser myparser
1363        # x
1364        #     "leaf"
1365        #     (WHITESPACE)
1366
1367        $myparser si:void_symbol_start LEAF
1368        sequence_229
1369        $myparser si:void_leaf_symbol_end LEAF
1370        return
1371    }
1372
1373    proc sequence_229 {} { upvar 1 myparser myparser
1374        # x
1375        #     "leaf"
1376        #     (WHITESPACE)
1377
1378        $myparser si:void_state_push
1379        $myparser si:next_str leaf
1380        $myparser si:voidvoid_part
1381        sym_WHITESPACE
1382        $myparser si:void_state_merge
1383        return
1384    }
1385
1386    #
1387    # value Symbol 'Literal'
1388    #
1389
1390    proc sym_Literal {} { upvar 1 myparser myparser
1391        # /
1392        #     x
1393        #         (APOSTROPH)
1394        #         *
1395        #             x
1396        #                 !
1397        #                     (APOSTROPH)
1398        #                 (Char)
1399        #         (APOSTROPH)
1400        #         (WHITESPACE)
1401        #     x
1402        #         (DAPOSTROPH)
1403        #         *
1404        #             x
1405        #                 !
1406        #                     (DAPOSTROPH)
1407        #                 (Char)
1408        #         (DAPOSTROPH)
1409        #         (WHITESPACE)
1410
1411        $myparser si:value_symbol_start Literal
1412        choice_258
1413        $myparser si:reduce_symbol_end Literal
1414        return
1415    }
1416
1417    proc choice_258 {} { upvar 1 myparser myparser
1418        # /
1419        #     x
1420        #         (APOSTROPH)
1421        #         *
1422        #             x
1423        #                 !
1424        #                     (APOSTROPH)
1425        #                 (Char)
1426        #         (APOSTROPH)
1427        #         (WHITESPACE)
1428        #     x
1429        #         (DAPOSTROPH)
1430        #         *
1431        #             x
1432        #                 !
1433        #                     (DAPOSTROPH)
1434        #                 (Char)
1435        #         (DAPOSTROPH)
1436        #         (WHITESPACE)
1437
1438        $myparser si:value_state_push
1439        sequence_243
1440        $myparser si:valuevalue_branch
1441        sequence_256
1442        $myparser si:value_state_merge
1443        return
1444    }
1445
1446    proc sequence_243 {} { upvar 1 myparser myparser
1447        # x
1448        #     (APOSTROPH)
1449        #     *
1450        #         x
1451        #             !
1452        #                 (APOSTROPH)
1453        #             (Char)
1454        #     (APOSTROPH)
1455        #     (WHITESPACE)
1456
1457        $myparser si:void_state_push
1458        sym_APOSTROPH
1459        $myparser si:voidvalue_part
1460        kleene_239
1461        $myparser si:valuevalue_part
1462        sym_APOSTROPH
1463        $myparser si:valuevalue_part
1464        sym_WHITESPACE
1465        $myparser si:value_state_merge
1466        return
1467    }
1468
1469    proc kleene_239 {} { upvar 1 myparser myparser
1470        # *
1471        #     x
1472        #         !
1473        #             (APOSTROPH)
1474        #         (Char)
1475
1476        while {1} {
1477            $myparser si:void2_state_push
1478        sequence_237
1479            $myparser si:kleene_close
1480        }
1481        return
1482    }
1483
1484    proc sequence_237 {} { upvar 1 myparser myparser
1485        # x
1486        #     !
1487        #         (APOSTROPH)
1488        #     (Char)
1489
1490        $myparser si:void_state_push
1491        notahead_234
1492        $myparser si:voidvalue_part
1493        sym_Char
1494        $myparser si:value_state_merge
1495        return
1496    }
1497
1498    proc notahead_234 {} { upvar 1 myparser myparser
1499        # !
1500        #     (APOSTROPH)
1501
1502        $myparser i_loc_push
1503        sym_APOSTROPH
1504        $myparser si:void_notahead_exit
1505        return
1506    }
1507
1508    proc sequence_256 {} { upvar 1 myparser myparser
1509        # x
1510        #     (DAPOSTROPH)
1511        #     *
1512        #         x
1513        #             !
1514        #                 (DAPOSTROPH)
1515        #             (Char)
1516        #     (DAPOSTROPH)
1517        #     (WHITESPACE)
1518
1519        $myparser si:void_state_push
1520        sym_DAPOSTROPH
1521        $myparser si:voidvalue_part
1522        kleene_252
1523        $myparser si:valuevalue_part
1524        sym_DAPOSTROPH
1525        $myparser si:valuevalue_part
1526        sym_WHITESPACE
1527        $myparser si:value_state_merge
1528        return
1529    }
1530
1531    proc kleene_252 {} { upvar 1 myparser myparser
1532        # *
1533        #     x
1534        #         !
1535        #             (DAPOSTROPH)
1536        #         (Char)
1537
1538        while {1} {
1539            $myparser si:void2_state_push
1540        sequence_250
1541            $myparser si:kleene_close
1542        }
1543        return
1544    }
1545
1546    proc sequence_250 {} { upvar 1 myparser myparser
1547        # x
1548        #     !
1549        #         (DAPOSTROPH)
1550        #     (Char)
1551
1552        $myparser si:void_state_push
1553        notahead_247
1554        $myparser si:voidvalue_part
1555        sym_Char
1556        $myparser si:value_state_merge
1557        return
1558    }
1559
1560    proc notahead_247 {} { upvar 1 myparser myparser
1561        # !
1562        #     (DAPOSTROPH)
1563
1564        $myparser i_loc_push
1565        sym_DAPOSTROPH
1566        $myparser si:void_notahead_exit
1567        return
1568    }
1569
1570    #
1571    # leaf Symbol 'LOWER'
1572    #
1573
1574    proc sym_LOWER {} { upvar 1 myparser myparser
1575        # x
1576        #     "<lower>"
1577        #     (WHITESPACE)
1578
1579        $myparser si:void_symbol_start LOWER
1580        sequence_263
1581        $myparser si:void_leaf_symbol_end LOWER
1582        return
1583    }
1584
1585    proc sequence_263 {} { upvar 1 myparser myparser
1586        # x
1587        #     "<lower>"
1588        #     (WHITESPACE)
1589
1590        $myparser si:void_state_push
1591        $myparser si:next_str <lower>
1592        $myparser si:voidvoid_part
1593        sym_WHITESPACE
1594        $myparser si:void_state_merge
1595        return
1596    }
1597
1598    #
1599    # leaf Symbol 'NOT'
1600    #
1601
1602    proc sym_NOT {} { upvar 1 myparser myparser
1603        # x
1604        #     '!'
1605        #     (WHITESPACE)
1606
1607        $myparser si:void_symbol_start NOT
1608        sequence_268
1609        $myparser si:void_leaf_symbol_end NOT
1610        return
1611    }
1612
1613    proc sequence_268 {} { upvar 1 myparser myparser
1614        # x
1615        #     '!'
1616        #     (WHITESPACE)
1617
1618        $myparser si:void_state_push
1619        $myparser si:next_char !
1620        $myparser si:voidvoid_part
1621        sym_WHITESPACE
1622        $myparser si:void_state_merge
1623        return
1624    }
1625
1626    #
1627    # void Symbol 'OPEN'
1628    #
1629
1630    proc sym_OPEN {} { upvar 1 myparser myparser
1631        # x
1632        #     '\('
1633        #     (WHITESPACE)
1634
1635        $myparser si:void_void_symbol_start OPEN
1636        sequence_273
1637        $myparser si:void_clear_symbol_end OPEN
1638        return
1639    }
1640
1641    proc sequence_273 {} { upvar 1 myparser myparser
1642        # x
1643        #     '\('
1644        #     (WHITESPACE)
1645
1646        $myparser si:void_state_push
1647        $myparser si:next_char \50
1648        $myparser si:voidvoid_part
1649        sym_WHITESPACE
1650        $myparser si:void_state_merge
1651        return
1652    }
1653
1654    #
1655    # void Symbol 'OPENB'
1656    #
1657
1658    proc sym_OPENB {} { upvar 1 myparser myparser
1659        # '['
1660
1661        $myparser si:void_void_symbol_start OPENB
1662        $myparser si:next_char \133
1663        $myparser si:void_clear_symbol_end OPENB
1664        return
1665    }
1666
1667    #
1668    # void Symbol 'PEG'
1669    #
1670
1671    proc sym_PEG {} { upvar 1 myparser myparser
1672        # x
1673        #     "PEG"
1674        #     (WHITESPACE)
1675
1676        $myparser si:void_void_symbol_start PEG
1677        sequence_280
1678        $myparser si:void_clear_symbol_end PEG
1679        return
1680    }
1681
1682    proc sequence_280 {} { upvar 1 myparser myparser
1683        # x
1684        #     "PEG"
1685        #     (WHITESPACE)
1686
1687        $myparser si:void_state_push
1688        $myparser si:next_str PEG
1689        $myparser si:voidvoid_part
1690        sym_WHITESPACE
1691        $myparser si:void_state_merge
1692        return
1693    }
1694
1695    #
1696    # leaf Symbol 'PLUS'
1697    #
1698
1699    proc sym_PLUS {} { upvar 1 myparser myparser
1700        # x
1701        #     '+'
1702        #     (WHITESPACE)
1703
1704        $myparser si:void_symbol_start PLUS
1705        sequence_285
1706        $myparser si:void_leaf_symbol_end PLUS
1707        return
1708    }
1709
1710    proc sequence_285 {} { upvar 1 myparser myparser
1711        # x
1712        #     '+'
1713        #     (WHITESPACE)
1714
1715        $myparser si:void_state_push
1716        $myparser si:next_char +
1717        $myparser si:voidvoid_part
1718        sym_WHITESPACE
1719        $myparser si:void_state_merge
1720        return
1721    }
1722
1723    #
1724    # value Symbol 'Prefix'
1725    #
1726
1727    proc sym_Prefix {} { upvar 1 myparser myparser
1728        # x
1729        #     ?
1730        #         /
1731        #             (AND)
1732        #             (NOT)
1733        #     (Suffix)
1734
1735        $myparser si:value_symbol_start Prefix
1736        sequence_295
1737        $myparser si:reduce_symbol_end Prefix
1738        return
1739    }
1740
1741    proc sequence_295 {} { upvar 1 myparser myparser
1742        # x
1743        #     ?
1744        #         /
1745        #             (AND)
1746        #             (NOT)
1747        #     (Suffix)
1748
1749        $myparser si:value_state_push
1750        optional_292
1751        $myparser si:valuevalue_part
1752        sym_Suffix
1753        $myparser si:value_state_merge
1754        return
1755    }
1756
1757    proc optional_292 {} { upvar 1 myparser myparser
1758        # ?
1759        #     /
1760        #         (AND)
1761        #         (NOT)
1762
1763        $myparser si:void2_state_push
1764        choice_290
1765        $myparser si:void_state_merge_ok
1766        return
1767    }
1768
1769    proc choice_290 {} { upvar 1 myparser myparser
1770        # /
1771        #     (AND)
1772        #     (NOT)
1773
1774        $myparser si:value_state_push
1775        sym_AND
1776        $myparser si:valuevalue_branch
1777        sym_NOT
1778        $myparser si:value_state_merge
1779        return
1780    }
1781
1782    #
1783    # value Symbol 'Primary'
1784    #
1785
1786    proc sym_Primary {} { upvar 1 myparser myparser
1787        # /
1788        #     (ALNUM)
1789        #     (ALPHA)
1790        #     (ASCII)
1791        #     (CONTROL)
1792        #     (DDIGIT)
1793        #     (DIGIT)
1794        #     (GRAPH)
1795        #     (LOWER)
1796        #     (PRINTABLE)
1797        #     (PUNCT)
1798        #     (SPACE)
1799        #     (UPPER)
1800        #     (WORDCHAR)
1801        #     (XDIGIT)
1802        #     (Identifier)
1803        #     x
1804        #         (OPEN)
1805        #         (Expression)
1806        #         (CLOSE)
1807        #     (Literal)
1808        #     (Class)
1809        #     (DOT)
1810
1811        $myparser si:value_symbol_start Primary
1812        choice_321
1813        $myparser si:reduce_symbol_end Primary
1814        return
1815    }
1816
1817    proc choice_321 {} { upvar 1 myparser myparser
1818        # /
1819        #     (ALNUM)
1820        #     (ALPHA)
1821        #     (ASCII)
1822        #     (CONTROL)
1823        #     (DDIGIT)
1824        #     (DIGIT)
1825        #     (GRAPH)
1826        #     (LOWER)
1827        #     (PRINTABLE)
1828        #     (PUNCT)
1829        #     (SPACE)
1830        #     (UPPER)
1831        #     (WORDCHAR)
1832        #     (XDIGIT)
1833        #     (Identifier)
1834        #     x
1835        #         (OPEN)
1836        #         (Expression)
1837        #         (CLOSE)
1838        #     (Literal)
1839        #     (Class)
1840        #     (DOT)
1841
1842        $myparser si:value_state_push
1843        sym_ALNUM
1844        $myparser si:valuevalue_branch
1845        sym_ALPHA
1846        $myparser si:valuevalue_branch
1847        sym_ASCII
1848        $myparser si:valuevalue_branch
1849        sym_CONTROL
1850        $myparser si:valuevalue_branch
1851        sym_DDIGIT
1852        $myparser si:valuevalue_branch
1853        sym_DIGIT
1854        $myparser si:valuevalue_branch
1855        sym_GRAPH
1856        $myparser si:valuevalue_branch
1857        sym_LOWER
1858        $myparser si:valuevalue_branch
1859        sym_PRINTABLE
1860        $myparser si:valuevalue_branch
1861        sym_PUNCT
1862        $myparser si:valuevalue_branch
1863        sym_SPACE
1864        $myparser si:valuevalue_branch
1865        sym_UPPER
1866        $myparser si:valuevalue_branch
1867        sym_WORDCHAR
1868        $myparser si:valuevalue_branch
1869        sym_XDIGIT
1870        $myparser si:valuevalue_branch
1871        sym_Identifier
1872        $myparser si:valuevalue_branch
1873        sequence_316
1874        $myparser si:valuevalue_branch
1875        sym_Literal
1876        $myparser si:valuevalue_branch
1877        sym_Class
1878        $myparser si:valuevalue_branch
1879        sym_DOT
1880        $myparser si:value_state_merge
1881        return
1882    }
1883
1884    proc sequence_316 {} { upvar 1 myparser myparser
1885        # x
1886        #     (OPEN)
1887        #     (Expression)
1888        #     (CLOSE)
1889
1890        $myparser si:void_state_push
1891        sym_OPEN
1892        $myparser si:voidvalue_part
1893        sym_Expression
1894        $myparser si:valuevalue_part
1895        sym_CLOSE
1896        $myparser si:value_state_merge
1897        return
1898    }
1899
1900    #
1901    # leaf Symbol 'PRINTABLE'
1902    #
1903
1904    proc sym_PRINTABLE {} { upvar 1 myparser myparser
1905        # x
1906        #     "<print>"
1907        #     (WHITESPACE)
1908
1909        $myparser si:void_symbol_start PRINTABLE
1910        sequence_326
1911        $myparser si:void_leaf_symbol_end PRINTABLE
1912        return
1913    }
1914
1915    proc sequence_326 {} { upvar 1 myparser myparser
1916        # x
1917        #     "<print>"
1918        #     (WHITESPACE)
1919
1920        $myparser si:void_state_push
1921        $myparser si:next_str <print>
1922        $myparser si:voidvoid_part
1923        sym_WHITESPACE
1924        $myparser si:void_state_merge
1925        return
1926    }
1927
1928    #
1929    # leaf Symbol 'PUNCT'
1930    #
1931
1932    proc sym_PUNCT {} { upvar 1 myparser myparser
1933        # x
1934        #     "<punct>"
1935        #     (WHITESPACE)
1936
1937        $myparser si:void_symbol_start PUNCT
1938        sequence_331
1939        $myparser si:void_leaf_symbol_end PUNCT
1940        return
1941    }
1942
1943    proc sequence_331 {} { upvar 1 myparser myparser
1944        # x
1945        #     "<punct>"
1946        #     (WHITESPACE)
1947
1948        $myparser si:void_state_push
1949        $myparser si:next_str <punct>
1950        $myparser si:voidvoid_part
1951        sym_WHITESPACE
1952        $myparser si:void_state_merge
1953        return
1954    }
1955
1956    #
1957    # leaf Symbol 'QUESTION'
1958    #
1959
1960    proc sym_QUESTION {} { upvar 1 myparser myparser
1961        # x
1962        #     '?'
1963        #     (WHITESPACE)
1964
1965        $myparser si:void_symbol_start QUESTION
1966        sequence_336
1967        $myparser si:void_leaf_symbol_end QUESTION
1968        return
1969    }
1970
1971    proc sequence_336 {} { upvar 1 myparser myparser
1972        # x
1973        #     '?'
1974        #     (WHITESPACE)
1975
1976        $myparser si:void_state_push
1977        $myparser si:next_char ?
1978        $myparser si:voidvoid_part
1979        sym_WHITESPACE
1980        $myparser si:void_state_merge
1981        return
1982    }
1983
1984    #
1985    # value Symbol 'Range'
1986    #
1987
1988    proc sym_Range {} { upvar 1 myparser myparser
1989        # /
1990        #     x
1991        #         (Char)
1992        #         (TO)
1993        #         (Char)
1994        #     (Char)
1995
1996        $myparser si:value_symbol_start Range
1997        choice_345
1998        $myparser si:reduce_symbol_end Range
1999        return
2000    }
2001
2002    proc choice_345 {} { upvar 1 myparser myparser
2003        # /
2004        #     x
2005        #         (Char)
2006        #         (TO)
2007        #         (Char)
2008        #     (Char)
2009
2010        $myparser si:value_state_push
2011        sequence_342
2012        $myparser si:valuevalue_branch
2013        sym_Char
2014        $myparser si:value_state_merge
2015        return
2016    }
2017
2018    proc sequence_342 {} { upvar 1 myparser myparser
2019        # x
2020        #     (Char)
2021        #     (TO)
2022        #     (Char)
2023
2024        $myparser si:value_state_push
2025        sym_Char
2026        $myparser si:valuevalue_part
2027        sym_TO
2028        $myparser si:valuevalue_part
2029        sym_Char
2030        $myparser si:value_state_merge
2031        return
2032    }
2033
2034    #
2035    # void Symbol 'SEMICOLON'
2036    #
2037
2038    proc sym_SEMICOLON {} { upvar 1 myparser myparser
2039        # x
2040        #     ';'
2041        #     (WHITESPACE)
2042
2043        $myparser si:void_void_symbol_start SEMICOLON
2044        sequence_350
2045        $myparser si:void_clear_symbol_end SEMICOLON
2046        return
2047    }
2048
2049    proc sequence_350 {} { upvar 1 myparser myparser
2050        # x
2051        #     ';'
2052        #     (WHITESPACE)
2053
2054        $myparser si:void_state_push
2055        $myparser si:next_char \73
2056        $myparser si:voidvoid_part
2057        sym_WHITESPACE
2058        $myparser si:void_state_merge
2059        return
2060    }
2061
2062    #
2063    # value Symbol 'Sequence'
2064    #
2065
2066    proc sym_Sequence {} { upvar 1 myparser myparser
2067        # +
2068        #     (Prefix)
2069
2070        $myparser si:value_symbol_start Sequence
2071        poskleene_354
2072        $myparser si:reduce_symbol_end Sequence
2073        return
2074    }
2075
2076    proc poskleene_354 {} { upvar 1 myparser myparser
2077        # +
2078        #     (Prefix)
2079
2080        $myparser i_loc_push
2081        sym_Prefix
2082        $myparser si:kleene_abort
2083        while {1} {
2084            $myparser si:void2_state_push
2085        sym_Prefix
2086            $myparser si:kleene_close
2087        }
2088        return
2089    }
2090
2091    #
2092    # void Symbol 'SLASH'
2093    #
2094
2095    proc sym_SLASH {} { upvar 1 myparser myparser
2096        # x
2097        #     '/'
2098        #     (WHITESPACE)
2099
2100        $myparser si:void_void_symbol_start SLASH
2101        sequence_359
2102        $myparser si:void_clear_symbol_end SLASH
2103        return
2104    }
2105
2106    proc sequence_359 {} { upvar 1 myparser myparser
2107        # x
2108        #     '/'
2109        #     (WHITESPACE)
2110
2111        $myparser si:void_state_push
2112        $myparser si:next_char /
2113        $myparser si:voidvoid_part
2114        sym_WHITESPACE
2115        $myparser si:void_state_merge
2116        return
2117    }
2118
2119    #
2120    # leaf Symbol 'SPACE'
2121    #
2122
2123    proc sym_SPACE {} { upvar 1 myparser myparser
2124        # x
2125        #     "<space>"
2126        #     (WHITESPACE)
2127
2128        $myparser si:void_symbol_start SPACE
2129        sequence_364
2130        $myparser si:void_leaf_symbol_end SPACE
2131        return
2132    }
2133
2134    proc sequence_364 {} { upvar 1 myparser myparser
2135        # x
2136        #     "<space>"
2137        #     (WHITESPACE)
2138
2139        $myparser si:void_state_push
2140        $myparser si:next_str <space>
2141        $myparser si:voidvoid_part
2142        sym_WHITESPACE
2143        $myparser si:void_state_merge
2144        return
2145    }
2146
2147    #
2148    # leaf Symbol 'STAR'
2149    #
2150
2151    proc sym_STAR {} { upvar 1 myparser myparser
2152        # x
2153        #     '*'
2154        #     (WHITESPACE)
2155
2156        $myparser si:void_symbol_start STAR
2157        sequence_369
2158        $myparser si:void_leaf_symbol_end STAR
2159        return
2160    }
2161
2162    proc sequence_369 {} { upvar 1 myparser myparser
2163        # x
2164        #     '*'
2165        #     (WHITESPACE)
2166
2167        $myparser si:void_state_push
2168        $myparser si:next_char *
2169        $myparser si:voidvoid_part
2170        sym_WHITESPACE
2171        $myparser si:void_state_merge
2172        return
2173    }
2174
2175    #
2176    # value Symbol 'StartExpr'
2177    #
2178
2179    proc sym_StartExpr {} { upvar 1 myparser myparser
2180        # x
2181        #     (OPEN)
2182        #     (Expression)
2183        #     (CLOSE)
2184
2185        $myparser si:value_symbol_start StartExpr
2186        sequence_316
2187        $myparser si:reduce_symbol_end StartExpr
2188        return
2189    }
2190
2191    #
2192    # value Symbol 'Suffix'
2193    #
2194
2195    proc sym_Suffix {} { upvar 1 myparser myparser
2196        # x
2197        #     (Primary)
2198        #     ?
2199        #         /
2200        #             (QUESTION)
2201        #             (STAR)
2202        #             (PLUS)
2203
2204        $myparser si:value_symbol_start Suffix
2205        sequence_385
2206        $myparser si:reduce_symbol_end Suffix
2207        return
2208    }
2209
2210    proc sequence_385 {} { upvar 1 myparser myparser
2211        # x
2212        #     (Primary)
2213        #     ?
2214        #         /
2215        #             (QUESTION)
2216        #             (STAR)
2217        #             (PLUS)
2218
2219        $myparser si:value_state_push
2220        sym_Primary
2221        $myparser si:valuevalue_part
2222        optional_383
2223        $myparser si:value_state_merge
2224        return
2225    }
2226
2227    proc optional_383 {} { upvar 1 myparser myparser
2228        # ?
2229        #     /
2230        #         (QUESTION)
2231        #         (STAR)
2232        #         (PLUS)
2233
2234        $myparser si:void2_state_push
2235        choice_381
2236        $myparser si:void_state_merge_ok
2237        return
2238    }
2239
2240    proc choice_381 {} { upvar 1 myparser myparser
2241        # /
2242        #     (QUESTION)
2243        #     (STAR)
2244        #     (PLUS)
2245
2246        $myparser si:value_state_push
2247        sym_QUESTION
2248        $myparser si:valuevalue_branch
2249        sym_STAR
2250        $myparser si:valuevalue_branch
2251        sym_PLUS
2252        $myparser si:value_state_merge
2253        return
2254    }
2255
2256    #
2257    # void Symbol 'TO'
2258    #
2259
2260    proc sym_TO {} { upvar 1 myparser myparser
2261        # '-'
2262
2263        $myparser si:void_void_symbol_start TO
2264        $myparser si:next_char -
2265        $myparser si:void_clear_symbol_end TO
2266        return
2267    }
2268
2269    #
2270    # leaf Symbol 'UPPER'
2271    #
2272
2273    proc sym_UPPER {} { upvar 1 myparser myparser
2274        # x
2275        #     "<upper>"
2276        #     (WHITESPACE)
2277
2278        $myparser si:void_symbol_start UPPER
2279        sequence_392
2280        $myparser si:void_leaf_symbol_end UPPER
2281        return
2282    }
2283
2284    proc sequence_392 {} { upvar 1 myparser myparser
2285        # x
2286        #     "<upper>"
2287        #     (WHITESPACE)
2288
2289        $myparser si:void_state_push
2290        $myparser si:next_str <upper>
2291        $myparser si:voidvoid_part
2292        sym_WHITESPACE
2293        $myparser si:void_state_merge
2294        return
2295    }
2296
2297    #
2298    # leaf Symbol 'VOID'
2299    #
2300
2301    proc sym_VOID {} { upvar 1 myparser myparser
2302        # x
2303        #     "void"
2304        #     (WHITESPACE)
2305
2306        $myparser si:void_symbol_start VOID
2307        sequence_397
2308        $myparser si:void_leaf_symbol_end VOID
2309        return
2310    }
2311
2312    proc sequence_397 {} { upvar 1 myparser myparser
2313        # x
2314        #     "void"
2315        #     (WHITESPACE)
2316
2317        $myparser si:void_state_push
2318        $myparser si:next_str void
2319        $myparser si:voidvoid_part
2320        sym_WHITESPACE
2321        $myparser si:void_state_merge
2322        return
2323    }
2324
2325    #
2326    # void Symbol 'WHITESPACE'
2327    #
2328
2329    proc sym_WHITESPACE {} { upvar 1 myparser myparser
2330        # *
2331        #     /
2332        #         <space>
2333        #         (COMMENT)
2334
2335        $myparser si:void_void_symbol_start WHITESPACE
2336        kleene_404
2337        $myparser si:void_clear_symbol_end WHITESPACE
2338        return
2339    }
2340
2341    proc kleene_404 {} { upvar 1 myparser myparser
2342        # *
2343        #     /
2344        #         <space>
2345        #         (COMMENT)
2346
2347        while {1} {
2348            $myparser si:void2_state_push
2349        choice_402
2350            $myparser si:kleene_close
2351        }
2352        return
2353    }
2354
2355    proc choice_402 {} { upvar 1 myparser myparser
2356        # /
2357        #     <space>
2358        #     (COMMENT)
2359
2360        $myparser si:void_state_push
2361        $myparser si:next_space
2362        $myparser si:voidvoid_branch
2363        sym_COMMENT
2364        $myparser si:void_state_merge
2365        return
2366    }
2367
2368    #
2369    # leaf Symbol 'WORDCHAR'
2370    #
2371
2372    proc sym_WORDCHAR {} { upvar 1 myparser myparser
2373        # x
2374        #     "<wordchar>"
2375        #     (WHITESPACE)
2376
2377        $myparser si:void_symbol_start WORDCHAR
2378        sequence_409
2379        $myparser si:void_leaf_symbol_end WORDCHAR
2380        return
2381    }
2382
2383    proc sequence_409 {} { upvar 1 myparser myparser
2384        # x
2385        #     "<wordchar>"
2386        #     (WHITESPACE)
2387
2388        $myparser si:void_state_push
2389        $myparser si:next_str <wordchar>
2390        $myparser si:voidvoid_part
2391        sym_WHITESPACE
2392        $myparser si:void_state_merge
2393        return
2394    }
2395
2396    #
2397    # leaf Symbol 'XDIGIT'
2398    #
2399
2400    proc sym_XDIGIT {} { upvar 1 myparser myparser
2401        # x
2402        #     "<xdigit>"
2403        #     (WHITESPACE)
2404
2405        $myparser si:void_symbol_start XDIGIT
2406        sequence_414
2407        $myparser si:void_leaf_symbol_end XDIGIT
2408        return
2409    }
2410
2411    proc sequence_414 {} { upvar 1 myparser myparser
2412        # x
2413        #     "<xdigit>"
2414        #     (WHITESPACE)
2415
2416        $myparser si:void_state_push
2417        $myparser si:next_str <xdigit>
2418        $myparser si:voidvoid_part
2419        sym_WHITESPACE
2420        $myparser si:void_state_merge
2421        return
2422    }
2423
2424    ## END of GENERATED CODE. DO NOT EDIT.
2425    # # ## ### ###### ######## #############
2426}
2427
2428# # ## ### ##### ######## ############# #####################
2429## Ready
2430
2431package provide pt::parse::peg_tcl 1
2432return
2433