1# -*- tcl -*-
2## Parsing Expression Grammar 'page::parse::lemon'.
3## RD parser by the PG backend 'MEwriter'.
4
5# ### ### ### ######### ######### #########
6## Package description
7
8# The commands provided here match an input provided through a buffer
9# command to the PE grammar 'page::parse::lemon'. The parser is based on the package
10# 'grammar::mengine' (recursive-descent, packrat, pulling chars,
11# pushing the generated AST).
12
13# ### ### ### ######### ######### #########
14## Requisites
15
16package require grammar::me::tcl
17
18# ### ### ### ######### ######### #########
19## Implementation
20
21namespace eval ::page::parse::lemon {
22    # Import the virtual machine for matching.
23
24    namespace import ::grammar::me::tcl::*
25    upvar #0 ::grammar::me::tcl::ok ok
26}
27
28# ### ### ### ######### ######### #########
29## API Implementation.
30
31proc ::page::parse::lemon::parse {nxcmd emvar astvar} {
32    variable ok
33    variable se
34
35    upvar 1 $emvar emsg $astvar ast
36
37    init $nxcmd
38
39    matchSymbol_LemonGrammar    ; # (n LemonGrammar)
40
41    isv_nonterminal_reduce ALL -1
42    set ast [sv]
43    if {!$ok} {
44        foreach {l m} [ier_get] break
45        lappend l [lc $l]
46	set mx {}
47	foreach x $m {lappend mx "Expected $x"}
48        set emsg [list $l $mx]
49    }
50
51    return $ok
52}
53
54# ### ### ### ######### ######### #########
55## Internal helper methods
56
57# Grammar 'page::parse::lemon'
58#
59# ASSIGN = (x (t :)
60#             (t :)
61#             (t =)
62#             (n SPACE))
63#
64# C_COMMENT = (x (n CCOM_OPEN)
65#                (* (x (! (n CCOM_CLOSE))
66#                      (dot)))
67#                (n CCOM_CLOSE))
68#
69# CCOM_CLOSE = (x (t *)
70#                 (t /))
71#
72# CCOM_OPEN = (x (t /)
73#                (t *))
74#
75# Code = (x (n DCODE)
76#           (n Codeblock))
77#
78# Codeblock = (x (n LBRACE)
79#                (* (/ (n Codeblock)
80#                      (n C_COMMENT)
81#                      (n Cplusplus_COMMENT)
82#                      (x (! (n RBRACE))
83#                         (dot))))
84#                (n RBRACE))
85#
86# Cplusplus_COMMENT = (x (t /)
87#                        (t /)
88#                        (* (x (! (n EOL))
89#                              (dot)))
90#                        (n EOL))
91#
92# DCODE = (x (t c)
93#            (t o)
94#            (t d)
95#            (t e)
96#            (n SPACE))
97#
98# DDEFDEST = (x (t d)
99#               (t e)
100#               (t f)
101#               (t a)
102#               (t u)
103#               (t l)
104#               (t t)
105#               (t _)
106#               (t d)
107#               (t e)
108#               (t s)
109#               (t t)
110#               (t r)
111#               (t u)
112#               (t c)
113#               (t t)
114#               (t o)
115#               (t r)
116#               (n SPACE))
117#
118# DDEFTYPE = (x (t d)
119#               (t e)
120#               (t f)
121#               (t a)
122#               (t u)
123#               (t l)
124#               (t t)
125#               (t _)
126#               (t t)
127#               (t y)
128#               (t p)
129#               (t e)
130#               (n SPACE))
131#
132# DDEST = (x (t d)
133#            (t e)
134#            (t s)
135#            (t t)
136#            (t r)
137#            (t u)
138#            (t c)
139#            (t t)
140#            (t o)
141#            (t r)
142#            (n SPACE))
143#
144# DefaultDestructor = (x (n DDEFDEST)
145#                        (n Identifier)
146#                        (n Codeblock))
147#
148# DefaultType = (x (n DDEFTYPE)
149#                  (n Codeblock))
150#
151# Definition = (* (x (n Identifier)
152#                    (? (n Label))))
153#
154# DENDIF = (x (t %)
155#             (t e)
156#             (t n)
157#             (t d)
158#             (t i)
159#             (t f)
160#             (n SPACE))
161#
162# Destructor = (x (n DDEST)
163#                 (n Identifier)
164#                 (n Codeblock))
165#
166# DEXTRA = (x (t e)
167#             (t x)
168#             (t t)
169#             (t r)
170#             (t a)
171#             (t _)
172#             (t a)
173#             (t r)
174#             (t g)
175#             (t u)
176#             (t m)
177#             (t e)
178#             (t n)
179#             (t t)
180#             (n SPACE))
181#
182# DFALLBK = (x (t f)
183#              (t a)
184#              (t l)
185#              (t l)
186#              (t b)
187#              (t a)
188#              (t c)
189#              (t k)
190#              (n SPACE))
191#
192# DIFDEF = (x (t %)
193#             (t i)
194#             (t f)
195#             (t d)
196#             (t e)
197#             (t f)
198#             (n SPACE))
199#
200# DIFNDEF = (x (t %)
201#              (t i)
202#              (t f)
203#              (t n)
204#              (t d)
205#              (t e)
206#              (t f)
207#              (n SPACE))
208#
209# DINCL = (x (t i)
210#            (t n)
211#            (t c)
212#            (t l)
213#            (t u)
214#            (t d)
215#            (t e)
216#            (n SPACE))
217#
218# DINTRO = (t %)
219#
220# Directive = (x (n DINTRO)
221#                (/ (n Code)
222#                   (n DefaultDestructor)
223#                   (n DefaultType)
224#                   (n Destructor)
225#                   (n ExtraArgument)
226#                   (n Include)
227#                   (n Left)
228#                   (n Name)
229#                   (n Nonassoc)
230#                   (n ParseAccept)
231#                   (n ParseFailure)
232#                   (n Right)
233#                   (n StackOverflow)
234#                   (n Stacksize)
235#                   (n StartSymbol)
236#                   (n SyntaxError)
237#                   (n TokenDestructor)
238#                   (n TokenPrefix)
239#                   (n TokenType)
240#                   (n Type)
241#                   (n Fallback)))
242#
243# DLEFT = (x (t l)
244#            (t e)
245#            (t f)
246#            (t t)
247#            (n SPACE))
248#
249# DNAME = (x (t n)
250#            (t a)
251#            (t m)
252#            (t e)
253#            (n SPACE))
254#
255# DNON = (x (t n)
256#           (t o)
257#           (t n)
258#           (t a)
259#           (t s)
260#           (t s)
261#           (t o)
262#           (t c)
263#           (n SPACE))
264#
265# DOT = (x (t .)
266#          (n SPACE))
267#
268# DPACC = (x (t p)
269#            (t a)
270#            (t r)
271#            (t s)
272#            (t e)
273#            (t _)
274#            (t a)
275#            (t c)
276#            (t c)
277#            (t e)
278#            (t p)
279#            (t t)
280#            (n SPACE))
281#
282# DPFAIL = (x (t p)
283#             (t a)
284#             (t r)
285#             (t s)
286#             (t e)
287#             (t _)
288#             (t f)
289#             (t a)
290#             (t i)
291#             (t l)
292#             (t u)
293#             (t r)
294#             (t e)
295#             (n SPACE))
296#
297# DRIGHT = (x (t r)
298#             (t i)
299#             (t g)
300#             (t h)
301#             (t t)
302#             (n SPACE))
303#
304# DSTART = (x (t s)
305#             (t t)
306#             (t a)
307#             (t r)
308#             (t t)
309#             (t _)
310#             (t s)
311#             (t y)
312#             (t m)
313#             (t b)
314#             (t o)
315#             (t l)
316#             (n SPACE))
317#
318# DSTKOVER = (x (t s)
319#               (t t)
320#               (t a)
321#               (t c)
322#               (t k)
323#               (t _)
324#               (t o)
325#               (t v)
326#               (t e)
327#               (t r)
328#               (t f)
329#               (t l)
330#               (t o)
331#               (t w)
332#               (n SPACE))
333#
334# DSTKSZ = (x (t s)
335#             (t t)
336#             (t a)
337#             (t c)
338#             (t k)
339#             (t _)
340#             (t s)
341#             (t i)
342#             (t z)
343#             (t e)
344#             (n SPACE))
345#
346# DSYNERR = (x (t s)
347#              (t y)
348#              (t n)
349#              (t t)
350#              (t a)
351#              (t x)
352#              (t _)
353#              (t e)
354#              (t r)
355#              (t r)
356#              (t o)
357#              (t r)
358#              (n SPACE))
359#
360# DTOKDEST = (x (t t)
361#               (t o)
362#               (t k)
363#               (t e)
364#               (t n)
365#               (t _)
366#               (t d)
367#               (t e)
368#               (t s)
369#               (t t)
370#               (t r)
371#               (t u)
372#               (t c)
373#               (t t)
374#               (t o)
375#               (t r)
376#               (n SPACE))
377#
378# DTOKPFX = (x (t t)
379#              (t o)
380#              (t k)
381#              (t e)
382#              (t n)
383#              (t _)
384#              (t p)
385#              (t r)
386#              (t e)
387#              (t f)
388#              (t i)
389#              (t x)
390#              (n SPACE))
391#
392# DTOKTYPE = (x (t t)
393#               (t o)
394#               (t k)
395#               (t e)
396#               (t n)
397#               (t _)
398#               (t t)
399#               (t y)
400#               (t p)
401#               (t e)
402#               (n SPACE))
403#
404# DTYPE = (x (t t)
405#            (t y)
406#            (t p)
407#            (t e)
408#            (n SPACE))
409#
410# Endif = (n DENDIF)
411#
412# EOF = (! (dot))
413#
414# EOL = (/ (x (t \r)
415#             (t \n))
416#          (t \r)
417#          (t \n))
418#
419# ExtraArgument = (x (n DEXTRA)
420#                    (n Codeblock))
421#
422# Fallback = (x (n DFALLBK)
423#               (+ (n Identifier))
424#               (n DOT))
425#
426# Ident = (x (/ (alpha)
427#               (t _))
428#            (* (/ (alnum)
429#                  (t _))))
430#
431# Identifier = (x (n Ident)
432#                 (n SPACE))
433#
434# Ifdef = (x (n DIFDEF)
435#            (n Identifier))
436#
437# Ifndef = (x (n DIFNDEF)
438#             (n Identifier))
439#
440# Include = (x (n DINCL)
441#              (n Codeblock))
442#
443# Label = (x (n LPAREN)
444#            (n Identifier)
445#            (n RPAREN))
446#
447# LBRACE = (t \{)
448#
449# LBRACKET = (x (t [)
450#               (n SPACE))
451#
452# Left = (x (n DLEFT)
453#           (+ (n Identifier))
454#           (n DOT))
455#
456# LemonGrammar = (x (n SPACE)
457#                   (+ (n Statement))
458#                   (n EOF))
459#
460# LPAREN = (x (t \()
461#             (n SPACE))
462#
463# Name = (x (n DNAME)
464#           (n Identifier))
465#
466# NatNum = (+ (.. 0 9))
467#
468# NaturalNumber = (x (n NatNum)
469#                    (n SPACE))
470#
471# Nonassoc = (x (n DNON)
472#               (+ (n Identifier))
473#               (n DOT))
474#
475# ParseAccept = (x (n DPACC)
476#                  (n Codeblock))
477#
478# ParseFailure = (x (n DPFAIL)
479#                   (n Codeblock))
480#
481# Precedence = (x (n LBRACKET)
482#                 (n Identifier)
483#                 (n RBRACKET))
484#
485# RBRACE = (t \})
486#
487# RBRACKET = (x (t ])
488#               (n SPACE))
489#
490# Right = (x (n DRIGHT)
491#            (+ (n Identifier))
492#            (n DOT))
493#
494# RPAREN = (x (t \))
495#             (n SPACE))
496#
497# Rule = (x (n Identifier)
498#           (? (n Label))
499#           (n ASSIGN)
500#           (n Definition)
501#           (n DOT)
502#           (? (n Precedence))
503#           (? (n Codeblock)))
504#
505# SPACE = (* (/ (t <blank>)
506#               (t \t)
507#               (t \n)
508#               (t \r)
509#               (n C_COMMENT)
510#               (n Cplusplus_COMMENT)
511#               (n Ifndef)
512#               (n Ifdef)
513#               (n Endif)))
514#
515# StackOverflow = (x (n DSTKOVER)
516#                    (n Codeblock))
517#
518# Stacksize = (x (n DSTKSZ)
519#                (n NaturalNumber))
520#
521# StartSymbol = (x (n DSTART)
522#                  (n Identifier))
523#
524# Statement = (x (/ (n Directive)
525#                   (n Rule))
526#                (n SPACE))
527#
528# SyntaxError = (x (n DSYNERR)
529#                  (n Codeblock))
530#
531# TokenDestructor = (x (n DTOKDEST)
532#                      (n Identifier)
533#                      (n Codeblock))
534#
535# TokenPrefix = (x (n DTOKPFX)
536#                  (n Identifier))
537#
538# TokenType = (x (n DTOKTYPE)
539#                (n Codeblock))
540#
541# Type = (x (n DTYPE)
542#           (n Identifier)
543#           (n Codeblock))
544#
545
546proc ::page::parse::lemon::matchSymbol_ASSIGN {} {
547    # ASSIGN = (x (t :)
548    #             (t :)
549    #             (t =)
550    #             (n SPACE))
551
552    if {[inc_restore ASSIGN]} return
553
554    set pos [icl_get]
555
556    eseq53                ; # (x (t :)
557                            #    (t :)
558                            #    (t =)
559                            #    (n SPACE))
560
561    isv_clear
562    inc_save               ASSIGN $pos
563    ier_nonterminal        ASSIGN $pos
564    return
565}
566
567proc ::page::parse::lemon::eseq53 {} {
568
569    # (x (t :)
570    #    (t :)
571    #    (t =)
572    #    (n SPACE))
573
574    variable ok
575
576    set pos [icl_get]
577
578    set old [ier_get]
579    ict_advance :
580    if {$ok} {ict_match_token :}
581    ier_merge $old
582
583    if {!$ok} {icl_rewind $pos ; return}
584
585    set old [ier_get]
586    ict_advance :
587    if {$ok} {ict_match_token :}
588    ier_merge $old
589
590    if {!$ok} {icl_rewind $pos ; return}
591
592    set old [ier_get]
593    ict_advance =
594    if {$ok} {ict_match_token =}
595    ier_merge $old
596
597    if {!$ok} {icl_rewind $pos ; return}
598
599    set old [ier_get]
600    matchSymbol_SPACE    ; # (n SPACE)
601    ier_merge $old
602
603    if {!$ok} {icl_rewind $pos ; return}
604
605    return
606}
607
608proc ::page::parse::lemon::matchSymbol_C_COMMENT {} {
609    # C_COMMENT = (x (n CCOM_OPEN)
610    #                (* (x (! (n CCOM_CLOSE))
611    #                      (dot)))
612    #                (n CCOM_CLOSE))
613
614    if {[inc_restore C_COMMENT]} return
615
616    set pos [icl_get]
617
618    eseq90                ; # (x (n CCOM_OPEN)
619                            #    (* (x (! (n CCOM_CLOSE))
620                            #          (dot)))
621                            #    (n CCOM_CLOSE))
622
623    isv_clear
624    inc_save               C_COMMENT $pos
625    ier_nonterminal        C_COMMENT $pos
626    return
627}
628
629proc ::page::parse::lemon::eseq90 {} {
630
631    # (x (n CCOM_OPEN)
632    #    (* (x (! (n CCOM_CLOSE))
633    #          (dot)))
634    #    (n CCOM_CLOSE))
635
636    variable ok
637
638    set pos [icl_get]
639
640    set old [ier_get]
641    matchSymbol_CCOM_OPEN    ; # (n CCOM_OPEN)
642    ier_merge $old
643
644    if {!$ok} {icl_rewind $pos ; return}
645
646    set old [ier_get]
647    ekleene89                ; # (* (x (! (n CCOM_CLOSE))
648                               #       (dot)))
649    ier_merge $old
650
651    if {!$ok} {icl_rewind $pos ; return}
652
653    set old [ier_get]
654    matchSymbol_CCOM_CLOSE    ; # (n CCOM_CLOSE)
655    ier_merge $old
656
657    if {!$ok} {icl_rewind $pos ; return}
658
659    return
660}
661
662proc ::page::parse::lemon::ekleene89 {} {
663
664    # (* (x (! (n CCOM_CLOSE))
665    #       (dot)))
666
667    variable ok
668
669    while {1} {
670        set pos [icl_get]
671
672        set old [ier_get]
673        eseq88                ; # (x (! (n CCOM_CLOSE))
674                                #    (dot))
675        ier_merge $old
676
677        if {$ok} continue
678        break
679    }
680
681    icl_rewind $pos
682    iok_ok
683    return
684}
685
686proc ::page::parse::lemon::eseq88 {} {
687
688    # (x (! (n CCOM_CLOSE))
689    #    (dot))
690
691    variable ok
692
693    set pos [icl_get]
694
695    set old [ier_get]
696    ebang87
697    ier_merge $old
698
699    if {!$ok} {icl_rewind $pos ; return}
700
701    set old [ier_get]
702    ict_advance "any character"
703    ier_merge $old
704
705    if {!$ok} {icl_rewind $pos ; return}
706
707    return
708}
709
710proc ::page::parse::lemon::ebang87 {} {
711    set pos [icl_get]
712
713    matchSymbol_CCOM_CLOSE    ; # (n CCOM_CLOSE)
714
715    icl_rewind $pos
716    iok_negate
717    return
718}
719
720proc ::page::parse::lemon::matchSymbol_CCOM_CLOSE {} {
721    # CCOM_CLOSE = (x (t *)
722    #                 (t /))
723
724    if {[inc_restore CCOM_CLOSE]} return
725
726    set pos [icl_get]
727
728    eseq92                ; # (x (t *)
729                            #    (t /))
730
731    isv_clear
732    inc_save               CCOM_CLOSE $pos
733    ier_nonterminal        CCOM_CLOSE $pos
734    return
735}
736
737proc ::page::parse::lemon::eseq92 {} {
738
739    # (x (t *)
740    #    (t /))
741
742    variable ok
743
744    set pos [icl_get]
745
746    set old [ier_get]
747    ict_advance *
748    if {$ok} {ict_match_token *}
749    ier_merge $old
750
751    if {!$ok} {icl_rewind $pos ; return}
752
753    set old [ier_get]
754    ict_advance /
755    if {$ok} {ict_match_token /}
756    ier_merge $old
757
758    if {!$ok} {icl_rewind $pos ; return}
759
760    return
761}
762
763proc ::page::parse::lemon::matchSymbol_CCOM_OPEN {} {
764    # CCOM_OPEN = (x (t /)
765    #                (t *))
766
767    if {[inc_restore CCOM_OPEN]} return
768
769    set pos [icl_get]
770
771    eseq91                ; # (x (t /)
772                            #    (t *))
773
774    isv_clear
775    inc_save               CCOM_OPEN $pos
776    ier_nonterminal        CCOM_OPEN $pos
777    return
778}
779
780proc ::page::parse::lemon::eseq91 {} {
781
782    # (x (t /)
783    #    (t *))
784
785    variable ok
786
787    set pos [icl_get]
788
789    set old [ier_get]
790    ict_advance /
791    if {$ok} {ict_match_token /}
792    ier_merge $old
793
794    if {!$ok} {icl_rewind $pos ; return}
795
796    set old [ier_get]
797    ict_advance *
798    if {$ok} {ict_match_token *}
799    ier_merge $old
800
801    if {!$ok} {icl_rewind $pos ; return}
802
803    return
804}
805
806proc ::page::parse::lemon::matchSymbol_Code {} {
807    # Code = (x (n DCODE)
808    #           (n Codeblock))
809
810    variable ok
811    if {[inc_restore Code]} {
812        if {$ok} ias_push
813        return
814    }
815
816    set pos [icl_get]
817    set mrk [ias_mark]
818
819    eseq16                ; # (x (n DCODE)
820                            #    (n Codeblock))
821
822    isv_nonterminal_reduce Code $pos $mrk
823    inc_save               Code $pos
824    ias_pop2mark             $mrk
825    if {$ok} ias_push
826    ier_nonterminal        Code $pos
827    return
828}
829
830proc ::page::parse::lemon::eseq16 {} {
831
832    # (x (n DCODE)
833    #    (n Codeblock))
834
835    variable ok
836
837    set pos [icl_get]
838
839    set old [ier_get]
840    matchSymbol_DCODE    ; # (n DCODE)
841    ier_merge $old
842
843    if {!$ok} {icl_rewind $pos ; return}
844
845    set mrk [ias_mark]
846
847    set old [ier_get]
848    matchSymbol_Codeblock    ; # (n Codeblock)
849    ier_merge $old
850
851    if {!$ok} {
852        ias_pop2mark $mrk
853        icl_rewind   $pos
854        return
855    }
856
857    return
858}
859
860proc ::page::parse::lemon::matchSymbol_Codeblock {} {
861    # Codeblock = (x (n LBRACE)
862    #                (* (/ (n Codeblock)
863    #                      (n C_COMMENT)
864    #                      (n Cplusplus_COMMENT)
865    #                      (x (! (n RBRACE))
866    #                         (dot))))
867    #                (n RBRACE))
868
869    variable ok
870    if {[inc_restore Codeblock]} {
871        if {$ok} ias_push
872        return
873    }
874
875    set pos [icl_get]
876
877    eseq45                ; # (x (n LBRACE)
878                            #    (* (/ (n Codeblock)
879                            #          (n C_COMMENT)
880                            #          (n Cplusplus_COMMENT)
881                            #          (x (! (n RBRACE))
882                            #             (dot))))
883                            #    (n RBRACE))
884
885    isv_nonterminal_range  Codeblock $pos
886    inc_save               Codeblock $pos
887    if {$ok} ias_push
888    ier_nonterminal        Codeblock $pos
889    return
890}
891
892proc ::page::parse::lemon::eseq45 {} {
893
894    # (x (n LBRACE)
895    #    (* (/ (n Codeblock)
896    #          (n C_COMMENT)
897    #          (n Cplusplus_COMMENT)
898    #          (x (! (n RBRACE))
899    #             (dot))))
900    #    (n RBRACE))
901
902    variable ok
903
904    set pos [icl_get]
905
906    set old [ier_get]
907    matchSymbol_LBRACE    ; # (n LBRACE)
908    ier_merge $old
909
910    if {!$ok} {icl_rewind $pos ; return}
911
912    set old [ier_get]
913    ekleene44                ; # (* (/ (n Codeblock)
914                               #       (n C_COMMENT)
915                               #       (n Cplusplus_COMMENT)
916                               #       (x (! (n RBRACE))
917                               #          (dot))))
918    ier_merge $old
919
920    if {!$ok} {icl_rewind $pos ; return}
921
922    set old [ier_get]
923    matchSymbol_RBRACE    ; # (n RBRACE)
924    ier_merge $old
925
926    if {!$ok} {icl_rewind $pos ; return}
927
928    return
929}
930
931proc ::page::parse::lemon::ekleene44 {} {
932
933    # (* (/ (n Codeblock)
934    #       (n C_COMMENT)
935    #       (n Cplusplus_COMMENT)
936    #       (x (! (n RBRACE))
937    #          (dot))))
938
939    variable ok
940
941    while {1} {
942        set pos [icl_get]
943
944        set old [ier_get]
945        ebra43                ; # (/ (n Codeblock)
946                                #    (n C_COMMENT)
947                                #    (n Cplusplus_COMMENT)
948                                #    (x (! (n RBRACE))
949                                #       (dot)))
950        ier_merge $old
951
952        if {$ok} continue
953        break
954    }
955
956    icl_rewind $pos
957    iok_ok
958    return
959}
960
961proc ::page::parse::lemon::ebra43 {} {
962
963    # (/ (n Codeblock)
964    #    (n C_COMMENT)
965    #    (n Cplusplus_COMMENT)
966    #    (x (! (n RBRACE))
967    #       (dot)))
968
969    variable ok
970
971    set pos [icl_get]
972
973    set old [ier_get]
974    set pCodeblock [ias_mark]
975    matchSymbol_Codeblock
976    ias_pop2mark $pCodeblock    ; # (n Codeblock)
977    ier_merge $old
978
979    if {$ok} return
980    icl_rewind   $pos
981
982    set old [ier_get]
983    matchSymbol_C_COMMENT    ; # (n C_COMMENT)
984    ier_merge $old
985
986    if {$ok} return
987    icl_rewind   $pos
988
989    set old [ier_get]
990    matchSymbol_Cplusplus_COMMENT    ; # (n Cplusplus_COMMENT)
991    ier_merge $old
992
993    if {$ok} return
994    icl_rewind   $pos
995
996    set old [ier_get]
997    eseq42                ; # (x (! (n RBRACE))
998                            #    (dot))
999    ier_merge $old
1000
1001    if {$ok} return
1002    icl_rewind   $pos
1003
1004    return
1005}
1006
1007proc ::page::parse::lemon::eseq42 {} {
1008
1009    # (x (! (n RBRACE))
1010    #    (dot))
1011
1012    variable ok
1013
1014    set pos [icl_get]
1015
1016    set old [ier_get]
1017    ebang41
1018    ier_merge $old
1019
1020    if {!$ok} {icl_rewind $pos ; return}
1021
1022    set old [ier_get]
1023    ict_advance "any character"
1024    ier_merge $old
1025
1026    if {!$ok} {icl_rewind $pos ; return}
1027
1028    return
1029}
1030
1031proc ::page::parse::lemon::ebang41 {} {
1032    set pos [icl_get]
1033
1034    matchSymbol_RBRACE    ; # (n RBRACE)
1035
1036    icl_rewind $pos
1037    iok_negate
1038    return
1039}
1040
1041proc ::page::parse::lemon::matchSymbol_Cplusplus_COMMENT {} {
1042    # Cplusplus_COMMENT = (x (t /)
1043    #                        (t /)
1044    #                        (* (x (! (n EOL))
1045    #                              (dot)))
1046    #                        (n EOL))
1047
1048    if {[inc_restore Cplusplus_COMMENT]} return
1049
1050    set pos [icl_get]
1051
1052    eseq96                ; # (x (t /)
1053                            #    (t /)
1054                            #    (* (x (! (n EOL))
1055                            #          (dot)))
1056                            #    (n EOL))
1057
1058    isv_clear
1059    inc_save               Cplusplus_COMMENT $pos
1060    ier_nonterminal        Cplusplus_COMMENT $pos
1061    return
1062}
1063
1064proc ::page::parse::lemon::eseq96 {} {
1065
1066    # (x (t /)
1067    #    (t /)
1068    #    (* (x (! (n EOL))
1069    #          (dot)))
1070    #    (n EOL))
1071
1072    variable ok
1073
1074    set pos [icl_get]
1075
1076    set old [ier_get]
1077    ict_advance /
1078    if {$ok} {ict_match_token /}
1079    ier_merge $old
1080
1081    if {!$ok} {icl_rewind $pos ; return}
1082
1083    set old [ier_get]
1084    ict_advance /
1085    if {$ok} {ict_match_token /}
1086    ier_merge $old
1087
1088    if {!$ok} {icl_rewind $pos ; return}
1089
1090    set old [ier_get]
1091    ekleene95                ; # (* (x (! (n EOL))
1092                               #       (dot)))
1093    ier_merge $old
1094
1095    if {!$ok} {icl_rewind $pos ; return}
1096
1097    set old [ier_get]
1098    matchSymbol_EOL    ; # (n EOL)
1099    ier_merge $old
1100
1101    if {!$ok} {icl_rewind $pos ; return}
1102
1103    return
1104}
1105
1106proc ::page::parse::lemon::ekleene95 {} {
1107
1108    # (* (x (! (n EOL))
1109    #       (dot)))
1110
1111    variable ok
1112
1113    while {1} {
1114        set pos [icl_get]
1115
1116        set old [ier_get]
1117        eseq94                ; # (x (! (n EOL))
1118                                #    (dot))
1119        ier_merge $old
1120
1121        if {$ok} continue
1122        break
1123    }
1124
1125    icl_rewind $pos
1126    iok_ok
1127    return
1128}
1129
1130proc ::page::parse::lemon::eseq94 {} {
1131
1132    # (x (! (n EOL))
1133    #    (dot))
1134
1135    variable ok
1136
1137    set pos [icl_get]
1138
1139    set old [ier_get]
1140    ebang93
1141    ier_merge $old
1142
1143    if {!$ok} {icl_rewind $pos ; return}
1144
1145    set old [ier_get]
1146    ict_advance "any character"
1147    ier_merge $old
1148
1149    if {!$ok} {icl_rewind $pos ; return}
1150
1151    return
1152}
1153
1154proc ::page::parse::lemon::ebang93 {} {
1155    set pos [icl_get]
1156
1157    matchSymbol_EOL    ; # (n EOL)
1158
1159    icl_rewind $pos
1160    iok_negate
1161    return
1162}
1163
1164proc ::page::parse::lemon::matchSymbol_DCODE {} {
1165    # DCODE = (x (t c)
1166    #            (t o)
1167    #            (t d)
1168    #            (t e)
1169    #            (n SPACE))
1170
1171    if {[inc_restore DCODE]} return
1172
1173    set pos [icl_get]
1174
1175    eseq59                ; # (x (t c)
1176                            #    (t o)
1177                            #    (t d)
1178                            #    (t e)
1179                            #    (n SPACE))
1180
1181    isv_clear
1182    inc_save               DCODE $pos
1183    ier_nonterminal        DCODE $pos
1184    return
1185}
1186
1187proc ::page::parse::lemon::eseq59 {} {
1188
1189    # (x (t c)
1190    #    (t o)
1191    #    (t d)
1192    #    (t e)
1193    #    (n SPACE))
1194
1195    variable ok
1196
1197    set pos [icl_get]
1198
1199    set old [ier_get]
1200    ict_advance c
1201    if {$ok} {ict_match_token c}
1202    ier_merge $old
1203
1204    if {!$ok} {icl_rewind $pos ; return}
1205
1206    set old [ier_get]
1207    ict_advance o
1208    if {$ok} {ict_match_token o}
1209    ier_merge $old
1210
1211    if {!$ok} {icl_rewind $pos ; return}
1212
1213    set old [ier_get]
1214    ict_advance d
1215    if {$ok} {ict_match_token d}
1216    ier_merge $old
1217
1218    if {!$ok} {icl_rewind $pos ; return}
1219
1220    set old [ier_get]
1221    ict_advance e
1222    if {$ok} {ict_match_token e}
1223    ier_merge $old
1224
1225    if {!$ok} {icl_rewind $pos ; return}
1226
1227    set old [ier_get]
1228    matchSymbol_SPACE    ; # (n SPACE)
1229    ier_merge $old
1230
1231    if {!$ok} {icl_rewind $pos ; return}
1232
1233    return
1234}
1235
1236proc ::page::parse::lemon::matchSymbol_DDEFDEST {} {
1237    # DDEFDEST = (x (t d)
1238    #               (t e)
1239    #               (t f)
1240    #               (t a)
1241    #               (t u)
1242    #               (t l)
1243    #               (t t)
1244    #               (t _)
1245    #               (t d)
1246    #               (t e)
1247    #               (t s)
1248    #               (t t)
1249    #               (t r)
1250    #               (t u)
1251    #               (t c)
1252    #               (t t)
1253    #               (t o)
1254    #               (t r)
1255    #               (n SPACE))
1256
1257    if {[inc_restore DDEFDEST]} return
1258
1259    set pos [icl_get]
1260
1261    eseq60                ; # (x (t d)
1262                            #    (t e)
1263                            #    (t f)
1264                            #    (t a)
1265                            #    (t u)
1266                            #    (t l)
1267                            #    (t t)
1268                            #    (t _)
1269                            #    (t d)
1270                            #    (t e)
1271                            #    (t s)
1272                            #    (t t)
1273                            #    (t r)
1274                            #    (t u)
1275                            #    (t c)
1276                            #    (t t)
1277                            #    (t o)
1278                            #    (t r)
1279                            #    (n SPACE))
1280
1281    isv_clear
1282    inc_save               DDEFDEST $pos
1283    ier_nonterminal        DDEFDEST $pos
1284    return
1285}
1286
1287proc ::page::parse::lemon::eseq60 {} {
1288
1289    # (x (t d)
1290    #    (t e)
1291    #    (t f)
1292    #    (t a)
1293    #    (t u)
1294    #    (t l)
1295    #    (t t)
1296    #    (t _)
1297    #    (t d)
1298    #    (t e)
1299    #    (t s)
1300    #    (t t)
1301    #    (t r)
1302    #    (t u)
1303    #    (t c)
1304    #    (t t)
1305    #    (t o)
1306    #    (t r)
1307    #    (n SPACE))
1308
1309    variable ok
1310
1311    set pos [icl_get]
1312
1313    set old [ier_get]
1314    ict_advance d
1315    if {$ok} {ict_match_token d}
1316    ier_merge $old
1317
1318    if {!$ok} {icl_rewind $pos ; return}
1319
1320    set old [ier_get]
1321    ict_advance e
1322    if {$ok} {ict_match_token e}
1323    ier_merge $old
1324
1325    if {!$ok} {icl_rewind $pos ; return}
1326
1327    set old [ier_get]
1328    ict_advance f
1329    if {$ok} {ict_match_token f}
1330    ier_merge $old
1331
1332    if {!$ok} {icl_rewind $pos ; return}
1333
1334    set old [ier_get]
1335    ict_advance a
1336    if {$ok} {ict_match_token a}
1337    ier_merge $old
1338
1339    if {!$ok} {icl_rewind $pos ; return}
1340
1341    set old [ier_get]
1342    ict_advance u
1343    if {$ok} {ict_match_token u}
1344    ier_merge $old
1345
1346    if {!$ok} {icl_rewind $pos ; return}
1347
1348    set old [ier_get]
1349    ict_advance l
1350    if {$ok} {ict_match_token l}
1351    ier_merge $old
1352
1353    if {!$ok} {icl_rewind $pos ; return}
1354
1355    set old [ier_get]
1356    ict_advance t
1357    if {$ok} {ict_match_token t}
1358    ier_merge $old
1359
1360    if {!$ok} {icl_rewind $pos ; return}
1361
1362    set old [ier_get]
1363    ict_advance _
1364    if {$ok} {ict_match_token _}
1365    ier_merge $old
1366
1367    if {!$ok} {icl_rewind $pos ; return}
1368
1369    set old [ier_get]
1370    ict_advance d
1371    if {$ok} {ict_match_token d}
1372    ier_merge $old
1373
1374    if {!$ok} {icl_rewind $pos ; return}
1375
1376    set old [ier_get]
1377    ict_advance e
1378    if {$ok} {ict_match_token e}
1379    ier_merge $old
1380
1381    if {!$ok} {icl_rewind $pos ; return}
1382
1383    set old [ier_get]
1384    ict_advance s
1385    if {$ok} {ict_match_token s}
1386    ier_merge $old
1387
1388    if {!$ok} {icl_rewind $pos ; return}
1389
1390    set old [ier_get]
1391    ict_advance t
1392    if {$ok} {ict_match_token t}
1393    ier_merge $old
1394
1395    if {!$ok} {icl_rewind $pos ; return}
1396
1397    set old [ier_get]
1398    ict_advance r
1399    if {$ok} {ict_match_token r}
1400    ier_merge $old
1401
1402    if {!$ok} {icl_rewind $pos ; return}
1403
1404    set old [ier_get]
1405    ict_advance u
1406    if {$ok} {ict_match_token u}
1407    ier_merge $old
1408
1409    if {!$ok} {icl_rewind $pos ; return}
1410
1411    set old [ier_get]
1412    ict_advance c
1413    if {$ok} {ict_match_token c}
1414    ier_merge $old
1415
1416    if {!$ok} {icl_rewind $pos ; return}
1417
1418    set old [ier_get]
1419    ict_advance t
1420    if {$ok} {ict_match_token t}
1421    ier_merge $old
1422
1423    if {!$ok} {icl_rewind $pos ; return}
1424
1425    set old [ier_get]
1426    ict_advance o
1427    if {$ok} {ict_match_token o}
1428    ier_merge $old
1429
1430    if {!$ok} {icl_rewind $pos ; return}
1431
1432    set old [ier_get]
1433    ict_advance r
1434    if {$ok} {ict_match_token r}
1435    ier_merge $old
1436
1437    if {!$ok} {icl_rewind $pos ; return}
1438
1439    set old [ier_get]
1440    matchSymbol_SPACE    ; # (n SPACE)
1441    ier_merge $old
1442
1443    if {!$ok} {icl_rewind $pos ; return}
1444
1445    return
1446}
1447
1448proc ::page::parse::lemon::matchSymbol_DDEFTYPE {} {
1449    # DDEFTYPE = (x (t d)
1450    #               (t e)
1451    #               (t f)
1452    #               (t a)
1453    #               (t u)
1454    #               (t l)
1455    #               (t t)
1456    #               (t _)
1457    #               (t t)
1458    #               (t y)
1459    #               (t p)
1460    #               (t e)
1461    #               (n SPACE))
1462
1463    if {[inc_restore DDEFTYPE]} return
1464
1465    set pos [icl_get]
1466
1467    eseq61                ; # (x (t d)
1468                            #    (t e)
1469                            #    (t f)
1470                            #    (t a)
1471                            #    (t u)
1472                            #    (t l)
1473                            #    (t t)
1474                            #    (t _)
1475                            #    (t t)
1476                            #    (t y)
1477                            #    (t p)
1478                            #    (t e)
1479                            #    (n SPACE))
1480
1481    isv_clear
1482    inc_save               DDEFTYPE $pos
1483    ier_nonterminal        DDEFTYPE $pos
1484    return
1485}
1486
1487proc ::page::parse::lemon::eseq61 {} {
1488
1489    # (x (t d)
1490    #    (t e)
1491    #    (t f)
1492    #    (t a)
1493    #    (t u)
1494    #    (t l)
1495    #    (t t)
1496    #    (t _)
1497    #    (t t)
1498    #    (t y)
1499    #    (t p)
1500    #    (t e)
1501    #    (n SPACE))
1502
1503    variable ok
1504
1505    set pos [icl_get]
1506
1507    set old [ier_get]
1508    ict_advance d
1509    if {$ok} {ict_match_token d}
1510    ier_merge $old
1511
1512    if {!$ok} {icl_rewind $pos ; return}
1513
1514    set old [ier_get]
1515    ict_advance e
1516    if {$ok} {ict_match_token e}
1517    ier_merge $old
1518
1519    if {!$ok} {icl_rewind $pos ; return}
1520
1521    set old [ier_get]
1522    ict_advance f
1523    if {$ok} {ict_match_token f}
1524    ier_merge $old
1525
1526    if {!$ok} {icl_rewind $pos ; return}
1527
1528    set old [ier_get]
1529    ict_advance a
1530    if {$ok} {ict_match_token a}
1531    ier_merge $old
1532
1533    if {!$ok} {icl_rewind $pos ; return}
1534
1535    set old [ier_get]
1536    ict_advance u
1537    if {$ok} {ict_match_token u}
1538    ier_merge $old
1539
1540    if {!$ok} {icl_rewind $pos ; return}
1541
1542    set old [ier_get]
1543    ict_advance l
1544    if {$ok} {ict_match_token l}
1545    ier_merge $old
1546
1547    if {!$ok} {icl_rewind $pos ; return}
1548
1549    set old [ier_get]
1550    ict_advance t
1551    if {$ok} {ict_match_token t}
1552    ier_merge $old
1553
1554    if {!$ok} {icl_rewind $pos ; return}
1555
1556    set old [ier_get]
1557    ict_advance _
1558    if {$ok} {ict_match_token _}
1559    ier_merge $old
1560
1561    if {!$ok} {icl_rewind $pos ; return}
1562
1563    set old [ier_get]
1564    ict_advance t
1565    if {$ok} {ict_match_token t}
1566    ier_merge $old
1567
1568    if {!$ok} {icl_rewind $pos ; return}
1569
1570    set old [ier_get]
1571    ict_advance y
1572    if {$ok} {ict_match_token y}
1573    ier_merge $old
1574
1575    if {!$ok} {icl_rewind $pos ; return}
1576
1577    set old [ier_get]
1578    ict_advance p
1579    if {$ok} {ict_match_token p}
1580    ier_merge $old
1581
1582    if {!$ok} {icl_rewind $pos ; return}
1583
1584    set old [ier_get]
1585    ict_advance e
1586    if {$ok} {ict_match_token e}
1587    ier_merge $old
1588
1589    if {!$ok} {icl_rewind $pos ; return}
1590
1591    set old [ier_get]
1592    matchSymbol_SPACE    ; # (n SPACE)
1593    ier_merge $old
1594
1595    if {!$ok} {icl_rewind $pos ; return}
1596
1597    return
1598}
1599
1600proc ::page::parse::lemon::matchSymbol_DDEST {} {
1601    # DDEST = (x (t d)
1602    #            (t e)
1603    #            (t s)
1604    #            (t t)
1605    #            (t r)
1606    #            (t u)
1607    #            (t c)
1608    #            (t t)
1609    #            (t o)
1610    #            (t r)
1611    #            (n SPACE))
1612
1613    if {[inc_restore DDEST]} return
1614
1615    set pos [icl_get]
1616
1617    eseq62                ; # (x (t d)
1618                            #    (t e)
1619                            #    (t s)
1620                            #    (t t)
1621                            #    (t r)
1622                            #    (t u)
1623                            #    (t c)
1624                            #    (t t)
1625                            #    (t o)
1626                            #    (t r)
1627                            #    (n SPACE))
1628
1629    isv_clear
1630    inc_save               DDEST $pos
1631    ier_nonterminal        DDEST $pos
1632    return
1633}
1634
1635proc ::page::parse::lemon::eseq62 {} {
1636
1637    # (x (t d)
1638    #    (t e)
1639    #    (t s)
1640    #    (t t)
1641    #    (t r)
1642    #    (t u)
1643    #    (t c)
1644    #    (t t)
1645    #    (t o)
1646    #    (t r)
1647    #    (n SPACE))
1648
1649    variable ok
1650
1651    set pos [icl_get]
1652
1653    set old [ier_get]
1654    ict_advance d
1655    if {$ok} {ict_match_token d}
1656    ier_merge $old
1657
1658    if {!$ok} {icl_rewind $pos ; return}
1659
1660    set old [ier_get]
1661    ict_advance e
1662    if {$ok} {ict_match_token e}
1663    ier_merge $old
1664
1665    if {!$ok} {icl_rewind $pos ; return}
1666
1667    set old [ier_get]
1668    ict_advance s
1669    if {$ok} {ict_match_token s}
1670    ier_merge $old
1671
1672    if {!$ok} {icl_rewind $pos ; return}
1673
1674    set old [ier_get]
1675    ict_advance t
1676    if {$ok} {ict_match_token t}
1677    ier_merge $old
1678
1679    if {!$ok} {icl_rewind $pos ; return}
1680
1681    set old [ier_get]
1682    ict_advance r
1683    if {$ok} {ict_match_token r}
1684    ier_merge $old
1685
1686    if {!$ok} {icl_rewind $pos ; return}
1687
1688    set old [ier_get]
1689    ict_advance u
1690    if {$ok} {ict_match_token u}
1691    ier_merge $old
1692
1693    if {!$ok} {icl_rewind $pos ; return}
1694
1695    set old [ier_get]
1696    ict_advance c
1697    if {$ok} {ict_match_token c}
1698    ier_merge $old
1699
1700    if {!$ok} {icl_rewind $pos ; return}
1701
1702    set old [ier_get]
1703    ict_advance t
1704    if {$ok} {ict_match_token t}
1705    ier_merge $old
1706
1707    if {!$ok} {icl_rewind $pos ; return}
1708
1709    set old [ier_get]
1710    ict_advance o
1711    if {$ok} {ict_match_token o}
1712    ier_merge $old
1713
1714    if {!$ok} {icl_rewind $pos ; return}
1715
1716    set old [ier_get]
1717    ict_advance r
1718    if {$ok} {ict_match_token r}
1719    ier_merge $old
1720
1721    if {!$ok} {icl_rewind $pos ; return}
1722
1723    set old [ier_get]
1724    matchSymbol_SPACE    ; # (n SPACE)
1725    ier_merge $old
1726
1727    if {!$ok} {icl_rewind $pos ; return}
1728
1729    return
1730}
1731
1732proc ::page::parse::lemon::matchSymbol_DefaultDestructor {} {
1733    # DefaultDestructor = (x (n DDEFDEST)
1734    #                        (n Identifier)
1735    #                        (n Codeblock))
1736
1737    variable ok
1738    if {[inc_restore DefaultDestructor]} {
1739        if {$ok} ias_push
1740        return
1741    }
1742
1743    set pos [icl_get]
1744    set mrk [ias_mark]
1745
1746    eseq17                ; # (x (n DDEFDEST)
1747                            #    (n Identifier)
1748                            #    (n Codeblock))
1749
1750    isv_nonterminal_reduce DefaultDestructor $pos $mrk
1751    inc_save               DefaultDestructor $pos
1752    ias_pop2mark             $mrk
1753    if {$ok} ias_push
1754    ier_nonterminal        DefaultDestructor $pos
1755    return
1756}
1757
1758proc ::page::parse::lemon::eseq17 {} {
1759
1760    # (x (n DDEFDEST)
1761    #    (n Identifier)
1762    #    (n Codeblock))
1763
1764    variable ok
1765
1766    set pos [icl_get]
1767
1768    set old [ier_get]
1769    matchSymbol_DDEFDEST    ; # (n DDEFDEST)
1770    ier_merge $old
1771
1772    if {!$ok} {icl_rewind $pos ; return}
1773
1774    set mrk [ias_mark]
1775
1776    set old [ier_get]
1777    matchSymbol_Identifier    ; # (n Identifier)
1778    ier_merge $old
1779
1780    if {!$ok} {
1781        ias_pop2mark $mrk
1782        icl_rewind   $pos
1783        return
1784    }
1785
1786    set old [ier_get]
1787    matchSymbol_Codeblock    ; # (n Codeblock)
1788    ier_merge $old
1789
1790    if {!$ok} {
1791        ias_pop2mark $mrk
1792        icl_rewind   $pos
1793        return
1794    }
1795
1796    return
1797}
1798
1799proc ::page::parse::lemon::matchSymbol_DefaultType {} {
1800    # DefaultType = (x (n DDEFTYPE)
1801    #                  (n Codeblock))
1802
1803    variable ok
1804    if {[inc_restore DefaultType]} {
1805        if {$ok} ias_push
1806        return
1807    }
1808
1809    set pos [icl_get]
1810    set mrk [ias_mark]
1811
1812    eseq18                ; # (x (n DDEFTYPE)
1813                            #    (n Codeblock))
1814
1815    isv_nonterminal_reduce DefaultType $pos $mrk
1816    inc_save               DefaultType $pos
1817    ias_pop2mark             $mrk
1818    if {$ok} ias_push
1819    ier_nonterminal        DefaultType $pos
1820    return
1821}
1822
1823proc ::page::parse::lemon::eseq18 {} {
1824
1825    # (x (n DDEFTYPE)
1826    #    (n Codeblock))
1827
1828    variable ok
1829
1830    set pos [icl_get]
1831
1832    set old [ier_get]
1833    matchSymbol_DDEFTYPE    ; # (n DDEFTYPE)
1834    ier_merge $old
1835
1836    if {!$ok} {icl_rewind $pos ; return}
1837
1838    set mrk [ias_mark]
1839
1840    set old [ier_get]
1841    matchSymbol_Codeblock    ; # (n Codeblock)
1842    ier_merge $old
1843
1844    if {!$ok} {
1845        ias_pop2mark $mrk
1846        icl_rewind   $pos
1847        return
1848    }
1849
1850    return
1851}
1852
1853proc ::page::parse::lemon::matchSymbol_Definition {} {
1854    # Definition = (* (x (n Identifier)
1855    #                    (? (n Label))))
1856
1857    variable ok
1858    if {[inc_restore Definition]} {
1859        if {$ok} ias_push
1860        return
1861    }
1862
1863    set pos [icl_get]
1864    set mrk [ias_mark]
1865
1866    ekleene11                ; # (* (x (n Identifier)
1867                               #       (? (n Label))))
1868
1869    isv_nonterminal_reduce Definition $pos $mrk
1870    inc_save               Definition $pos
1871    ias_pop2mark             $mrk
1872    if {$ok} ias_push
1873    ier_nonterminal        Definition $pos
1874    return
1875}
1876
1877proc ::page::parse::lemon::ekleene11 {} {
1878
1879    # (* (x (n Identifier)
1880    #       (? (n Label))))
1881
1882    variable ok
1883
1884    while {1} {
1885        set pos [icl_get]
1886
1887        set old [ier_get]
1888        eseq10                ; # (x (n Identifier)
1889                                #    (? (n Label)))
1890        ier_merge $old
1891
1892        if {$ok} continue
1893        break
1894    }
1895
1896    icl_rewind $pos
1897    iok_ok
1898    return
1899}
1900
1901proc ::page::parse::lemon::eseq10 {} {
1902
1903    # (x (n Identifier)
1904    #    (? (n Label)))
1905
1906    variable ok
1907
1908    set pos [icl_get]
1909
1910    set mrk [ias_mark]
1911
1912    set old [ier_get]
1913    matchSymbol_Identifier    ; # (n Identifier)
1914    ier_merge $old
1915
1916    if {!$ok} {
1917        ias_pop2mark $mrk
1918        icl_rewind   $pos
1919        return
1920    }
1921
1922    set old [ier_get]
1923    eopt9                ; # (? (n Label))
1924    ier_merge $old
1925
1926    if {!$ok} {
1927        ias_pop2mark $mrk
1928        icl_rewind   $pos
1929        return
1930    }
1931
1932    return
1933}
1934
1935proc ::page::parse::lemon::eopt9 {} {
1936
1937    # (? (n Label))
1938
1939    variable ok
1940
1941    set pos [icl_get]
1942
1943    set old [ier_get]
1944    matchSymbol_Label    ; # (n Label)
1945    ier_merge $old
1946
1947    if {$ok} return
1948    icl_rewind $pos
1949    iok_ok
1950    return
1951}
1952
1953proc ::page::parse::lemon::matchSymbol_DENDIF {} {
1954    # DENDIF = (x (t %)
1955    #             (t e)
1956    #             (t n)
1957    #             (t d)
1958    #             (t i)
1959    #             (t f)
1960    #             (n SPACE))
1961
1962    if {[inc_restore DENDIF]} return
1963
1964    set pos [icl_get]
1965
1966    eseq82                ; # (x (t %)
1967                            #    (t e)
1968                            #    (t n)
1969                            #    (t d)
1970                            #    (t i)
1971                            #    (t f)
1972                            #    (n SPACE))
1973
1974    isv_clear
1975    inc_save               DENDIF $pos
1976    ier_nonterminal        DENDIF $pos
1977    return
1978}
1979
1980proc ::page::parse::lemon::eseq82 {} {
1981
1982    # (x (t %)
1983    #    (t e)
1984    #    (t n)
1985    #    (t d)
1986    #    (t i)
1987    #    (t f)
1988    #    (n SPACE))
1989
1990    variable ok
1991
1992    set pos [icl_get]
1993
1994    set old [ier_get]
1995    ict_advance %
1996    if {$ok} {ict_match_token %}
1997    ier_merge $old
1998
1999    if {!$ok} {icl_rewind $pos ; return}
2000
2001    set old [ier_get]
2002    ict_advance e
2003    if {$ok} {ict_match_token e}
2004    ier_merge $old
2005
2006    if {!$ok} {icl_rewind $pos ; return}
2007
2008    set old [ier_get]
2009    ict_advance n
2010    if {$ok} {ict_match_token n}
2011    ier_merge $old
2012
2013    if {!$ok} {icl_rewind $pos ; return}
2014
2015    set old [ier_get]
2016    ict_advance d
2017    if {$ok} {ict_match_token d}
2018    ier_merge $old
2019
2020    if {!$ok} {icl_rewind $pos ; return}
2021
2022    set old [ier_get]
2023    ict_advance i
2024    if {$ok} {ict_match_token i}
2025    ier_merge $old
2026
2027    if {!$ok} {icl_rewind $pos ; return}
2028
2029    set old [ier_get]
2030    ict_advance f
2031    if {$ok} {ict_match_token f}
2032    ier_merge $old
2033
2034    if {!$ok} {icl_rewind $pos ; return}
2035
2036    set old [ier_get]
2037    matchSymbol_SPACE    ; # (n SPACE)
2038    ier_merge $old
2039
2040    if {!$ok} {icl_rewind $pos ; return}
2041
2042    return
2043}
2044
2045proc ::page::parse::lemon::matchSymbol_Destructor {} {
2046    # Destructor = (x (n DDEST)
2047    #                 (n Identifier)
2048    #                 (n Codeblock))
2049
2050    variable ok
2051    if {[inc_restore Destructor]} {
2052        if {$ok} ias_push
2053        return
2054    }
2055
2056    set pos [icl_get]
2057    set mrk [ias_mark]
2058
2059    eseq19                ; # (x (n DDEST)
2060                            #    (n Identifier)
2061                            #    (n Codeblock))
2062
2063    isv_nonterminal_reduce Destructor $pos $mrk
2064    inc_save               Destructor $pos
2065    ias_pop2mark             $mrk
2066    if {$ok} ias_push
2067    ier_nonterminal        Destructor $pos
2068    return
2069}
2070
2071proc ::page::parse::lemon::eseq19 {} {
2072
2073    # (x (n DDEST)
2074    #    (n Identifier)
2075    #    (n Codeblock))
2076
2077    variable ok
2078
2079    set pos [icl_get]
2080
2081    set old [ier_get]
2082    matchSymbol_DDEST    ; # (n DDEST)
2083    ier_merge $old
2084
2085    if {!$ok} {icl_rewind $pos ; return}
2086
2087    set mrk [ias_mark]
2088
2089    set old [ier_get]
2090    matchSymbol_Identifier    ; # (n Identifier)
2091    ier_merge $old
2092
2093    if {!$ok} {
2094        ias_pop2mark $mrk
2095        icl_rewind   $pos
2096        return
2097    }
2098
2099    set old [ier_get]
2100    matchSymbol_Codeblock    ; # (n Codeblock)
2101    ier_merge $old
2102
2103    if {!$ok} {
2104        ias_pop2mark $mrk
2105        icl_rewind   $pos
2106        return
2107    }
2108
2109    return
2110}
2111
2112proc ::page::parse::lemon::matchSymbol_DEXTRA {} {
2113    # DEXTRA = (x (t e)
2114    #             (t x)
2115    #             (t t)
2116    #             (t r)
2117    #             (t a)
2118    #             (t _)
2119    #             (t a)
2120    #             (t r)
2121    #             (t g)
2122    #             (t u)
2123    #             (t m)
2124    #             (t e)
2125    #             (t n)
2126    #             (t t)
2127    #             (n SPACE))
2128
2129    if {[inc_restore DEXTRA]} return
2130
2131    set pos [icl_get]
2132
2133    eseq63                ; # (x (t e)
2134                            #    (t x)
2135                            #    (t t)
2136                            #    (t r)
2137                            #    (t a)
2138                            #    (t _)
2139                            #    (t a)
2140                            #    (t r)
2141                            #    (t g)
2142                            #    (t u)
2143                            #    (t m)
2144                            #    (t e)
2145                            #    (t n)
2146                            #    (t t)
2147                            #    (n SPACE))
2148
2149    isv_clear
2150    inc_save               DEXTRA $pos
2151    ier_nonterminal        DEXTRA $pos
2152    return
2153}
2154
2155proc ::page::parse::lemon::eseq63 {} {
2156
2157    # (x (t e)
2158    #    (t x)
2159    #    (t t)
2160    #    (t r)
2161    #    (t a)
2162    #    (t _)
2163    #    (t a)
2164    #    (t r)
2165    #    (t g)
2166    #    (t u)
2167    #    (t m)
2168    #    (t e)
2169    #    (t n)
2170    #    (t t)
2171    #    (n SPACE))
2172
2173    variable ok
2174
2175    set pos [icl_get]
2176
2177    set old [ier_get]
2178    ict_advance e
2179    if {$ok} {ict_match_token e}
2180    ier_merge $old
2181
2182    if {!$ok} {icl_rewind $pos ; return}
2183
2184    set old [ier_get]
2185    ict_advance x
2186    if {$ok} {ict_match_token x}
2187    ier_merge $old
2188
2189    if {!$ok} {icl_rewind $pos ; return}
2190
2191    set old [ier_get]
2192    ict_advance t
2193    if {$ok} {ict_match_token t}
2194    ier_merge $old
2195
2196    if {!$ok} {icl_rewind $pos ; return}
2197
2198    set old [ier_get]
2199    ict_advance r
2200    if {$ok} {ict_match_token r}
2201    ier_merge $old
2202
2203    if {!$ok} {icl_rewind $pos ; return}
2204
2205    set old [ier_get]
2206    ict_advance a
2207    if {$ok} {ict_match_token a}
2208    ier_merge $old
2209
2210    if {!$ok} {icl_rewind $pos ; return}
2211
2212    set old [ier_get]
2213    ict_advance _
2214    if {$ok} {ict_match_token _}
2215    ier_merge $old
2216
2217    if {!$ok} {icl_rewind $pos ; return}
2218
2219    set old [ier_get]
2220    ict_advance a
2221    if {$ok} {ict_match_token a}
2222    ier_merge $old
2223
2224    if {!$ok} {icl_rewind $pos ; return}
2225
2226    set old [ier_get]
2227    ict_advance r
2228    if {$ok} {ict_match_token r}
2229    ier_merge $old
2230
2231    if {!$ok} {icl_rewind $pos ; return}
2232
2233    set old [ier_get]
2234    ict_advance g
2235    if {$ok} {ict_match_token g}
2236    ier_merge $old
2237
2238    if {!$ok} {icl_rewind $pos ; return}
2239
2240    set old [ier_get]
2241    ict_advance u
2242    if {$ok} {ict_match_token u}
2243    ier_merge $old
2244
2245    if {!$ok} {icl_rewind $pos ; return}
2246
2247    set old [ier_get]
2248    ict_advance m
2249    if {$ok} {ict_match_token m}
2250    ier_merge $old
2251
2252    if {!$ok} {icl_rewind $pos ; return}
2253
2254    set old [ier_get]
2255    ict_advance e
2256    if {$ok} {ict_match_token e}
2257    ier_merge $old
2258
2259    if {!$ok} {icl_rewind $pos ; return}
2260
2261    set old [ier_get]
2262    ict_advance n
2263    if {$ok} {ict_match_token n}
2264    ier_merge $old
2265
2266    if {!$ok} {icl_rewind $pos ; return}
2267
2268    set old [ier_get]
2269    ict_advance t
2270    if {$ok} {ict_match_token t}
2271    ier_merge $old
2272
2273    if {!$ok} {icl_rewind $pos ; return}
2274
2275    set old [ier_get]
2276    matchSymbol_SPACE    ; # (n SPACE)
2277    ier_merge $old
2278
2279    if {!$ok} {icl_rewind $pos ; return}
2280
2281    return
2282}
2283
2284proc ::page::parse::lemon::matchSymbol_DFALLBK {} {
2285    # DFALLBK = (x (t f)
2286    #              (t a)
2287    #              (t l)
2288    #              (t l)
2289    #              (t b)
2290    #              (t a)
2291    #              (t c)
2292    #              (t k)
2293    #              (n SPACE))
2294
2295    if {[inc_restore DFALLBK]} return
2296
2297    set pos [icl_get]
2298
2299    eseq79                ; # (x (t f)
2300                            #    (t a)
2301                            #    (t l)
2302                            #    (t l)
2303                            #    (t b)
2304                            #    (t a)
2305                            #    (t c)
2306                            #    (t k)
2307                            #    (n SPACE))
2308
2309    isv_clear
2310    inc_save               DFALLBK $pos
2311    ier_nonterminal        DFALLBK $pos
2312    return
2313}
2314
2315proc ::page::parse::lemon::eseq79 {} {
2316
2317    # (x (t f)
2318    #    (t a)
2319    #    (t l)
2320    #    (t l)
2321    #    (t b)
2322    #    (t a)
2323    #    (t c)
2324    #    (t k)
2325    #    (n SPACE))
2326
2327    variable ok
2328
2329    set pos [icl_get]
2330
2331    set old [ier_get]
2332    ict_advance f
2333    if {$ok} {ict_match_token f}
2334    ier_merge $old
2335
2336    if {!$ok} {icl_rewind $pos ; return}
2337
2338    set old [ier_get]
2339    ict_advance a
2340    if {$ok} {ict_match_token a}
2341    ier_merge $old
2342
2343    if {!$ok} {icl_rewind $pos ; return}
2344
2345    set old [ier_get]
2346    ict_advance l
2347    if {$ok} {ict_match_token l}
2348    ier_merge $old
2349
2350    if {!$ok} {icl_rewind $pos ; return}
2351
2352    set old [ier_get]
2353    ict_advance l
2354    if {$ok} {ict_match_token l}
2355    ier_merge $old
2356
2357    if {!$ok} {icl_rewind $pos ; return}
2358
2359    set old [ier_get]
2360    ict_advance b
2361    if {$ok} {ict_match_token b}
2362    ier_merge $old
2363
2364    if {!$ok} {icl_rewind $pos ; return}
2365
2366    set old [ier_get]
2367    ict_advance a
2368    if {$ok} {ict_match_token a}
2369    ier_merge $old
2370
2371    if {!$ok} {icl_rewind $pos ; return}
2372
2373    set old [ier_get]
2374    ict_advance c
2375    if {$ok} {ict_match_token c}
2376    ier_merge $old
2377
2378    if {!$ok} {icl_rewind $pos ; return}
2379
2380    set old [ier_get]
2381    ict_advance k
2382    if {$ok} {ict_match_token k}
2383    ier_merge $old
2384
2385    if {!$ok} {icl_rewind $pos ; return}
2386
2387    set old [ier_get]
2388    matchSymbol_SPACE    ; # (n SPACE)
2389    ier_merge $old
2390
2391    if {!$ok} {icl_rewind $pos ; return}
2392
2393    return
2394}
2395
2396proc ::page::parse::lemon::matchSymbol_DIFDEF {} {
2397    # DIFDEF = (x (t %)
2398    #             (t i)
2399    #             (t f)
2400    #             (t d)
2401    #             (t e)
2402    #             (t f)
2403    #             (n SPACE))
2404
2405    if {[inc_restore DIFDEF]} return
2406
2407    set pos [icl_get]
2408
2409    eseq80                ; # (x (t %)
2410                            #    (t i)
2411                            #    (t f)
2412                            #    (t d)
2413                            #    (t e)
2414                            #    (t f)
2415                            #    (n SPACE))
2416
2417    isv_clear
2418    inc_save               DIFDEF $pos
2419    ier_nonterminal        DIFDEF $pos
2420    return
2421}
2422
2423proc ::page::parse::lemon::eseq80 {} {
2424
2425    # (x (t %)
2426    #    (t i)
2427    #    (t f)
2428    #    (t d)
2429    #    (t e)
2430    #    (t f)
2431    #    (n SPACE))
2432
2433    variable ok
2434
2435    set pos [icl_get]
2436
2437    set old [ier_get]
2438    ict_advance %
2439    if {$ok} {ict_match_token %}
2440    ier_merge $old
2441
2442    if {!$ok} {icl_rewind $pos ; return}
2443
2444    set old [ier_get]
2445    ict_advance i
2446    if {$ok} {ict_match_token i}
2447    ier_merge $old
2448
2449    if {!$ok} {icl_rewind $pos ; return}
2450
2451    set old [ier_get]
2452    ict_advance f
2453    if {$ok} {ict_match_token f}
2454    ier_merge $old
2455
2456    if {!$ok} {icl_rewind $pos ; return}
2457
2458    set old [ier_get]
2459    ict_advance d
2460    if {$ok} {ict_match_token d}
2461    ier_merge $old
2462
2463    if {!$ok} {icl_rewind $pos ; return}
2464
2465    set old [ier_get]
2466    ict_advance e
2467    if {$ok} {ict_match_token e}
2468    ier_merge $old
2469
2470    if {!$ok} {icl_rewind $pos ; return}
2471
2472    set old [ier_get]
2473    ict_advance f
2474    if {$ok} {ict_match_token f}
2475    ier_merge $old
2476
2477    if {!$ok} {icl_rewind $pos ; return}
2478
2479    set old [ier_get]
2480    matchSymbol_SPACE    ; # (n SPACE)
2481    ier_merge $old
2482
2483    if {!$ok} {icl_rewind $pos ; return}
2484
2485    return
2486}
2487
2488proc ::page::parse::lemon::matchSymbol_DIFNDEF {} {
2489    # DIFNDEF = (x (t %)
2490    #              (t i)
2491    #              (t f)
2492    #              (t n)
2493    #              (t d)
2494    #              (t e)
2495    #              (t f)
2496    #              (n SPACE))
2497
2498    if {[inc_restore DIFNDEF]} return
2499
2500    set pos [icl_get]
2501
2502    eseq81                ; # (x (t %)
2503                            #    (t i)
2504                            #    (t f)
2505                            #    (t n)
2506                            #    (t d)
2507                            #    (t e)
2508                            #    (t f)
2509                            #    (n SPACE))
2510
2511    isv_clear
2512    inc_save               DIFNDEF $pos
2513    ier_nonterminal        DIFNDEF $pos
2514    return
2515}
2516
2517proc ::page::parse::lemon::eseq81 {} {
2518
2519    # (x (t %)
2520    #    (t i)
2521    #    (t f)
2522    #    (t n)
2523    #    (t d)
2524    #    (t e)
2525    #    (t f)
2526    #    (n SPACE))
2527
2528    variable ok
2529
2530    set pos [icl_get]
2531
2532    set old [ier_get]
2533    ict_advance %
2534    if {$ok} {ict_match_token %}
2535    ier_merge $old
2536
2537    if {!$ok} {icl_rewind $pos ; return}
2538
2539    set old [ier_get]
2540    ict_advance i
2541    if {$ok} {ict_match_token i}
2542    ier_merge $old
2543
2544    if {!$ok} {icl_rewind $pos ; return}
2545
2546    set old [ier_get]
2547    ict_advance f
2548    if {$ok} {ict_match_token f}
2549    ier_merge $old
2550
2551    if {!$ok} {icl_rewind $pos ; return}
2552
2553    set old [ier_get]
2554    ict_advance n
2555    if {$ok} {ict_match_token n}
2556    ier_merge $old
2557
2558    if {!$ok} {icl_rewind $pos ; return}
2559
2560    set old [ier_get]
2561    ict_advance d
2562    if {$ok} {ict_match_token d}
2563    ier_merge $old
2564
2565    if {!$ok} {icl_rewind $pos ; return}
2566
2567    set old [ier_get]
2568    ict_advance e
2569    if {$ok} {ict_match_token e}
2570    ier_merge $old
2571
2572    if {!$ok} {icl_rewind $pos ; return}
2573
2574    set old [ier_get]
2575    ict_advance f
2576    if {$ok} {ict_match_token f}
2577    ier_merge $old
2578
2579    if {!$ok} {icl_rewind $pos ; return}
2580
2581    set old [ier_get]
2582    matchSymbol_SPACE    ; # (n SPACE)
2583    ier_merge $old
2584
2585    if {!$ok} {icl_rewind $pos ; return}
2586
2587    return
2588}
2589
2590proc ::page::parse::lemon::matchSymbol_DINCL {} {
2591    # DINCL = (x (t i)
2592    #            (t n)
2593    #            (t c)
2594    #            (t l)
2595    #            (t u)
2596    #            (t d)
2597    #            (t e)
2598    #            (n SPACE))
2599
2600    if {[inc_restore DINCL]} return
2601
2602    set pos [icl_get]
2603
2604    eseq64                ; # (x (t i)
2605                            #    (t n)
2606                            #    (t c)
2607                            #    (t l)
2608                            #    (t u)
2609                            #    (t d)
2610                            #    (t e)
2611                            #    (n SPACE))
2612
2613    isv_clear
2614    inc_save               DINCL $pos
2615    ier_nonterminal        DINCL $pos
2616    return
2617}
2618
2619proc ::page::parse::lemon::eseq64 {} {
2620
2621    # (x (t i)
2622    #    (t n)
2623    #    (t c)
2624    #    (t l)
2625    #    (t u)
2626    #    (t d)
2627    #    (t e)
2628    #    (n SPACE))
2629
2630    variable ok
2631
2632    set pos [icl_get]
2633
2634    set old [ier_get]
2635    ict_advance i
2636    if {$ok} {ict_match_token i}
2637    ier_merge $old
2638
2639    if {!$ok} {icl_rewind $pos ; return}
2640
2641    set old [ier_get]
2642    ict_advance n
2643    if {$ok} {ict_match_token n}
2644    ier_merge $old
2645
2646    if {!$ok} {icl_rewind $pos ; return}
2647
2648    set old [ier_get]
2649    ict_advance c
2650    if {$ok} {ict_match_token c}
2651    ier_merge $old
2652
2653    if {!$ok} {icl_rewind $pos ; return}
2654
2655    set old [ier_get]
2656    ict_advance l
2657    if {$ok} {ict_match_token l}
2658    ier_merge $old
2659
2660    if {!$ok} {icl_rewind $pos ; return}
2661
2662    set old [ier_get]
2663    ict_advance u
2664    if {$ok} {ict_match_token u}
2665    ier_merge $old
2666
2667    if {!$ok} {icl_rewind $pos ; return}
2668
2669    set old [ier_get]
2670    ict_advance d
2671    if {$ok} {ict_match_token d}
2672    ier_merge $old
2673
2674    if {!$ok} {icl_rewind $pos ; return}
2675
2676    set old [ier_get]
2677    ict_advance e
2678    if {$ok} {ict_match_token e}
2679    ier_merge $old
2680
2681    if {!$ok} {icl_rewind $pos ; return}
2682
2683    set old [ier_get]
2684    matchSymbol_SPACE    ; # (n SPACE)
2685    ier_merge $old
2686
2687    if {!$ok} {icl_rewind $pos ; return}
2688
2689    return
2690}
2691
2692proc ::page::parse::lemon::matchSymbol_DINTRO {} {
2693    # DINTRO = (t %)
2694
2695    variable ok
2696    if {[inc_restore DINTRO]} return
2697
2698    set pos [icl_get]
2699
2700    ict_advance %
2701    if {$ok} {ict_match_token %}
2702
2703    isv_clear
2704    inc_save               DINTRO $pos
2705    ier_nonterminal        DINTRO $pos
2706    return
2707}
2708
2709proc ::page::parse::lemon::matchSymbol_Directive {} {
2710    # Directive = (x (n DINTRO)
2711    #                (/ (n Code)
2712    #                   (n DefaultDestructor)
2713    #                   (n DefaultType)
2714    #                   (n Destructor)
2715    #                   (n ExtraArgument)
2716    #                   (n Include)
2717    #                   (n Left)
2718    #                   (n Name)
2719    #                   (n Nonassoc)
2720    #                   (n ParseAccept)
2721    #                   (n ParseFailure)
2722    #                   (n Right)
2723    #                   (n StackOverflow)
2724    #                   (n Stacksize)
2725    #                   (n StartSymbol)
2726    #                   (n SyntaxError)
2727    #                   (n TokenDestructor)
2728    #                   (n TokenPrefix)
2729    #                   (n TokenType)
2730    #                   (n Type)
2731    #                   (n Fallback)))
2732
2733    variable ok
2734    if {[inc_restore Directive]} {
2735        if {$ok} ias_push
2736        return
2737    }
2738
2739    set pos [icl_get]
2740    set mrk [ias_mark]
2741
2742    eseq15                ; # (x (n DINTRO)
2743                            #    (/ (n Code)
2744                            #       (n DefaultDestructor)
2745                            #       (n DefaultType)
2746                            #       (n Destructor)
2747                            #       (n ExtraArgument)
2748                            #       (n Include)
2749                            #       (n Left)
2750                            #       (n Name)
2751                            #       (n Nonassoc)
2752                            #       (n ParseAccept)
2753                            #       (n ParseFailure)
2754                            #       (n Right)
2755                            #       (n StackOverflow)
2756                            #       (n Stacksize)
2757                            #       (n StartSymbol)
2758                            #       (n SyntaxError)
2759                            #       (n TokenDestructor)
2760                            #       (n TokenPrefix)
2761                            #       (n TokenType)
2762                            #       (n Type)
2763                            #       (n Fallback)))
2764
2765    isv_nonterminal_reduce Directive $pos $mrk
2766    inc_save               Directive $pos
2767    ias_pop2mark             $mrk
2768    if {$ok} ias_push
2769    ier_nonterminal        Directive $pos
2770    return
2771}
2772
2773proc ::page::parse::lemon::eseq15 {} {
2774
2775    # (x (n DINTRO)
2776    #    (/ (n Code)
2777    #       (n DefaultDestructor)
2778    #       (n DefaultType)
2779    #       (n Destructor)
2780    #       (n ExtraArgument)
2781    #       (n Include)
2782    #       (n Left)
2783    #       (n Name)
2784    #       (n Nonassoc)
2785    #       (n ParseAccept)
2786    #       (n ParseFailure)
2787    #       (n Right)
2788    #       (n StackOverflow)
2789    #       (n Stacksize)
2790    #       (n StartSymbol)
2791    #       (n SyntaxError)
2792    #       (n TokenDestructor)
2793    #       (n TokenPrefix)
2794    #       (n TokenType)
2795    #       (n Type)
2796    #       (n Fallback)))
2797
2798    variable ok
2799
2800    set pos [icl_get]
2801
2802    set old [ier_get]
2803    matchSymbol_DINTRO    ; # (n DINTRO)
2804    ier_merge $old
2805
2806    if {!$ok} {icl_rewind $pos ; return}
2807
2808    set mrk [ias_mark]
2809
2810    set old [ier_get]
2811    ebra14                ; # (/ (n Code)
2812                            #    (n DefaultDestructor)
2813                            #    (n DefaultType)
2814                            #    (n Destructor)
2815                            #    (n ExtraArgument)
2816                            #    (n Include)
2817                            #    (n Left)
2818                            #    (n Name)
2819                            #    (n Nonassoc)
2820                            #    (n ParseAccept)
2821                            #    (n ParseFailure)
2822                            #    (n Right)
2823                            #    (n StackOverflow)
2824                            #    (n Stacksize)
2825                            #    (n StartSymbol)
2826                            #    (n SyntaxError)
2827                            #    (n TokenDestructor)
2828                            #    (n TokenPrefix)
2829                            #    (n TokenType)
2830                            #    (n Type)
2831                            #    (n Fallback))
2832    ier_merge $old
2833
2834    if {!$ok} {
2835        ias_pop2mark $mrk
2836        icl_rewind   $pos
2837        return
2838    }
2839
2840    return
2841}
2842
2843proc ::page::parse::lemon::ebra14 {} {
2844
2845    # (/ (n Code)
2846    #    (n DefaultDestructor)
2847    #    (n DefaultType)
2848    #    (n Destructor)
2849    #    (n ExtraArgument)
2850    #    (n Include)
2851    #    (n Left)
2852    #    (n Name)
2853    #    (n Nonassoc)
2854    #    (n ParseAccept)
2855    #    (n ParseFailure)
2856    #    (n Right)
2857    #    (n StackOverflow)
2858    #    (n Stacksize)
2859    #    (n StartSymbol)
2860    #    (n SyntaxError)
2861    #    (n TokenDestructor)
2862    #    (n TokenPrefix)
2863    #    (n TokenType)
2864    #    (n Type)
2865    #    (n Fallback))
2866
2867    variable ok
2868
2869    set pos [icl_get]
2870
2871    set mrk [ias_mark]
2872    set old [ier_get]
2873    matchSymbol_Code    ; # (n Code)
2874    ier_merge $old
2875
2876    if {$ok} return
2877    ias_pop2mark $mrk
2878    icl_rewind   $pos
2879
2880    set mrk [ias_mark]
2881    set old [ier_get]
2882    matchSymbol_DefaultDestructor    ; # (n DefaultDestructor)
2883    ier_merge $old
2884
2885    if {$ok} return
2886    ias_pop2mark $mrk
2887    icl_rewind   $pos
2888
2889    set mrk [ias_mark]
2890    set old [ier_get]
2891    matchSymbol_DefaultType    ; # (n DefaultType)
2892    ier_merge $old
2893
2894    if {$ok} return
2895    ias_pop2mark $mrk
2896    icl_rewind   $pos
2897
2898    set mrk [ias_mark]
2899    set old [ier_get]
2900    matchSymbol_Destructor    ; # (n Destructor)
2901    ier_merge $old
2902
2903    if {$ok} return
2904    ias_pop2mark $mrk
2905    icl_rewind   $pos
2906
2907    set mrk [ias_mark]
2908    set old [ier_get]
2909    matchSymbol_ExtraArgument    ; # (n ExtraArgument)
2910    ier_merge $old
2911
2912    if {$ok} return
2913    ias_pop2mark $mrk
2914    icl_rewind   $pos
2915
2916    set mrk [ias_mark]
2917    set old [ier_get]
2918    matchSymbol_Include    ; # (n Include)
2919    ier_merge $old
2920
2921    if {$ok} return
2922    ias_pop2mark $mrk
2923    icl_rewind   $pos
2924
2925    set mrk [ias_mark]
2926    set old [ier_get]
2927    matchSymbol_Left    ; # (n Left)
2928    ier_merge $old
2929
2930    if {$ok} return
2931    ias_pop2mark $mrk
2932    icl_rewind   $pos
2933
2934    set mrk [ias_mark]
2935    set old [ier_get]
2936    matchSymbol_Name    ; # (n Name)
2937    ier_merge $old
2938
2939    if {$ok} return
2940    ias_pop2mark $mrk
2941    icl_rewind   $pos
2942
2943    set mrk [ias_mark]
2944    set old [ier_get]
2945    matchSymbol_Nonassoc    ; # (n Nonassoc)
2946    ier_merge $old
2947
2948    if {$ok} return
2949    ias_pop2mark $mrk
2950    icl_rewind   $pos
2951
2952    set mrk [ias_mark]
2953    set old [ier_get]
2954    matchSymbol_ParseAccept    ; # (n ParseAccept)
2955    ier_merge $old
2956
2957    if {$ok} return
2958    ias_pop2mark $mrk
2959    icl_rewind   $pos
2960
2961    set mrk [ias_mark]
2962    set old [ier_get]
2963    matchSymbol_ParseFailure    ; # (n ParseFailure)
2964    ier_merge $old
2965
2966    if {$ok} return
2967    ias_pop2mark $mrk
2968    icl_rewind   $pos
2969
2970    set mrk [ias_mark]
2971    set old [ier_get]
2972    matchSymbol_Right    ; # (n Right)
2973    ier_merge $old
2974
2975    if {$ok} return
2976    ias_pop2mark $mrk
2977    icl_rewind   $pos
2978
2979    set mrk [ias_mark]
2980    set old [ier_get]
2981    matchSymbol_StackOverflow    ; # (n StackOverflow)
2982    ier_merge $old
2983
2984    if {$ok} return
2985    ias_pop2mark $mrk
2986    icl_rewind   $pos
2987
2988    set mrk [ias_mark]
2989    set old [ier_get]
2990    matchSymbol_Stacksize    ; # (n Stacksize)
2991    ier_merge $old
2992
2993    if {$ok} return
2994    ias_pop2mark $mrk
2995    icl_rewind   $pos
2996
2997    set mrk [ias_mark]
2998    set old [ier_get]
2999    matchSymbol_StartSymbol    ; # (n StartSymbol)
3000    ier_merge $old
3001
3002    if {$ok} return
3003    ias_pop2mark $mrk
3004    icl_rewind   $pos
3005
3006    set mrk [ias_mark]
3007    set old [ier_get]
3008    matchSymbol_SyntaxError    ; # (n SyntaxError)
3009    ier_merge $old
3010
3011    if {$ok} return
3012    ias_pop2mark $mrk
3013    icl_rewind   $pos
3014
3015    set mrk [ias_mark]
3016    set old [ier_get]
3017    matchSymbol_TokenDestructor    ; # (n TokenDestructor)
3018    ier_merge $old
3019
3020    if {$ok} return
3021    ias_pop2mark $mrk
3022    icl_rewind   $pos
3023
3024    set mrk [ias_mark]
3025    set old [ier_get]
3026    matchSymbol_TokenPrefix    ; # (n TokenPrefix)
3027    ier_merge $old
3028
3029    if {$ok} return
3030    ias_pop2mark $mrk
3031    icl_rewind   $pos
3032
3033    set mrk [ias_mark]
3034    set old [ier_get]
3035    matchSymbol_TokenType    ; # (n TokenType)
3036    ier_merge $old
3037
3038    if {$ok} return
3039    ias_pop2mark $mrk
3040    icl_rewind   $pos
3041
3042    set mrk [ias_mark]
3043    set old [ier_get]
3044    matchSymbol_Type    ; # (n Type)
3045    ier_merge $old
3046
3047    if {$ok} return
3048    ias_pop2mark $mrk
3049    icl_rewind   $pos
3050
3051    set mrk [ias_mark]
3052    set old [ier_get]
3053    matchSymbol_Fallback    ; # (n Fallback)
3054    ier_merge $old
3055
3056    if {$ok} return
3057    ias_pop2mark $mrk
3058    icl_rewind   $pos
3059
3060    return
3061}
3062
3063proc ::page::parse::lemon::matchSymbol_DLEFT {} {
3064    # DLEFT = (x (t l)
3065    #            (t e)
3066    #            (t f)
3067    #            (t t)
3068    #            (n SPACE))
3069
3070    if {[inc_restore DLEFT]} return
3071
3072    set pos [icl_get]
3073
3074    eseq65                ; # (x (t l)
3075                            #    (t e)
3076                            #    (t f)
3077                            #    (t t)
3078                            #    (n SPACE))
3079
3080    isv_clear
3081    inc_save               DLEFT $pos
3082    ier_nonterminal        DLEFT $pos
3083    return
3084}
3085
3086proc ::page::parse::lemon::eseq65 {} {
3087
3088    # (x (t l)
3089    #    (t e)
3090    #    (t f)
3091    #    (t t)
3092    #    (n SPACE))
3093
3094    variable ok
3095
3096    set pos [icl_get]
3097
3098    set old [ier_get]
3099    ict_advance l
3100    if {$ok} {ict_match_token l}
3101    ier_merge $old
3102
3103    if {!$ok} {icl_rewind $pos ; return}
3104
3105    set old [ier_get]
3106    ict_advance e
3107    if {$ok} {ict_match_token e}
3108    ier_merge $old
3109
3110    if {!$ok} {icl_rewind $pos ; return}
3111
3112    set old [ier_get]
3113    ict_advance f
3114    if {$ok} {ict_match_token f}
3115    ier_merge $old
3116
3117    if {!$ok} {icl_rewind $pos ; return}
3118
3119    set old [ier_get]
3120    ict_advance t
3121    if {$ok} {ict_match_token t}
3122    ier_merge $old
3123
3124    if {!$ok} {icl_rewind $pos ; return}
3125
3126    set old [ier_get]
3127    matchSymbol_SPACE    ; # (n SPACE)
3128    ier_merge $old
3129
3130    if {!$ok} {icl_rewind $pos ; return}
3131
3132    return
3133}
3134
3135proc ::page::parse::lemon::matchSymbol_DNAME {} {
3136    # DNAME = (x (t n)
3137    #            (t a)
3138    #            (t m)
3139    #            (t e)
3140    #            (n SPACE))
3141
3142    if {[inc_restore DNAME]} return
3143
3144    set pos [icl_get]
3145
3146    eseq66                ; # (x (t n)
3147                            #    (t a)
3148                            #    (t m)
3149                            #    (t e)
3150                            #    (n SPACE))
3151
3152    isv_clear
3153    inc_save               DNAME $pos
3154    ier_nonterminal        DNAME $pos
3155    return
3156}
3157
3158proc ::page::parse::lemon::eseq66 {} {
3159
3160    # (x (t n)
3161    #    (t a)
3162    #    (t m)
3163    #    (t e)
3164    #    (n SPACE))
3165
3166    variable ok
3167
3168    set pos [icl_get]
3169
3170    set old [ier_get]
3171    ict_advance n
3172    if {$ok} {ict_match_token n}
3173    ier_merge $old
3174
3175    if {!$ok} {icl_rewind $pos ; return}
3176
3177    set old [ier_get]
3178    ict_advance a
3179    if {$ok} {ict_match_token a}
3180    ier_merge $old
3181
3182    if {!$ok} {icl_rewind $pos ; return}
3183
3184    set old [ier_get]
3185    ict_advance m
3186    if {$ok} {ict_match_token m}
3187    ier_merge $old
3188
3189    if {!$ok} {icl_rewind $pos ; return}
3190
3191    set old [ier_get]
3192    ict_advance e
3193    if {$ok} {ict_match_token e}
3194    ier_merge $old
3195
3196    if {!$ok} {icl_rewind $pos ; return}
3197
3198    set old [ier_get]
3199    matchSymbol_SPACE    ; # (n SPACE)
3200    ier_merge $old
3201
3202    if {!$ok} {icl_rewind $pos ; return}
3203
3204    return
3205}
3206
3207proc ::page::parse::lemon::matchSymbol_DNON {} {
3208    # DNON = (x (t n)
3209    #           (t o)
3210    #           (t n)
3211    #           (t a)
3212    #           (t s)
3213    #           (t s)
3214    #           (t o)
3215    #           (t c)
3216    #           (n SPACE))
3217
3218    if {[inc_restore DNON]} return
3219
3220    set pos [icl_get]
3221
3222    eseq67                ; # (x (t n)
3223                            #    (t o)
3224                            #    (t n)
3225                            #    (t a)
3226                            #    (t s)
3227                            #    (t s)
3228                            #    (t o)
3229                            #    (t c)
3230                            #    (n SPACE))
3231
3232    isv_clear
3233    inc_save               DNON $pos
3234    ier_nonterminal        DNON $pos
3235    return
3236}
3237
3238proc ::page::parse::lemon::eseq67 {} {
3239
3240    # (x (t n)
3241    #    (t o)
3242    #    (t n)
3243    #    (t a)
3244    #    (t s)
3245    #    (t s)
3246    #    (t o)
3247    #    (t c)
3248    #    (n SPACE))
3249
3250    variable ok
3251
3252    set pos [icl_get]
3253
3254    set old [ier_get]
3255    ict_advance n
3256    if {$ok} {ict_match_token n}
3257    ier_merge $old
3258
3259    if {!$ok} {icl_rewind $pos ; return}
3260
3261    set old [ier_get]
3262    ict_advance o
3263    if {$ok} {ict_match_token o}
3264    ier_merge $old
3265
3266    if {!$ok} {icl_rewind $pos ; return}
3267
3268    set old [ier_get]
3269    ict_advance n
3270    if {$ok} {ict_match_token n}
3271    ier_merge $old
3272
3273    if {!$ok} {icl_rewind $pos ; return}
3274
3275    set old [ier_get]
3276    ict_advance a
3277    if {$ok} {ict_match_token a}
3278    ier_merge $old
3279
3280    if {!$ok} {icl_rewind $pos ; return}
3281
3282    set old [ier_get]
3283    ict_advance s
3284    if {$ok} {ict_match_token s}
3285    ier_merge $old
3286
3287    if {!$ok} {icl_rewind $pos ; return}
3288
3289    set old [ier_get]
3290    ict_advance s
3291    if {$ok} {ict_match_token s}
3292    ier_merge $old
3293
3294    if {!$ok} {icl_rewind $pos ; return}
3295
3296    set old [ier_get]
3297    ict_advance o
3298    if {$ok} {ict_match_token o}
3299    ier_merge $old
3300
3301    if {!$ok} {icl_rewind $pos ; return}
3302
3303    set old [ier_get]
3304    ict_advance c
3305    if {$ok} {ict_match_token c}
3306    ier_merge $old
3307
3308    if {!$ok} {icl_rewind $pos ; return}
3309
3310    set old [ier_get]
3311    matchSymbol_SPACE    ; # (n SPACE)
3312    ier_merge $old
3313
3314    if {!$ok} {icl_rewind $pos ; return}
3315
3316    return
3317}
3318
3319proc ::page::parse::lemon::matchSymbol_DOT {} {
3320    # DOT = (x (t .)
3321    #          (n SPACE))
3322
3323    if {[inc_restore DOT]} return
3324
3325    set pos [icl_get]
3326
3327    eseq54                ; # (x (t .)
3328                            #    (n SPACE))
3329
3330    isv_clear
3331    inc_save               DOT $pos
3332    ier_nonterminal        DOT $pos
3333    return
3334}
3335
3336proc ::page::parse::lemon::eseq54 {} {
3337
3338    # (x (t .)
3339    #    (n SPACE))
3340
3341    variable ok
3342
3343    set pos [icl_get]
3344
3345    set old [ier_get]
3346    ict_advance .
3347    if {$ok} {ict_match_token .}
3348    ier_merge $old
3349
3350    if {!$ok} {icl_rewind $pos ; return}
3351
3352    set old [ier_get]
3353    matchSymbol_SPACE    ; # (n SPACE)
3354    ier_merge $old
3355
3356    if {!$ok} {icl_rewind $pos ; return}
3357
3358    return
3359}
3360
3361proc ::page::parse::lemon::matchSymbol_DPACC {} {
3362    # DPACC = (x (t p)
3363    #            (t a)
3364    #            (t r)
3365    #            (t s)
3366    #            (t e)
3367    #            (t _)
3368    #            (t a)
3369    #            (t c)
3370    #            (t c)
3371    #            (t e)
3372    #            (t p)
3373    #            (t t)
3374    #            (n SPACE))
3375
3376    if {[inc_restore DPACC]} return
3377
3378    set pos [icl_get]
3379
3380    eseq68                ; # (x (t p)
3381                            #    (t a)
3382                            #    (t r)
3383                            #    (t s)
3384                            #    (t e)
3385                            #    (t _)
3386                            #    (t a)
3387                            #    (t c)
3388                            #    (t c)
3389                            #    (t e)
3390                            #    (t p)
3391                            #    (t t)
3392                            #    (n SPACE))
3393
3394    isv_clear
3395    inc_save               DPACC $pos
3396    ier_nonterminal        DPACC $pos
3397    return
3398}
3399
3400proc ::page::parse::lemon::eseq68 {} {
3401
3402    # (x (t p)
3403    #    (t a)
3404    #    (t r)
3405    #    (t s)
3406    #    (t e)
3407    #    (t _)
3408    #    (t a)
3409    #    (t c)
3410    #    (t c)
3411    #    (t e)
3412    #    (t p)
3413    #    (t t)
3414    #    (n SPACE))
3415
3416    variable ok
3417
3418    set pos [icl_get]
3419
3420    set old [ier_get]
3421    ict_advance p
3422    if {$ok} {ict_match_token p}
3423    ier_merge $old
3424
3425    if {!$ok} {icl_rewind $pos ; return}
3426
3427    set old [ier_get]
3428    ict_advance a
3429    if {$ok} {ict_match_token a}
3430    ier_merge $old
3431
3432    if {!$ok} {icl_rewind $pos ; return}
3433
3434    set old [ier_get]
3435    ict_advance r
3436    if {$ok} {ict_match_token r}
3437    ier_merge $old
3438
3439    if {!$ok} {icl_rewind $pos ; return}
3440
3441    set old [ier_get]
3442    ict_advance s
3443    if {$ok} {ict_match_token s}
3444    ier_merge $old
3445
3446    if {!$ok} {icl_rewind $pos ; return}
3447
3448    set old [ier_get]
3449    ict_advance e
3450    if {$ok} {ict_match_token e}
3451    ier_merge $old
3452
3453    if {!$ok} {icl_rewind $pos ; return}
3454
3455    set old [ier_get]
3456    ict_advance _
3457    if {$ok} {ict_match_token _}
3458    ier_merge $old
3459
3460    if {!$ok} {icl_rewind $pos ; return}
3461
3462    set old [ier_get]
3463    ict_advance a
3464    if {$ok} {ict_match_token a}
3465    ier_merge $old
3466
3467    if {!$ok} {icl_rewind $pos ; return}
3468
3469    set old [ier_get]
3470    ict_advance c
3471    if {$ok} {ict_match_token c}
3472    ier_merge $old
3473
3474    if {!$ok} {icl_rewind $pos ; return}
3475
3476    set old [ier_get]
3477    ict_advance c
3478    if {$ok} {ict_match_token c}
3479    ier_merge $old
3480
3481    if {!$ok} {icl_rewind $pos ; return}
3482
3483    set old [ier_get]
3484    ict_advance e
3485    if {$ok} {ict_match_token e}
3486    ier_merge $old
3487
3488    if {!$ok} {icl_rewind $pos ; return}
3489
3490    set old [ier_get]
3491    ict_advance p
3492    if {$ok} {ict_match_token p}
3493    ier_merge $old
3494
3495    if {!$ok} {icl_rewind $pos ; return}
3496
3497    set old [ier_get]
3498    ict_advance t
3499    if {$ok} {ict_match_token t}
3500    ier_merge $old
3501
3502    if {!$ok} {icl_rewind $pos ; return}
3503
3504    set old [ier_get]
3505    matchSymbol_SPACE    ; # (n SPACE)
3506    ier_merge $old
3507
3508    if {!$ok} {icl_rewind $pos ; return}
3509
3510    return
3511}
3512
3513proc ::page::parse::lemon::matchSymbol_DPFAIL {} {
3514    # DPFAIL = (x (t p)
3515    #             (t a)
3516    #             (t r)
3517    #             (t s)
3518    #             (t e)
3519    #             (t _)
3520    #             (t f)
3521    #             (t a)
3522    #             (t i)
3523    #             (t l)
3524    #             (t u)
3525    #             (t r)
3526    #             (t e)
3527    #             (n SPACE))
3528
3529    if {[inc_restore DPFAIL]} return
3530
3531    set pos [icl_get]
3532
3533    eseq69                ; # (x (t p)
3534                            #    (t a)
3535                            #    (t r)
3536                            #    (t s)
3537                            #    (t e)
3538                            #    (t _)
3539                            #    (t f)
3540                            #    (t a)
3541                            #    (t i)
3542                            #    (t l)
3543                            #    (t u)
3544                            #    (t r)
3545                            #    (t e)
3546                            #    (n SPACE))
3547
3548    isv_clear
3549    inc_save               DPFAIL $pos
3550    ier_nonterminal        DPFAIL $pos
3551    return
3552}
3553
3554proc ::page::parse::lemon::eseq69 {} {
3555
3556    # (x (t p)
3557    #    (t a)
3558    #    (t r)
3559    #    (t s)
3560    #    (t e)
3561    #    (t _)
3562    #    (t f)
3563    #    (t a)
3564    #    (t i)
3565    #    (t l)
3566    #    (t u)
3567    #    (t r)
3568    #    (t e)
3569    #    (n SPACE))
3570
3571    variable ok
3572
3573    set pos [icl_get]
3574
3575    set old [ier_get]
3576    ict_advance p
3577    if {$ok} {ict_match_token p}
3578    ier_merge $old
3579
3580    if {!$ok} {icl_rewind $pos ; return}
3581
3582    set old [ier_get]
3583    ict_advance a
3584    if {$ok} {ict_match_token a}
3585    ier_merge $old
3586
3587    if {!$ok} {icl_rewind $pos ; return}
3588
3589    set old [ier_get]
3590    ict_advance r
3591    if {$ok} {ict_match_token r}
3592    ier_merge $old
3593
3594    if {!$ok} {icl_rewind $pos ; return}
3595
3596    set old [ier_get]
3597    ict_advance s
3598    if {$ok} {ict_match_token s}
3599    ier_merge $old
3600
3601    if {!$ok} {icl_rewind $pos ; return}
3602
3603    set old [ier_get]
3604    ict_advance e
3605    if {$ok} {ict_match_token e}
3606    ier_merge $old
3607
3608    if {!$ok} {icl_rewind $pos ; return}
3609
3610    set old [ier_get]
3611    ict_advance _
3612    if {$ok} {ict_match_token _}
3613    ier_merge $old
3614
3615    if {!$ok} {icl_rewind $pos ; return}
3616
3617    set old [ier_get]
3618    ict_advance f
3619    if {$ok} {ict_match_token f}
3620    ier_merge $old
3621
3622    if {!$ok} {icl_rewind $pos ; return}
3623
3624    set old [ier_get]
3625    ict_advance a
3626    if {$ok} {ict_match_token a}
3627    ier_merge $old
3628
3629    if {!$ok} {icl_rewind $pos ; return}
3630
3631    set old [ier_get]
3632    ict_advance i
3633    if {$ok} {ict_match_token i}
3634    ier_merge $old
3635
3636    if {!$ok} {icl_rewind $pos ; return}
3637
3638    set old [ier_get]
3639    ict_advance l
3640    if {$ok} {ict_match_token l}
3641    ier_merge $old
3642
3643    if {!$ok} {icl_rewind $pos ; return}
3644
3645    set old [ier_get]
3646    ict_advance u
3647    if {$ok} {ict_match_token u}
3648    ier_merge $old
3649
3650    if {!$ok} {icl_rewind $pos ; return}
3651
3652    set old [ier_get]
3653    ict_advance r
3654    if {$ok} {ict_match_token r}
3655    ier_merge $old
3656
3657    if {!$ok} {icl_rewind $pos ; return}
3658
3659    set old [ier_get]
3660    ict_advance e
3661    if {$ok} {ict_match_token e}
3662    ier_merge $old
3663
3664    if {!$ok} {icl_rewind $pos ; return}
3665
3666    set old [ier_get]
3667    matchSymbol_SPACE    ; # (n SPACE)
3668    ier_merge $old
3669
3670    if {!$ok} {icl_rewind $pos ; return}
3671
3672    return
3673}
3674
3675proc ::page::parse::lemon::matchSymbol_DRIGHT {} {
3676    # DRIGHT = (x (t r)
3677    #             (t i)
3678    #             (t g)
3679    #             (t h)
3680    #             (t t)
3681    #             (n SPACE))
3682
3683    if {[inc_restore DRIGHT]} return
3684
3685    set pos [icl_get]
3686
3687    eseq70                ; # (x (t r)
3688                            #    (t i)
3689                            #    (t g)
3690                            #    (t h)
3691                            #    (t t)
3692                            #    (n SPACE))
3693
3694    isv_clear
3695    inc_save               DRIGHT $pos
3696    ier_nonterminal        DRIGHT $pos
3697    return
3698}
3699
3700proc ::page::parse::lemon::eseq70 {} {
3701
3702    # (x (t r)
3703    #    (t i)
3704    #    (t g)
3705    #    (t h)
3706    #    (t t)
3707    #    (n SPACE))
3708
3709    variable ok
3710
3711    set pos [icl_get]
3712
3713    set old [ier_get]
3714    ict_advance r
3715    if {$ok} {ict_match_token r}
3716    ier_merge $old
3717
3718    if {!$ok} {icl_rewind $pos ; return}
3719
3720    set old [ier_get]
3721    ict_advance i
3722    if {$ok} {ict_match_token i}
3723    ier_merge $old
3724
3725    if {!$ok} {icl_rewind $pos ; return}
3726
3727    set old [ier_get]
3728    ict_advance g
3729    if {$ok} {ict_match_token g}
3730    ier_merge $old
3731
3732    if {!$ok} {icl_rewind $pos ; return}
3733
3734    set old [ier_get]
3735    ict_advance h
3736    if {$ok} {ict_match_token h}
3737    ier_merge $old
3738
3739    if {!$ok} {icl_rewind $pos ; return}
3740
3741    set old [ier_get]
3742    ict_advance t
3743    if {$ok} {ict_match_token t}
3744    ier_merge $old
3745
3746    if {!$ok} {icl_rewind $pos ; return}
3747
3748    set old [ier_get]
3749    matchSymbol_SPACE    ; # (n SPACE)
3750    ier_merge $old
3751
3752    if {!$ok} {icl_rewind $pos ; return}
3753
3754    return
3755}
3756
3757proc ::page::parse::lemon::matchSymbol_DSTART {} {
3758    # DSTART = (x (t s)
3759    #             (t t)
3760    #             (t a)
3761    #             (t r)
3762    #             (t t)
3763    #             (t _)
3764    #             (t s)
3765    #             (t y)
3766    #             (t m)
3767    #             (t b)
3768    #             (t o)
3769    #             (t l)
3770    #             (n SPACE))
3771
3772    if {[inc_restore DSTART]} return
3773
3774    set pos [icl_get]
3775
3776    eseq73                ; # (x (t s)
3777                            #    (t t)
3778                            #    (t a)
3779                            #    (t r)
3780                            #    (t t)
3781                            #    (t _)
3782                            #    (t s)
3783                            #    (t y)
3784                            #    (t m)
3785                            #    (t b)
3786                            #    (t o)
3787                            #    (t l)
3788                            #    (n SPACE))
3789
3790    isv_clear
3791    inc_save               DSTART $pos
3792    ier_nonterminal        DSTART $pos
3793    return
3794}
3795
3796proc ::page::parse::lemon::eseq73 {} {
3797
3798    # (x (t s)
3799    #    (t t)
3800    #    (t a)
3801    #    (t r)
3802    #    (t t)
3803    #    (t _)
3804    #    (t s)
3805    #    (t y)
3806    #    (t m)
3807    #    (t b)
3808    #    (t o)
3809    #    (t l)
3810    #    (n SPACE))
3811
3812    variable ok
3813
3814    set pos [icl_get]
3815
3816    set old [ier_get]
3817    ict_advance s
3818    if {$ok} {ict_match_token s}
3819    ier_merge $old
3820
3821    if {!$ok} {icl_rewind $pos ; return}
3822
3823    set old [ier_get]
3824    ict_advance t
3825    if {$ok} {ict_match_token t}
3826    ier_merge $old
3827
3828    if {!$ok} {icl_rewind $pos ; return}
3829
3830    set old [ier_get]
3831    ict_advance a
3832    if {$ok} {ict_match_token a}
3833    ier_merge $old
3834
3835    if {!$ok} {icl_rewind $pos ; return}
3836
3837    set old [ier_get]
3838    ict_advance r
3839    if {$ok} {ict_match_token r}
3840    ier_merge $old
3841
3842    if {!$ok} {icl_rewind $pos ; return}
3843
3844    set old [ier_get]
3845    ict_advance t
3846    if {$ok} {ict_match_token t}
3847    ier_merge $old
3848
3849    if {!$ok} {icl_rewind $pos ; return}
3850
3851    set old [ier_get]
3852    ict_advance _
3853    if {$ok} {ict_match_token _}
3854    ier_merge $old
3855
3856    if {!$ok} {icl_rewind $pos ; return}
3857
3858    set old [ier_get]
3859    ict_advance s
3860    if {$ok} {ict_match_token s}
3861    ier_merge $old
3862
3863    if {!$ok} {icl_rewind $pos ; return}
3864
3865    set old [ier_get]
3866    ict_advance y
3867    if {$ok} {ict_match_token y}
3868    ier_merge $old
3869
3870    if {!$ok} {icl_rewind $pos ; return}
3871
3872    set old [ier_get]
3873    ict_advance m
3874    if {$ok} {ict_match_token m}
3875    ier_merge $old
3876
3877    if {!$ok} {icl_rewind $pos ; return}
3878
3879    set old [ier_get]
3880    ict_advance b
3881    if {$ok} {ict_match_token b}
3882    ier_merge $old
3883
3884    if {!$ok} {icl_rewind $pos ; return}
3885
3886    set old [ier_get]
3887    ict_advance o
3888    if {$ok} {ict_match_token o}
3889    ier_merge $old
3890
3891    if {!$ok} {icl_rewind $pos ; return}
3892
3893    set old [ier_get]
3894    ict_advance l
3895    if {$ok} {ict_match_token l}
3896    ier_merge $old
3897
3898    if {!$ok} {icl_rewind $pos ; return}
3899
3900    set old [ier_get]
3901    matchSymbol_SPACE    ; # (n SPACE)
3902    ier_merge $old
3903
3904    if {!$ok} {icl_rewind $pos ; return}
3905
3906    return
3907}
3908
3909proc ::page::parse::lemon::matchSymbol_DSTKOVER {} {
3910    # DSTKOVER = (x (t s)
3911    #               (t t)
3912    #               (t a)
3913    #               (t c)
3914    #               (t k)
3915    #               (t _)
3916    #               (t o)
3917    #               (t v)
3918    #               (t e)
3919    #               (t r)
3920    #               (t f)
3921    #               (t l)
3922    #               (t o)
3923    #               (t w)
3924    #               (n SPACE))
3925
3926    if {[inc_restore DSTKOVER]} return
3927
3928    set pos [icl_get]
3929
3930    eseq71                ; # (x (t s)
3931                            #    (t t)
3932                            #    (t a)
3933                            #    (t c)
3934                            #    (t k)
3935                            #    (t _)
3936                            #    (t o)
3937                            #    (t v)
3938                            #    (t e)
3939                            #    (t r)
3940                            #    (t f)
3941                            #    (t l)
3942                            #    (t o)
3943                            #    (t w)
3944                            #    (n SPACE))
3945
3946    isv_clear
3947    inc_save               DSTKOVER $pos
3948    ier_nonterminal        DSTKOVER $pos
3949    return
3950}
3951
3952proc ::page::parse::lemon::eseq71 {} {
3953
3954    # (x (t s)
3955    #    (t t)
3956    #    (t a)
3957    #    (t c)
3958    #    (t k)
3959    #    (t _)
3960    #    (t o)
3961    #    (t v)
3962    #    (t e)
3963    #    (t r)
3964    #    (t f)
3965    #    (t l)
3966    #    (t o)
3967    #    (t w)
3968    #    (n SPACE))
3969
3970    variable ok
3971
3972    set pos [icl_get]
3973
3974    set old [ier_get]
3975    ict_advance s
3976    if {$ok} {ict_match_token s}
3977    ier_merge $old
3978
3979    if {!$ok} {icl_rewind $pos ; return}
3980
3981    set old [ier_get]
3982    ict_advance t
3983    if {$ok} {ict_match_token t}
3984    ier_merge $old
3985
3986    if {!$ok} {icl_rewind $pos ; return}
3987
3988    set old [ier_get]
3989    ict_advance a
3990    if {$ok} {ict_match_token a}
3991    ier_merge $old
3992
3993    if {!$ok} {icl_rewind $pos ; return}
3994
3995    set old [ier_get]
3996    ict_advance c
3997    if {$ok} {ict_match_token c}
3998    ier_merge $old
3999
4000    if {!$ok} {icl_rewind $pos ; return}
4001
4002    set old [ier_get]
4003    ict_advance k
4004    if {$ok} {ict_match_token k}
4005    ier_merge $old
4006
4007    if {!$ok} {icl_rewind $pos ; return}
4008
4009    set old [ier_get]
4010    ict_advance _
4011    if {$ok} {ict_match_token _}
4012    ier_merge $old
4013
4014    if {!$ok} {icl_rewind $pos ; return}
4015
4016    set old [ier_get]
4017    ict_advance o
4018    if {$ok} {ict_match_token o}
4019    ier_merge $old
4020
4021    if {!$ok} {icl_rewind $pos ; return}
4022
4023    set old [ier_get]
4024    ict_advance v
4025    if {$ok} {ict_match_token v}
4026    ier_merge $old
4027
4028    if {!$ok} {icl_rewind $pos ; return}
4029
4030    set old [ier_get]
4031    ict_advance e
4032    if {$ok} {ict_match_token e}
4033    ier_merge $old
4034
4035    if {!$ok} {icl_rewind $pos ; return}
4036
4037    set old [ier_get]
4038    ict_advance r
4039    if {$ok} {ict_match_token r}
4040    ier_merge $old
4041
4042    if {!$ok} {icl_rewind $pos ; return}
4043
4044    set old [ier_get]
4045    ict_advance f
4046    if {$ok} {ict_match_token f}
4047    ier_merge $old
4048
4049    if {!$ok} {icl_rewind $pos ; return}
4050
4051    set old [ier_get]
4052    ict_advance l
4053    if {$ok} {ict_match_token l}
4054    ier_merge $old
4055
4056    if {!$ok} {icl_rewind $pos ; return}
4057
4058    set old [ier_get]
4059    ict_advance o
4060    if {$ok} {ict_match_token o}
4061    ier_merge $old
4062
4063    if {!$ok} {icl_rewind $pos ; return}
4064
4065    set old [ier_get]
4066    ict_advance w
4067    if {$ok} {ict_match_token w}
4068    ier_merge $old
4069
4070    if {!$ok} {icl_rewind $pos ; return}
4071
4072    set old [ier_get]
4073    matchSymbol_SPACE    ; # (n SPACE)
4074    ier_merge $old
4075
4076    if {!$ok} {icl_rewind $pos ; return}
4077
4078    return
4079}
4080
4081proc ::page::parse::lemon::matchSymbol_DSTKSZ {} {
4082    # DSTKSZ = (x (t s)
4083    #             (t t)
4084    #             (t a)
4085    #             (t c)
4086    #             (t k)
4087    #             (t _)
4088    #             (t s)
4089    #             (t i)
4090    #             (t z)
4091    #             (t e)
4092    #             (n SPACE))
4093
4094    if {[inc_restore DSTKSZ]} return
4095
4096    set pos [icl_get]
4097
4098    eseq72                ; # (x (t s)
4099                            #    (t t)
4100                            #    (t a)
4101                            #    (t c)
4102                            #    (t k)
4103                            #    (t _)
4104                            #    (t s)
4105                            #    (t i)
4106                            #    (t z)
4107                            #    (t e)
4108                            #    (n SPACE))
4109
4110    isv_clear
4111    inc_save               DSTKSZ $pos
4112    ier_nonterminal        DSTKSZ $pos
4113    return
4114}
4115
4116proc ::page::parse::lemon::eseq72 {} {
4117
4118    # (x (t s)
4119    #    (t t)
4120    #    (t a)
4121    #    (t c)
4122    #    (t k)
4123    #    (t _)
4124    #    (t s)
4125    #    (t i)
4126    #    (t z)
4127    #    (t e)
4128    #    (n SPACE))
4129
4130    variable ok
4131
4132    set pos [icl_get]
4133
4134    set old [ier_get]
4135    ict_advance s
4136    if {$ok} {ict_match_token s}
4137    ier_merge $old
4138
4139    if {!$ok} {icl_rewind $pos ; return}
4140
4141    set old [ier_get]
4142    ict_advance t
4143    if {$ok} {ict_match_token t}
4144    ier_merge $old
4145
4146    if {!$ok} {icl_rewind $pos ; return}
4147
4148    set old [ier_get]
4149    ict_advance a
4150    if {$ok} {ict_match_token a}
4151    ier_merge $old
4152
4153    if {!$ok} {icl_rewind $pos ; return}
4154
4155    set old [ier_get]
4156    ict_advance c
4157    if {$ok} {ict_match_token c}
4158    ier_merge $old
4159
4160    if {!$ok} {icl_rewind $pos ; return}
4161
4162    set old [ier_get]
4163    ict_advance k
4164    if {$ok} {ict_match_token k}
4165    ier_merge $old
4166
4167    if {!$ok} {icl_rewind $pos ; return}
4168
4169    set old [ier_get]
4170    ict_advance _
4171    if {$ok} {ict_match_token _}
4172    ier_merge $old
4173
4174    if {!$ok} {icl_rewind $pos ; return}
4175
4176    set old [ier_get]
4177    ict_advance s
4178    if {$ok} {ict_match_token s}
4179    ier_merge $old
4180
4181    if {!$ok} {icl_rewind $pos ; return}
4182
4183    set old [ier_get]
4184    ict_advance i
4185    if {$ok} {ict_match_token i}
4186    ier_merge $old
4187
4188    if {!$ok} {icl_rewind $pos ; return}
4189
4190    set old [ier_get]
4191    ict_advance z
4192    if {$ok} {ict_match_token z}
4193    ier_merge $old
4194
4195    if {!$ok} {icl_rewind $pos ; return}
4196
4197    set old [ier_get]
4198    ict_advance e
4199    if {$ok} {ict_match_token e}
4200    ier_merge $old
4201
4202    if {!$ok} {icl_rewind $pos ; return}
4203
4204    set old [ier_get]
4205    matchSymbol_SPACE    ; # (n SPACE)
4206    ier_merge $old
4207
4208    if {!$ok} {icl_rewind $pos ; return}
4209
4210    return
4211}
4212
4213proc ::page::parse::lemon::matchSymbol_DSYNERR {} {
4214    # DSYNERR = (x (t s)
4215    #              (t y)
4216    #              (t n)
4217    #              (t t)
4218    #              (t a)
4219    #              (t x)
4220    #              (t _)
4221    #              (t e)
4222    #              (t r)
4223    #              (t r)
4224    #              (t o)
4225    #              (t r)
4226    #              (n SPACE))
4227
4228    if {[inc_restore DSYNERR]} return
4229
4230    set pos [icl_get]
4231
4232    eseq74                ; # (x (t s)
4233                            #    (t y)
4234                            #    (t n)
4235                            #    (t t)
4236                            #    (t a)
4237                            #    (t x)
4238                            #    (t _)
4239                            #    (t e)
4240                            #    (t r)
4241                            #    (t r)
4242                            #    (t o)
4243                            #    (t r)
4244                            #    (n SPACE))
4245
4246    isv_clear
4247    inc_save               DSYNERR $pos
4248    ier_nonterminal        DSYNERR $pos
4249    return
4250}
4251
4252proc ::page::parse::lemon::eseq74 {} {
4253
4254    # (x (t s)
4255    #    (t y)
4256    #    (t n)
4257    #    (t t)
4258    #    (t a)
4259    #    (t x)
4260    #    (t _)
4261    #    (t e)
4262    #    (t r)
4263    #    (t r)
4264    #    (t o)
4265    #    (t r)
4266    #    (n SPACE))
4267
4268    variable ok
4269
4270    set pos [icl_get]
4271
4272    set old [ier_get]
4273    ict_advance s
4274    if {$ok} {ict_match_token s}
4275    ier_merge $old
4276
4277    if {!$ok} {icl_rewind $pos ; return}
4278
4279    set old [ier_get]
4280    ict_advance y
4281    if {$ok} {ict_match_token y}
4282    ier_merge $old
4283
4284    if {!$ok} {icl_rewind $pos ; return}
4285
4286    set old [ier_get]
4287    ict_advance n
4288    if {$ok} {ict_match_token n}
4289    ier_merge $old
4290
4291    if {!$ok} {icl_rewind $pos ; return}
4292
4293    set old [ier_get]
4294    ict_advance t
4295    if {$ok} {ict_match_token t}
4296    ier_merge $old
4297
4298    if {!$ok} {icl_rewind $pos ; return}
4299
4300    set old [ier_get]
4301    ict_advance a
4302    if {$ok} {ict_match_token a}
4303    ier_merge $old
4304
4305    if {!$ok} {icl_rewind $pos ; return}
4306
4307    set old [ier_get]
4308    ict_advance x
4309    if {$ok} {ict_match_token x}
4310    ier_merge $old
4311
4312    if {!$ok} {icl_rewind $pos ; return}
4313
4314    set old [ier_get]
4315    ict_advance _
4316    if {$ok} {ict_match_token _}
4317    ier_merge $old
4318
4319    if {!$ok} {icl_rewind $pos ; return}
4320
4321    set old [ier_get]
4322    ict_advance e
4323    if {$ok} {ict_match_token e}
4324    ier_merge $old
4325
4326    if {!$ok} {icl_rewind $pos ; return}
4327
4328    set old [ier_get]
4329    ict_advance r
4330    if {$ok} {ict_match_token r}
4331    ier_merge $old
4332
4333    if {!$ok} {icl_rewind $pos ; return}
4334
4335    set old [ier_get]
4336    ict_advance r
4337    if {$ok} {ict_match_token r}
4338    ier_merge $old
4339
4340    if {!$ok} {icl_rewind $pos ; return}
4341
4342    set old [ier_get]
4343    ict_advance o
4344    if {$ok} {ict_match_token o}
4345    ier_merge $old
4346
4347    if {!$ok} {icl_rewind $pos ; return}
4348
4349    set old [ier_get]
4350    ict_advance r
4351    if {$ok} {ict_match_token r}
4352    ier_merge $old
4353
4354    if {!$ok} {icl_rewind $pos ; return}
4355
4356    set old [ier_get]
4357    matchSymbol_SPACE    ; # (n SPACE)
4358    ier_merge $old
4359
4360    if {!$ok} {icl_rewind $pos ; return}
4361
4362    return
4363}
4364
4365proc ::page::parse::lemon::matchSymbol_DTOKDEST {} {
4366    # DTOKDEST = (x (t t)
4367    #               (t o)
4368    #               (t k)
4369    #               (t e)
4370    #               (t n)
4371    #               (t _)
4372    #               (t d)
4373    #               (t e)
4374    #               (t s)
4375    #               (t t)
4376    #               (t r)
4377    #               (t u)
4378    #               (t c)
4379    #               (t t)
4380    #               (t o)
4381    #               (t r)
4382    #               (n SPACE))
4383
4384    if {[inc_restore DTOKDEST]} return
4385
4386    set pos [icl_get]
4387
4388    eseq75                ; # (x (t t)
4389                            #    (t o)
4390                            #    (t k)
4391                            #    (t e)
4392                            #    (t n)
4393                            #    (t _)
4394                            #    (t d)
4395                            #    (t e)
4396                            #    (t s)
4397                            #    (t t)
4398                            #    (t r)
4399                            #    (t u)
4400                            #    (t c)
4401                            #    (t t)
4402                            #    (t o)
4403                            #    (t r)
4404                            #    (n SPACE))
4405
4406    isv_clear
4407    inc_save               DTOKDEST $pos
4408    ier_nonterminal        DTOKDEST $pos
4409    return
4410}
4411
4412proc ::page::parse::lemon::eseq75 {} {
4413
4414    # (x (t t)
4415    #    (t o)
4416    #    (t k)
4417    #    (t e)
4418    #    (t n)
4419    #    (t _)
4420    #    (t d)
4421    #    (t e)
4422    #    (t s)
4423    #    (t t)
4424    #    (t r)
4425    #    (t u)
4426    #    (t c)
4427    #    (t t)
4428    #    (t o)
4429    #    (t r)
4430    #    (n SPACE))
4431
4432    variable ok
4433
4434    set pos [icl_get]
4435
4436    set old [ier_get]
4437    ict_advance t
4438    if {$ok} {ict_match_token t}
4439    ier_merge $old
4440
4441    if {!$ok} {icl_rewind $pos ; return}
4442
4443    set old [ier_get]
4444    ict_advance o
4445    if {$ok} {ict_match_token o}
4446    ier_merge $old
4447
4448    if {!$ok} {icl_rewind $pos ; return}
4449
4450    set old [ier_get]
4451    ict_advance k
4452    if {$ok} {ict_match_token k}
4453    ier_merge $old
4454
4455    if {!$ok} {icl_rewind $pos ; return}
4456
4457    set old [ier_get]
4458    ict_advance e
4459    if {$ok} {ict_match_token e}
4460    ier_merge $old
4461
4462    if {!$ok} {icl_rewind $pos ; return}
4463
4464    set old [ier_get]
4465    ict_advance n
4466    if {$ok} {ict_match_token n}
4467    ier_merge $old
4468
4469    if {!$ok} {icl_rewind $pos ; return}
4470
4471    set old [ier_get]
4472    ict_advance _
4473    if {$ok} {ict_match_token _}
4474    ier_merge $old
4475
4476    if {!$ok} {icl_rewind $pos ; return}
4477
4478    set old [ier_get]
4479    ict_advance d
4480    if {$ok} {ict_match_token d}
4481    ier_merge $old
4482
4483    if {!$ok} {icl_rewind $pos ; return}
4484
4485    set old [ier_get]
4486    ict_advance e
4487    if {$ok} {ict_match_token e}
4488    ier_merge $old
4489
4490    if {!$ok} {icl_rewind $pos ; return}
4491
4492    set old [ier_get]
4493    ict_advance s
4494    if {$ok} {ict_match_token s}
4495    ier_merge $old
4496
4497    if {!$ok} {icl_rewind $pos ; return}
4498
4499    set old [ier_get]
4500    ict_advance t
4501    if {$ok} {ict_match_token t}
4502    ier_merge $old
4503
4504    if {!$ok} {icl_rewind $pos ; return}
4505
4506    set old [ier_get]
4507    ict_advance r
4508    if {$ok} {ict_match_token r}
4509    ier_merge $old
4510
4511    if {!$ok} {icl_rewind $pos ; return}
4512
4513    set old [ier_get]
4514    ict_advance u
4515    if {$ok} {ict_match_token u}
4516    ier_merge $old
4517
4518    if {!$ok} {icl_rewind $pos ; return}
4519
4520    set old [ier_get]
4521    ict_advance c
4522    if {$ok} {ict_match_token c}
4523    ier_merge $old
4524
4525    if {!$ok} {icl_rewind $pos ; return}
4526
4527    set old [ier_get]
4528    ict_advance t
4529    if {$ok} {ict_match_token t}
4530    ier_merge $old
4531
4532    if {!$ok} {icl_rewind $pos ; return}
4533
4534    set old [ier_get]
4535    ict_advance o
4536    if {$ok} {ict_match_token o}
4537    ier_merge $old
4538
4539    if {!$ok} {icl_rewind $pos ; return}
4540
4541    set old [ier_get]
4542    ict_advance r
4543    if {$ok} {ict_match_token r}
4544    ier_merge $old
4545
4546    if {!$ok} {icl_rewind $pos ; return}
4547
4548    set old [ier_get]
4549    matchSymbol_SPACE    ; # (n SPACE)
4550    ier_merge $old
4551
4552    if {!$ok} {icl_rewind $pos ; return}
4553
4554    return
4555}
4556
4557proc ::page::parse::lemon::matchSymbol_DTOKPFX {} {
4558    # DTOKPFX = (x (t t)
4559    #              (t o)
4560    #              (t k)
4561    #              (t e)
4562    #              (t n)
4563    #              (t _)
4564    #              (t p)
4565    #              (t r)
4566    #              (t e)
4567    #              (t f)
4568    #              (t i)
4569    #              (t x)
4570    #              (n SPACE))
4571
4572    if {[inc_restore DTOKPFX]} return
4573
4574    set pos [icl_get]
4575
4576    eseq76                ; # (x (t t)
4577                            #    (t o)
4578                            #    (t k)
4579                            #    (t e)
4580                            #    (t n)
4581                            #    (t _)
4582                            #    (t p)
4583                            #    (t r)
4584                            #    (t e)
4585                            #    (t f)
4586                            #    (t i)
4587                            #    (t x)
4588                            #    (n SPACE))
4589
4590    isv_clear
4591    inc_save               DTOKPFX $pos
4592    ier_nonterminal        DTOKPFX $pos
4593    return
4594}
4595
4596proc ::page::parse::lemon::eseq76 {} {
4597
4598    # (x (t t)
4599    #    (t o)
4600    #    (t k)
4601    #    (t e)
4602    #    (t n)
4603    #    (t _)
4604    #    (t p)
4605    #    (t r)
4606    #    (t e)
4607    #    (t f)
4608    #    (t i)
4609    #    (t x)
4610    #    (n SPACE))
4611
4612    variable ok
4613
4614    set pos [icl_get]
4615
4616    set old [ier_get]
4617    ict_advance t
4618    if {$ok} {ict_match_token t}
4619    ier_merge $old
4620
4621    if {!$ok} {icl_rewind $pos ; return}
4622
4623    set old [ier_get]
4624    ict_advance o
4625    if {$ok} {ict_match_token o}
4626    ier_merge $old
4627
4628    if {!$ok} {icl_rewind $pos ; return}
4629
4630    set old [ier_get]
4631    ict_advance k
4632    if {$ok} {ict_match_token k}
4633    ier_merge $old
4634
4635    if {!$ok} {icl_rewind $pos ; return}
4636
4637    set old [ier_get]
4638    ict_advance e
4639    if {$ok} {ict_match_token e}
4640    ier_merge $old
4641
4642    if {!$ok} {icl_rewind $pos ; return}
4643
4644    set old [ier_get]
4645    ict_advance n
4646    if {$ok} {ict_match_token n}
4647    ier_merge $old
4648
4649    if {!$ok} {icl_rewind $pos ; return}
4650
4651    set old [ier_get]
4652    ict_advance _
4653    if {$ok} {ict_match_token _}
4654    ier_merge $old
4655
4656    if {!$ok} {icl_rewind $pos ; return}
4657
4658    set old [ier_get]
4659    ict_advance p
4660    if {$ok} {ict_match_token p}
4661    ier_merge $old
4662
4663    if {!$ok} {icl_rewind $pos ; return}
4664
4665    set old [ier_get]
4666    ict_advance r
4667    if {$ok} {ict_match_token r}
4668    ier_merge $old
4669
4670    if {!$ok} {icl_rewind $pos ; return}
4671
4672    set old [ier_get]
4673    ict_advance e
4674    if {$ok} {ict_match_token e}
4675    ier_merge $old
4676
4677    if {!$ok} {icl_rewind $pos ; return}
4678
4679    set old [ier_get]
4680    ict_advance f
4681    if {$ok} {ict_match_token f}
4682    ier_merge $old
4683
4684    if {!$ok} {icl_rewind $pos ; return}
4685
4686    set old [ier_get]
4687    ict_advance i
4688    if {$ok} {ict_match_token i}
4689    ier_merge $old
4690
4691    if {!$ok} {icl_rewind $pos ; return}
4692
4693    set old [ier_get]
4694    ict_advance x
4695    if {$ok} {ict_match_token x}
4696    ier_merge $old
4697
4698    if {!$ok} {icl_rewind $pos ; return}
4699
4700    set old [ier_get]
4701    matchSymbol_SPACE    ; # (n SPACE)
4702    ier_merge $old
4703
4704    if {!$ok} {icl_rewind $pos ; return}
4705
4706    return
4707}
4708
4709proc ::page::parse::lemon::matchSymbol_DTOKTYPE {} {
4710    # DTOKTYPE = (x (t t)
4711    #               (t o)
4712    #               (t k)
4713    #               (t e)
4714    #               (t n)
4715    #               (t _)
4716    #               (t t)
4717    #               (t y)
4718    #               (t p)
4719    #               (t e)
4720    #               (n SPACE))
4721
4722    if {[inc_restore DTOKTYPE]} return
4723
4724    set pos [icl_get]
4725
4726    eseq77                ; # (x (t t)
4727                            #    (t o)
4728                            #    (t k)
4729                            #    (t e)
4730                            #    (t n)
4731                            #    (t _)
4732                            #    (t t)
4733                            #    (t y)
4734                            #    (t p)
4735                            #    (t e)
4736                            #    (n SPACE))
4737
4738    isv_clear
4739    inc_save               DTOKTYPE $pos
4740    ier_nonterminal        DTOKTYPE $pos
4741    return
4742}
4743
4744proc ::page::parse::lemon::eseq77 {} {
4745
4746    # (x (t t)
4747    #    (t o)
4748    #    (t k)
4749    #    (t e)
4750    #    (t n)
4751    #    (t _)
4752    #    (t t)
4753    #    (t y)
4754    #    (t p)
4755    #    (t e)
4756    #    (n SPACE))
4757
4758    variable ok
4759
4760    set pos [icl_get]
4761
4762    set old [ier_get]
4763    ict_advance t
4764    if {$ok} {ict_match_token t}
4765    ier_merge $old
4766
4767    if {!$ok} {icl_rewind $pos ; return}
4768
4769    set old [ier_get]
4770    ict_advance o
4771    if {$ok} {ict_match_token o}
4772    ier_merge $old
4773
4774    if {!$ok} {icl_rewind $pos ; return}
4775
4776    set old [ier_get]
4777    ict_advance k
4778    if {$ok} {ict_match_token k}
4779    ier_merge $old
4780
4781    if {!$ok} {icl_rewind $pos ; return}
4782
4783    set old [ier_get]
4784    ict_advance e
4785    if {$ok} {ict_match_token e}
4786    ier_merge $old
4787
4788    if {!$ok} {icl_rewind $pos ; return}
4789
4790    set old [ier_get]
4791    ict_advance n
4792    if {$ok} {ict_match_token n}
4793    ier_merge $old
4794
4795    if {!$ok} {icl_rewind $pos ; return}
4796
4797    set old [ier_get]
4798    ict_advance _
4799    if {$ok} {ict_match_token _}
4800    ier_merge $old
4801
4802    if {!$ok} {icl_rewind $pos ; return}
4803
4804    set old [ier_get]
4805    ict_advance t
4806    if {$ok} {ict_match_token t}
4807    ier_merge $old
4808
4809    if {!$ok} {icl_rewind $pos ; return}
4810
4811    set old [ier_get]
4812    ict_advance y
4813    if {$ok} {ict_match_token y}
4814    ier_merge $old
4815
4816    if {!$ok} {icl_rewind $pos ; return}
4817
4818    set old [ier_get]
4819    ict_advance p
4820    if {$ok} {ict_match_token p}
4821    ier_merge $old
4822
4823    if {!$ok} {icl_rewind $pos ; return}
4824
4825    set old [ier_get]
4826    ict_advance e
4827    if {$ok} {ict_match_token e}
4828    ier_merge $old
4829
4830    if {!$ok} {icl_rewind $pos ; return}
4831
4832    set old [ier_get]
4833    matchSymbol_SPACE    ; # (n SPACE)
4834    ier_merge $old
4835
4836    if {!$ok} {icl_rewind $pos ; return}
4837
4838    return
4839}
4840
4841proc ::page::parse::lemon::matchSymbol_DTYPE {} {
4842    # DTYPE = (x (t t)
4843    #            (t y)
4844    #            (t p)
4845    #            (t e)
4846    #            (n SPACE))
4847
4848    if {[inc_restore DTYPE]} return
4849
4850    set pos [icl_get]
4851
4852    eseq78                ; # (x (t t)
4853                            #    (t y)
4854                            #    (t p)
4855                            #    (t e)
4856                            #    (n SPACE))
4857
4858    isv_clear
4859    inc_save               DTYPE $pos
4860    ier_nonterminal        DTYPE $pos
4861    return
4862}
4863
4864proc ::page::parse::lemon::eseq78 {} {
4865
4866    # (x (t t)
4867    #    (t y)
4868    #    (t p)
4869    #    (t e)
4870    #    (n SPACE))
4871
4872    variable ok
4873
4874    set pos [icl_get]
4875
4876    set old [ier_get]
4877    ict_advance t
4878    if {$ok} {ict_match_token t}
4879    ier_merge $old
4880
4881    if {!$ok} {icl_rewind $pos ; return}
4882
4883    set old [ier_get]
4884    ict_advance y
4885    if {$ok} {ict_match_token y}
4886    ier_merge $old
4887
4888    if {!$ok} {icl_rewind $pos ; return}
4889
4890    set old [ier_get]
4891    ict_advance p
4892    if {$ok} {ict_match_token p}
4893    ier_merge $old
4894
4895    if {!$ok} {icl_rewind $pos ; return}
4896
4897    set old [ier_get]
4898    ict_advance e
4899    if {$ok} {ict_match_token e}
4900    ier_merge $old
4901
4902    if {!$ok} {icl_rewind $pos ; return}
4903
4904    set old [ier_get]
4905    matchSymbol_SPACE    ; # (n SPACE)
4906    ier_merge $old
4907
4908    if {!$ok} {icl_rewind $pos ; return}
4909
4910    return
4911}
4912
4913proc ::page::parse::lemon::matchSymbol_Endif {} {
4914    # Endif = (n DENDIF)
4915
4916    if {[inc_restore Endif]} return
4917
4918    set pos [icl_get]
4919
4920    matchSymbol_DENDIF    ; # (n DENDIF)
4921
4922    isv_clear
4923    inc_save               Endif $pos
4924    ier_nonterminal        Endif $pos
4925    return
4926}
4927
4928proc ::page::parse::lemon::matchSymbol_EOF {} {
4929    # EOF = (! (dot))
4930
4931    if {[inc_restore EOF]} return
4932
4933    set pos [icl_get]
4934
4935    ebang99
4936
4937    isv_clear
4938    inc_save               EOF $pos
4939    ier_nonterminal        EOF $pos
4940    return
4941}
4942
4943proc ::page::parse::lemon::ebang99 {} {
4944    set pos [icl_get]
4945
4946    ict_advance "any character"
4947
4948    icl_rewind $pos
4949    iok_negate
4950    return
4951}
4952
4953proc ::page::parse::lemon::matchSymbol_EOL {} {
4954    # EOL = (/ (x (t \r)
4955    #             (t \n))
4956    #          (t \r)
4957    #          (t \n))
4958
4959    if {[inc_restore EOL]} return
4960
4961    set pos [icl_get]
4962
4963    ebra98                ; # (/ (x (t \r)
4964                            #       (t \n))
4965                            #    (t \r)
4966                            #    (t \n))
4967
4968    isv_clear
4969    inc_save               EOL $pos
4970    ier_nonterminal        EOL $pos
4971    return
4972}
4973
4974proc ::page::parse::lemon::ebra98 {} {
4975
4976    # (/ (x (t \r)
4977    #       (t \n))
4978    #    (t \r)
4979    #    (t \n))
4980
4981    variable ok
4982
4983    set pos [icl_get]
4984
4985    set old [ier_get]
4986    eseq97                ; # (x (t \r)
4987                            #    (t \n))
4988    ier_merge $old
4989
4990    if {$ok} return
4991    icl_rewind   $pos
4992
4993    set old [ier_get]
4994    ict_advance \\r
4995    if {$ok} {ict_match_token \r}
4996    ier_merge $old
4997
4998    if {$ok} return
4999    icl_rewind   $pos
5000
5001    set old [ier_get]
5002    ict_advance \\n
5003    if {$ok} {ict_match_token \n}
5004    ier_merge $old
5005
5006    if {$ok} return
5007    icl_rewind   $pos
5008
5009    return
5010}
5011
5012proc ::page::parse::lemon::eseq97 {} {
5013
5014    # (x (t \r)
5015    #    (t \n))
5016
5017    variable ok
5018
5019    set pos [icl_get]
5020
5021    set old [ier_get]
5022    ict_advance \\r
5023    if {$ok} {ict_match_token \r}
5024    ier_merge $old
5025
5026    if {!$ok} {icl_rewind $pos ; return}
5027
5028    set old [ier_get]
5029    ict_advance \\n
5030    if {$ok} {ict_match_token \n}
5031    ier_merge $old
5032
5033    if {!$ok} {icl_rewind $pos ; return}
5034
5035    return
5036}
5037
5038proc ::page::parse::lemon::matchSymbol_ExtraArgument {} {
5039    # ExtraArgument = (x (n DEXTRA)
5040    #                    (n Codeblock))
5041
5042    variable ok
5043    if {[inc_restore ExtraArgument]} {
5044        if {$ok} ias_push
5045        return
5046    }
5047
5048    set pos [icl_get]
5049    set mrk [ias_mark]
5050
5051    eseq20                ; # (x (n DEXTRA)
5052                            #    (n Codeblock))
5053
5054    isv_nonterminal_reduce ExtraArgument $pos $mrk
5055    inc_save               ExtraArgument $pos
5056    ias_pop2mark             $mrk
5057    if {$ok} ias_push
5058    ier_nonterminal        ExtraArgument $pos
5059    return
5060}
5061
5062proc ::page::parse::lemon::eseq20 {} {
5063
5064    # (x (n DEXTRA)
5065    #    (n Codeblock))
5066
5067    variable ok
5068
5069    set pos [icl_get]
5070
5071    set old [ier_get]
5072    matchSymbol_DEXTRA    ; # (n DEXTRA)
5073    ier_merge $old
5074
5075    if {!$ok} {icl_rewind $pos ; return}
5076
5077    set mrk [ias_mark]
5078
5079    set old [ier_get]
5080    matchSymbol_Codeblock    ; # (n Codeblock)
5081    ier_merge $old
5082
5083    if {!$ok} {
5084        ias_pop2mark $mrk
5085        icl_rewind   $pos
5086        return
5087    }
5088
5089    return
5090}
5091
5092proc ::page::parse::lemon::matchSymbol_Fallback {} {
5093    # Fallback = (x (n DFALLBK)
5094    #               (+ (n Identifier))
5095    #               (n DOT))
5096
5097    variable ok
5098    if {[inc_restore Fallback]} {
5099        if {$ok} ias_push
5100        return
5101    }
5102
5103    set pos [icl_get]
5104    set mrk [ias_mark]
5105
5106    eseq40                ; # (x (n DFALLBK)
5107                            #    (+ (n Identifier))
5108                            #    (n DOT))
5109
5110    isv_nonterminal_reduce Fallback $pos $mrk
5111    inc_save               Fallback $pos
5112    ias_pop2mark             $mrk
5113    if {$ok} ias_push
5114    ier_nonterminal        Fallback $pos
5115    return
5116}
5117
5118proc ::page::parse::lemon::eseq40 {} {
5119
5120    # (x (n DFALLBK)
5121    #    (+ (n Identifier))
5122    #    (n DOT))
5123
5124    variable ok
5125
5126    set pos [icl_get]
5127
5128    set old [ier_get]
5129    matchSymbol_DFALLBK    ; # (n DFALLBK)
5130    ier_merge $old
5131
5132    if {!$ok} {icl_rewind $pos ; return}
5133
5134    set mrk [ias_mark]
5135
5136    set old [ier_get]
5137    epkleene39                ; # (+ (n Identifier))
5138    ier_merge $old
5139
5140    if {!$ok} {
5141        ias_pop2mark $mrk
5142        icl_rewind   $pos
5143        return
5144    }
5145
5146    set old [ier_get]
5147    matchSymbol_DOT    ; # (n DOT)
5148    ier_merge $old
5149
5150    if {!$ok} {
5151        ias_pop2mark $mrk
5152        icl_rewind   $pos
5153        return
5154    }
5155
5156    return
5157}
5158
5159proc ::page::parse::lemon::epkleene39 {} {
5160
5161    # (+ (n Identifier))
5162
5163    variable ok
5164
5165    set pos [icl_get]
5166
5167    set old [ier_get]
5168    matchSymbol_Identifier    ; # (n Identifier)
5169    ier_merge $old
5170
5171    if {!$ok} {
5172        icl_rewind $pos
5173        return
5174    }
5175
5176    while {1} {
5177        set pos [icl_get]
5178
5179        set old [ier_get]
5180        matchSymbol_Identifier    ; # (n Identifier)
5181        ier_merge $old
5182
5183        if {$ok} continue
5184        break
5185    }
5186
5187    icl_rewind $pos
5188    iok_ok
5189    return
5190}
5191
5192proc ::page::parse::lemon::matchSymbol_Ident {} {
5193    # Ident = (x (/ (alpha)
5194    #               (t _))
5195    #            (* (/ (alnum)
5196    #                  (t _))))
5197
5198    variable ok
5199    if {[inc_restore Ident]} {
5200        if {$ok} ias_push
5201        return
5202    }
5203
5204    set pos [icl_get]
5205
5206    eseq50                ; # (x (/ (alpha)
5207                            #       (t _))
5208                            #    (* (/ (alnum)
5209                            #          (t _))))
5210
5211    isv_nonterminal_range  Ident $pos
5212    inc_save               Ident $pos
5213    if {$ok} ias_push
5214    ier_nonterminal        Ident $pos
5215    return
5216}
5217
5218proc ::page::parse::lemon::eseq50 {} {
5219
5220    # (x (/ (alpha)
5221    #       (t _))
5222    #    (* (/ (alnum)
5223    #          (t _))))
5224
5225    variable ok
5226
5227    set pos [icl_get]
5228
5229    set old [ier_get]
5230    ebra47                ; # (/ (alpha)
5231                            #    (t _))
5232    ier_merge $old
5233
5234    if {!$ok} {icl_rewind $pos ; return}
5235
5236    set old [ier_get]
5237    ekleene49                ; # (* (/ (alnum)
5238                               #       (t _)))
5239    ier_merge $old
5240
5241    if {!$ok} {icl_rewind $pos ; return}
5242
5243    return
5244}
5245
5246proc ::page::parse::lemon::ebra47 {} {
5247
5248    # (/ (alpha)
5249    #    (t _))
5250
5251    variable ok
5252
5253    set pos [icl_get]
5254
5255    set old [ier_get]
5256    ict_advance alpha
5257    if {$ok} {ict_match_tokclass alpha}
5258    ier_merge $old
5259
5260    if {$ok} return
5261    icl_rewind   $pos
5262
5263    set old [ier_get]
5264    ict_advance _
5265    if {$ok} {ict_match_token _}
5266    ier_merge $old
5267
5268    if {$ok} return
5269    icl_rewind   $pos
5270
5271    return
5272}
5273
5274proc ::page::parse::lemon::ekleene49 {} {
5275
5276    # (* (/ (alnum)
5277    #       (t _)))
5278
5279    variable ok
5280
5281    while {1} {
5282        set pos [icl_get]
5283
5284        set old [ier_get]
5285        ebra48                ; # (/ (alnum)
5286                                #    (t _))
5287        ier_merge $old
5288
5289        if {$ok} continue
5290        break
5291    }
5292
5293    icl_rewind $pos
5294    iok_ok
5295    return
5296}
5297
5298proc ::page::parse::lemon::ebra48 {} {
5299
5300    # (/ (alnum)
5301    #    (t _))
5302
5303    variable ok
5304
5305    set pos [icl_get]
5306
5307    set old [ier_get]
5308    ict_advance alnum
5309    if {$ok} {ict_match_tokclass alnum}
5310    ier_merge $old
5311
5312    if {$ok} return
5313    icl_rewind   $pos
5314
5315    set old [ier_get]
5316    ict_advance _
5317    if {$ok} {ict_match_token _}
5318    ier_merge $old
5319
5320    if {$ok} return
5321    icl_rewind   $pos
5322
5323    return
5324}
5325
5326proc ::page::parse::lemon::matchSymbol_Identifier {} {
5327    # Identifier = (x (n Ident)
5328    #                 (n SPACE))
5329
5330    variable ok
5331    if {[inc_restore Identifier]} {
5332        if {$ok} ias_push
5333        return
5334    }
5335
5336    set pos [icl_get]
5337    set mrk [ias_mark]
5338
5339    eseq46                ; # (x (n Ident)
5340                            #    (n SPACE))
5341
5342    isv_nonterminal_reduce Identifier $pos $mrk
5343    inc_save               Identifier $pos
5344    ias_pop2mark             $mrk
5345    if {$ok} ias_push
5346    ier_nonterminal        Identifier $pos
5347    return
5348}
5349
5350proc ::page::parse::lemon::eseq46 {} {
5351
5352    # (x (n Ident)
5353    #    (n SPACE))
5354
5355    variable ok
5356
5357    set pos [icl_get]
5358
5359    set mrk [ias_mark]
5360
5361    set old [ier_get]
5362    matchSymbol_Ident    ; # (n Ident)
5363    ier_merge $old
5364
5365    if {!$ok} {
5366        ias_pop2mark $mrk
5367        icl_rewind   $pos
5368        return
5369    }
5370
5371    set old [ier_get]
5372    matchSymbol_SPACE    ; # (n SPACE)
5373    ier_merge $old
5374
5375    if {!$ok} {
5376        ias_pop2mark $mrk
5377        icl_rewind   $pos
5378        return
5379    }
5380
5381    return
5382}
5383
5384proc ::page::parse::lemon::matchSymbol_Ifdef {} {
5385    # Ifdef = (x (n DIFDEF)
5386    #            (n Identifier))
5387
5388    if {[inc_restore Ifdef]} return
5389
5390    set pos [icl_get]
5391
5392    eseq83                ; # (x (n DIFDEF)
5393                            #    (n Identifier))
5394
5395    isv_clear
5396    inc_save               Ifdef $pos
5397    ier_nonterminal        Ifdef $pos
5398    return
5399}
5400
5401proc ::page::parse::lemon::eseq83 {} {
5402
5403    # (x (n DIFDEF)
5404    #    (n Identifier))
5405
5406    variable ok
5407
5408    set pos [icl_get]
5409
5410    set old [ier_get]
5411    matchSymbol_DIFDEF    ; # (n DIFDEF)
5412    ier_merge $old
5413
5414    if {!$ok} {icl_rewind $pos ; return}
5415
5416    set old [ier_get]
5417    set pIdentifier [ias_mark]
5418    matchSymbol_Identifier
5419    ias_pop2mark $pIdentifier    ; # (n Identifier)
5420    ier_merge $old
5421
5422    if {!$ok} {icl_rewind $pos ; return}
5423
5424    return
5425}
5426
5427proc ::page::parse::lemon::matchSymbol_Ifndef {} {
5428    # Ifndef = (x (n DIFNDEF)
5429    #             (n Identifier))
5430
5431    if {[inc_restore Ifndef]} return
5432
5433    set pos [icl_get]
5434
5435    eseq84                ; # (x (n DIFNDEF)
5436                            #    (n Identifier))
5437
5438    isv_clear
5439    inc_save               Ifndef $pos
5440    ier_nonterminal        Ifndef $pos
5441    return
5442}
5443
5444proc ::page::parse::lemon::eseq84 {} {
5445
5446    # (x (n DIFNDEF)
5447    #    (n Identifier))
5448
5449    variable ok
5450
5451    set pos [icl_get]
5452
5453    set old [ier_get]
5454    matchSymbol_DIFNDEF    ; # (n DIFNDEF)
5455    ier_merge $old
5456
5457    if {!$ok} {icl_rewind $pos ; return}
5458
5459    set old [ier_get]
5460    set pIdentifier [ias_mark]
5461    matchSymbol_Identifier
5462    ias_pop2mark $pIdentifier    ; # (n Identifier)
5463    ier_merge $old
5464
5465    if {!$ok} {icl_rewind $pos ; return}
5466
5467    return
5468}
5469
5470proc ::page::parse::lemon::matchSymbol_Include {} {
5471    # Include = (x (n DINCL)
5472    #              (n Codeblock))
5473
5474    variable ok
5475    if {[inc_restore Include]} {
5476        if {$ok} ias_push
5477        return
5478    }
5479
5480    set pos [icl_get]
5481    set mrk [ias_mark]
5482
5483    eseq21                ; # (x (n DINCL)
5484                            #    (n Codeblock))
5485
5486    isv_nonterminal_reduce Include $pos $mrk
5487    inc_save               Include $pos
5488    ias_pop2mark             $mrk
5489    if {$ok} ias_push
5490    ier_nonterminal        Include $pos
5491    return
5492}
5493
5494proc ::page::parse::lemon::eseq21 {} {
5495
5496    # (x (n DINCL)
5497    #    (n Codeblock))
5498
5499    variable ok
5500
5501    set pos [icl_get]
5502
5503    set old [ier_get]
5504    matchSymbol_DINCL    ; # (n DINCL)
5505    ier_merge $old
5506
5507    if {!$ok} {icl_rewind $pos ; return}
5508
5509    set mrk [ias_mark]
5510
5511    set old [ier_get]
5512    matchSymbol_Codeblock    ; # (n Codeblock)
5513    ier_merge $old
5514
5515    if {!$ok} {
5516        ias_pop2mark $mrk
5517        icl_rewind   $pos
5518        return
5519    }
5520
5521    return
5522}
5523
5524proc ::page::parse::lemon::matchSymbol_Label {} {
5525    # Label = (x (n LPAREN)
5526    #            (n Identifier)
5527    #            (n RPAREN))
5528
5529    variable ok
5530    if {[inc_restore Label]} {
5531        if {$ok} ias_push
5532        return
5533    }
5534
5535    set pos [icl_get]
5536    set mrk [ias_mark]
5537
5538    eseq12                ; # (x (n LPAREN)
5539                            #    (n Identifier)
5540                            #    (n RPAREN))
5541
5542    isv_nonterminal_reduce Label $pos $mrk
5543    inc_save               Label $pos
5544    ias_pop2mark             $mrk
5545    if {$ok} ias_push
5546    ier_nonterminal        Label $pos
5547    return
5548}
5549
5550proc ::page::parse::lemon::eseq12 {} {
5551
5552    # (x (n LPAREN)
5553    #    (n Identifier)
5554    #    (n RPAREN))
5555
5556    variable ok
5557
5558    set pos [icl_get]
5559
5560    set old [ier_get]
5561    matchSymbol_LPAREN    ; # (n LPAREN)
5562    ier_merge $old
5563
5564    if {!$ok} {icl_rewind $pos ; return}
5565
5566    set mrk [ias_mark]
5567
5568    set old [ier_get]
5569    matchSymbol_Identifier    ; # (n Identifier)
5570    ier_merge $old
5571
5572    if {!$ok} {
5573        ias_pop2mark $mrk
5574        icl_rewind   $pos
5575        return
5576    }
5577
5578    set old [ier_get]
5579    matchSymbol_RPAREN    ; # (n RPAREN)
5580    ier_merge $old
5581
5582    if {!$ok} {
5583        ias_pop2mark $mrk
5584        icl_rewind   $pos
5585        return
5586    }
5587
5588    return
5589}
5590
5591proc ::page::parse::lemon::matchSymbol_LBRACE {} {
5592    # LBRACE = (t \{)
5593
5594    variable ok
5595    if {[inc_restore LBRACE]} return
5596
5597    set pos [icl_get]
5598
5599    ict_advance \{
5600    if {$ok} {ict_match_token \173}
5601
5602    isv_clear
5603    inc_save               LBRACE $pos
5604    ier_nonterminal        LBRACE $pos
5605    return
5606}
5607
5608proc ::page::parse::lemon::matchSymbol_LBRACKET {} {
5609    # LBRACKET = (x (t [)
5610    #               (n SPACE))
5611
5612    if {[inc_restore LBRACKET]} return
5613
5614    set pos [icl_get]
5615
5616    eseq57                ; # (x (t [)
5617                            #    (n SPACE))
5618
5619    isv_clear
5620    inc_save               LBRACKET $pos
5621    ier_nonterminal        LBRACKET $pos
5622    return
5623}
5624
5625proc ::page::parse::lemon::eseq57 {} {
5626
5627    # (x (t [)
5628    #    (n SPACE))
5629
5630    variable ok
5631
5632    set pos [icl_get]
5633
5634    set old [ier_get]
5635    ict_advance \[
5636    if {$ok} {ict_match_token \133}
5637    ier_merge $old
5638
5639    if {!$ok} {icl_rewind $pos ; return}
5640
5641    set old [ier_get]
5642    matchSymbol_SPACE    ; # (n SPACE)
5643    ier_merge $old
5644
5645    if {!$ok} {icl_rewind $pos ; return}
5646
5647    return
5648}
5649
5650proc ::page::parse::lemon::matchSymbol_Left {} {
5651    # Left = (x (n DLEFT)
5652    #           (+ (n Identifier))
5653    #           (n DOT))
5654
5655    variable ok
5656    if {[inc_restore Left]} {
5657        if {$ok} ias_push
5658        return
5659    }
5660
5661    set pos [icl_get]
5662    set mrk [ias_mark]
5663
5664    eseq23                ; # (x (n DLEFT)
5665                            #    (+ (n Identifier))
5666                            #    (n DOT))
5667
5668    isv_nonterminal_reduce Left $pos $mrk
5669    inc_save               Left $pos
5670    ias_pop2mark             $mrk
5671    if {$ok} ias_push
5672    ier_nonterminal        Left $pos
5673    return
5674}
5675
5676proc ::page::parse::lemon::eseq23 {} {
5677
5678    # (x (n DLEFT)
5679    #    (+ (n Identifier))
5680    #    (n DOT))
5681
5682    variable ok
5683
5684    set pos [icl_get]
5685
5686    set old [ier_get]
5687    matchSymbol_DLEFT    ; # (n DLEFT)
5688    ier_merge $old
5689
5690    if {!$ok} {icl_rewind $pos ; return}
5691
5692    set mrk [ias_mark]
5693
5694    set old [ier_get]
5695    epkleene22                ; # (+ (n Identifier))
5696    ier_merge $old
5697
5698    if {!$ok} {
5699        ias_pop2mark $mrk
5700        icl_rewind   $pos
5701        return
5702    }
5703
5704    set old [ier_get]
5705    matchSymbol_DOT    ; # (n DOT)
5706    ier_merge $old
5707
5708    if {!$ok} {
5709        ias_pop2mark $mrk
5710        icl_rewind   $pos
5711        return
5712    }
5713
5714    return
5715}
5716
5717proc ::page::parse::lemon::epkleene22 {} {
5718
5719    # (+ (n Identifier))
5720
5721    variable ok
5722
5723    set pos [icl_get]
5724
5725    set old [ier_get]
5726    matchSymbol_Identifier    ; # (n Identifier)
5727    ier_merge $old
5728
5729    if {!$ok} {
5730        icl_rewind $pos
5731        return
5732    }
5733
5734    while {1} {
5735        set pos [icl_get]
5736
5737        set old [ier_get]
5738        matchSymbol_Identifier    ; # (n Identifier)
5739        ier_merge $old
5740
5741        if {$ok} continue
5742        break
5743    }
5744
5745    icl_rewind $pos
5746    iok_ok
5747    return
5748}
5749
5750proc ::page::parse::lemon::matchSymbol_LemonGrammar {} {
5751    # LemonGrammar = (x (n SPACE)
5752    #                   (+ (n Statement))
5753    #                   (n EOF))
5754
5755    variable ok
5756    if {[inc_restore LemonGrammar]} {
5757        if {$ok} ias_push
5758        return
5759    }
5760
5761    set pos [icl_get]
5762    set mrk [ias_mark]
5763
5764    eseq2                ; # (x (n SPACE)
5765                           #    (+ (n Statement))
5766                           #    (n EOF))
5767
5768    isv_nonterminal_reduce LemonGrammar $pos $mrk
5769    inc_save               LemonGrammar $pos
5770    ias_pop2mark             $mrk
5771    if {$ok} ias_push
5772    ier_nonterminal        LemonGrammar $pos
5773    return
5774}
5775
5776proc ::page::parse::lemon::eseq2 {} {
5777
5778    # (x (n SPACE)
5779    #    (+ (n Statement))
5780    #    (n EOF))
5781
5782    variable ok
5783
5784    set pos [icl_get]
5785
5786    set old [ier_get]
5787    matchSymbol_SPACE    ; # (n SPACE)
5788    ier_merge $old
5789
5790    if {!$ok} {icl_rewind $pos ; return}
5791
5792    set mrk [ias_mark]
5793
5794    set old [ier_get]
5795    epkleene1                ; # (+ (n Statement))
5796    ier_merge $old
5797
5798    if {!$ok} {
5799        ias_pop2mark $mrk
5800        icl_rewind   $pos
5801        return
5802    }
5803
5804    set old [ier_get]
5805    matchSymbol_EOF    ; # (n EOF)
5806    ier_merge $old
5807
5808    if {!$ok} {
5809        ias_pop2mark $mrk
5810        icl_rewind   $pos
5811        return
5812    }
5813
5814    return
5815}
5816
5817proc ::page::parse::lemon::epkleene1 {} {
5818
5819    # (+ (n Statement))
5820
5821    variable ok
5822
5823    set pos [icl_get]
5824
5825    set old [ier_get]
5826    matchSymbol_Statement    ; # (n Statement)
5827    ier_merge $old
5828
5829    if {!$ok} {
5830        icl_rewind $pos
5831        return
5832    }
5833
5834    while {1} {
5835        set pos [icl_get]
5836
5837        set old [ier_get]
5838        matchSymbol_Statement    ; # (n Statement)
5839        ier_merge $old
5840
5841        if {$ok} continue
5842        break
5843    }
5844
5845    icl_rewind $pos
5846    iok_ok
5847    return
5848}
5849
5850proc ::page::parse::lemon::matchSymbol_LPAREN {} {
5851    # LPAREN = (x (t \()
5852    #             (n SPACE))
5853
5854    if {[inc_restore LPAREN]} return
5855
5856    set pos [icl_get]
5857
5858    eseq55                ; # (x (t \()
5859                            #    (n SPACE))
5860
5861    isv_clear
5862    inc_save               LPAREN $pos
5863    ier_nonterminal        LPAREN $pos
5864    return
5865}
5866
5867proc ::page::parse::lemon::eseq55 {} {
5868
5869    # (x (t \()
5870    #    (n SPACE))
5871
5872    variable ok
5873
5874    set pos [icl_get]
5875
5876    set old [ier_get]
5877    ict_advance \(
5878    if {$ok} {ict_match_token \50}
5879    ier_merge $old
5880
5881    if {!$ok} {icl_rewind $pos ; return}
5882
5883    set old [ier_get]
5884    matchSymbol_SPACE    ; # (n SPACE)
5885    ier_merge $old
5886
5887    if {!$ok} {icl_rewind $pos ; return}
5888
5889    return
5890}
5891
5892proc ::page::parse::lemon::matchSymbol_Name {} {
5893    # Name = (x (n DNAME)
5894    #           (n Identifier))
5895
5896    variable ok
5897    if {[inc_restore Name]} {
5898        if {$ok} ias_push
5899        return
5900    }
5901
5902    set pos [icl_get]
5903    set mrk [ias_mark]
5904
5905    eseq24                ; # (x (n DNAME)
5906                            #    (n Identifier))
5907
5908    isv_nonterminal_reduce Name $pos $mrk
5909    inc_save               Name $pos
5910    ias_pop2mark             $mrk
5911    if {$ok} ias_push
5912    ier_nonterminal        Name $pos
5913    return
5914}
5915
5916proc ::page::parse::lemon::eseq24 {} {
5917
5918    # (x (n DNAME)
5919    #    (n Identifier))
5920
5921    variable ok
5922
5923    set pos [icl_get]
5924
5925    set old [ier_get]
5926    matchSymbol_DNAME    ; # (n DNAME)
5927    ier_merge $old
5928
5929    if {!$ok} {icl_rewind $pos ; return}
5930
5931    set mrk [ias_mark]
5932
5933    set old [ier_get]
5934    matchSymbol_Identifier    ; # (n Identifier)
5935    ier_merge $old
5936
5937    if {!$ok} {
5938        ias_pop2mark $mrk
5939        icl_rewind   $pos
5940        return
5941    }
5942
5943    return
5944}
5945
5946proc ::page::parse::lemon::matchSymbol_NatNum {} {
5947    # NatNum = (+ (.. 0 9))
5948
5949    variable ok
5950    if {[inc_restore NatNum]} {
5951        if {$ok} ias_push
5952        return
5953    }
5954
5955    set pos [icl_get]
5956
5957    epkleene52                ; # (+ (.. 0 9))
5958
5959    isv_nonterminal_range  NatNum $pos
5960    inc_save               NatNum $pos
5961    if {$ok} ias_push
5962    ier_nonterminal        NatNum $pos
5963    return
5964}
5965
5966proc ::page::parse::lemon::epkleene52 {} {
5967
5968    # (+ (.. 0 9))
5969
5970    variable ok
5971
5972    set pos [icl_get]
5973
5974    set old [ier_get]
5975    ict_advance "any in 0..9"
5976    if {$ok} {ict_match_tokrange 0 9}
5977    ier_merge $old
5978
5979    if {!$ok} {
5980        icl_rewind $pos
5981        return
5982    }
5983
5984    while {1} {
5985        set pos [icl_get]
5986
5987        set old [ier_get]
5988        ict_advance "any in 0..9"
5989        if {$ok} {ict_match_tokrange 0 9}
5990        ier_merge $old
5991
5992        if {$ok} continue
5993        break
5994    }
5995
5996    icl_rewind $pos
5997    iok_ok
5998    return
5999}
6000
6001proc ::page::parse::lemon::matchSymbol_NaturalNumber {} {
6002    # NaturalNumber = (x (n NatNum)
6003    #                    (n SPACE))
6004
6005    variable ok
6006    if {[inc_restore NaturalNumber]} {
6007        if {$ok} ias_push
6008        return
6009    }
6010
6011    set pos [icl_get]
6012    set mrk [ias_mark]
6013
6014    eseq51                ; # (x (n NatNum)
6015                            #    (n SPACE))
6016
6017    isv_nonterminal_reduce NaturalNumber $pos $mrk
6018    inc_save               NaturalNumber $pos
6019    ias_pop2mark             $mrk
6020    if {$ok} ias_push
6021    ier_nonterminal        NaturalNumber $pos
6022    return
6023}
6024
6025proc ::page::parse::lemon::eseq51 {} {
6026
6027    # (x (n NatNum)
6028    #    (n SPACE))
6029
6030    variable ok
6031
6032    set pos [icl_get]
6033
6034    set mrk [ias_mark]
6035
6036    set old [ier_get]
6037    matchSymbol_NatNum    ; # (n NatNum)
6038    ier_merge $old
6039
6040    if {!$ok} {
6041        ias_pop2mark $mrk
6042        icl_rewind   $pos
6043        return
6044    }
6045
6046    set old [ier_get]
6047    matchSymbol_SPACE    ; # (n SPACE)
6048    ier_merge $old
6049
6050    if {!$ok} {
6051        ias_pop2mark $mrk
6052        icl_rewind   $pos
6053        return
6054    }
6055
6056    return
6057}
6058
6059proc ::page::parse::lemon::matchSymbol_Nonassoc {} {
6060    # Nonassoc = (x (n DNON)
6061    #               (+ (n Identifier))
6062    #               (n DOT))
6063
6064    variable ok
6065    if {[inc_restore Nonassoc]} {
6066        if {$ok} ias_push
6067        return
6068    }
6069
6070    set pos [icl_get]
6071    set mrk [ias_mark]
6072
6073    eseq26                ; # (x (n DNON)
6074                            #    (+ (n Identifier))
6075                            #    (n DOT))
6076
6077    isv_nonterminal_reduce Nonassoc $pos $mrk
6078    inc_save               Nonassoc $pos
6079    ias_pop2mark             $mrk
6080    if {$ok} ias_push
6081    ier_nonterminal        Nonassoc $pos
6082    return
6083}
6084
6085proc ::page::parse::lemon::eseq26 {} {
6086
6087    # (x (n DNON)
6088    #    (+ (n Identifier))
6089    #    (n DOT))
6090
6091    variable ok
6092
6093    set pos [icl_get]
6094
6095    set old [ier_get]
6096    matchSymbol_DNON    ; # (n DNON)
6097    ier_merge $old
6098
6099    if {!$ok} {icl_rewind $pos ; return}
6100
6101    set mrk [ias_mark]
6102
6103    set old [ier_get]
6104    epkleene25                ; # (+ (n Identifier))
6105    ier_merge $old
6106
6107    if {!$ok} {
6108        ias_pop2mark $mrk
6109        icl_rewind   $pos
6110        return
6111    }
6112
6113    set old [ier_get]
6114    matchSymbol_DOT    ; # (n DOT)
6115    ier_merge $old
6116
6117    if {!$ok} {
6118        ias_pop2mark $mrk
6119        icl_rewind   $pos
6120        return
6121    }
6122
6123    return
6124}
6125
6126proc ::page::parse::lemon::epkleene25 {} {
6127
6128    # (+ (n Identifier))
6129
6130    variable ok
6131
6132    set pos [icl_get]
6133
6134    set old [ier_get]
6135    matchSymbol_Identifier    ; # (n Identifier)
6136    ier_merge $old
6137
6138    if {!$ok} {
6139        icl_rewind $pos
6140        return
6141    }
6142
6143    while {1} {
6144        set pos [icl_get]
6145
6146        set old [ier_get]
6147        matchSymbol_Identifier    ; # (n Identifier)
6148        ier_merge $old
6149
6150        if {$ok} continue
6151        break
6152    }
6153
6154    icl_rewind $pos
6155    iok_ok
6156    return
6157}
6158
6159proc ::page::parse::lemon::matchSymbol_ParseAccept {} {
6160    # ParseAccept = (x (n DPACC)
6161    #                  (n Codeblock))
6162
6163    variable ok
6164    if {[inc_restore ParseAccept]} {
6165        if {$ok} ias_push
6166        return
6167    }
6168
6169    set pos [icl_get]
6170    set mrk [ias_mark]
6171
6172    eseq27                ; # (x (n DPACC)
6173                            #    (n Codeblock))
6174
6175    isv_nonterminal_reduce ParseAccept $pos $mrk
6176    inc_save               ParseAccept $pos
6177    ias_pop2mark             $mrk
6178    if {$ok} ias_push
6179    ier_nonterminal        ParseAccept $pos
6180    return
6181}
6182
6183proc ::page::parse::lemon::eseq27 {} {
6184
6185    # (x (n DPACC)
6186    #    (n Codeblock))
6187
6188    variable ok
6189
6190    set pos [icl_get]
6191
6192    set old [ier_get]
6193    matchSymbol_DPACC    ; # (n DPACC)
6194    ier_merge $old
6195
6196    if {!$ok} {icl_rewind $pos ; return}
6197
6198    set mrk [ias_mark]
6199
6200    set old [ier_get]
6201    matchSymbol_Codeblock    ; # (n Codeblock)
6202    ier_merge $old
6203
6204    if {!$ok} {
6205        ias_pop2mark $mrk
6206        icl_rewind   $pos
6207        return
6208    }
6209
6210    return
6211}
6212
6213proc ::page::parse::lemon::matchSymbol_ParseFailure {} {
6214    # ParseFailure = (x (n DPFAIL)
6215    #                   (n Codeblock))
6216
6217    variable ok
6218    if {[inc_restore ParseFailure]} {
6219        if {$ok} ias_push
6220        return
6221    }
6222
6223    set pos [icl_get]
6224    set mrk [ias_mark]
6225
6226    eseq28                ; # (x (n DPFAIL)
6227                            #    (n Codeblock))
6228
6229    isv_nonterminal_reduce ParseFailure $pos $mrk
6230    inc_save               ParseFailure $pos
6231    ias_pop2mark             $mrk
6232    if {$ok} ias_push
6233    ier_nonterminal        ParseFailure $pos
6234    return
6235}
6236
6237proc ::page::parse::lemon::eseq28 {} {
6238
6239    # (x (n DPFAIL)
6240    #    (n Codeblock))
6241
6242    variable ok
6243
6244    set pos [icl_get]
6245
6246    set old [ier_get]
6247    matchSymbol_DPFAIL    ; # (n DPFAIL)
6248    ier_merge $old
6249
6250    if {!$ok} {icl_rewind $pos ; return}
6251
6252    set mrk [ias_mark]
6253
6254    set old [ier_get]
6255    matchSymbol_Codeblock    ; # (n Codeblock)
6256    ier_merge $old
6257
6258    if {!$ok} {
6259        ias_pop2mark $mrk
6260        icl_rewind   $pos
6261        return
6262    }
6263
6264    return
6265}
6266
6267proc ::page::parse::lemon::matchSymbol_Precedence {} {
6268    # Precedence = (x (n LBRACKET)
6269    #                 (n Identifier)
6270    #                 (n RBRACKET))
6271
6272    variable ok
6273    if {[inc_restore Precedence]} {
6274        if {$ok} ias_push
6275        return
6276    }
6277
6278    set pos [icl_get]
6279    set mrk [ias_mark]
6280
6281    eseq13                ; # (x (n LBRACKET)
6282                            #    (n Identifier)
6283                            #    (n RBRACKET))
6284
6285    isv_nonterminal_reduce Precedence $pos $mrk
6286    inc_save               Precedence $pos
6287    ias_pop2mark             $mrk
6288    if {$ok} ias_push
6289    ier_nonterminal        Precedence $pos
6290    return
6291}
6292
6293proc ::page::parse::lemon::eseq13 {} {
6294
6295    # (x (n LBRACKET)
6296    #    (n Identifier)
6297    #    (n RBRACKET))
6298
6299    variable ok
6300
6301    set pos [icl_get]
6302
6303    set old [ier_get]
6304    matchSymbol_LBRACKET    ; # (n LBRACKET)
6305    ier_merge $old
6306
6307    if {!$ok} {icl_rewind $pos ; return}
6308
6309    set mrk [ias_mark]
6310
6311    set old [ier_get]
6312    matchSymbol_Identifier    ; # (n Identifier)
6313    ier_merge $old
6314
6315    if {!$ok} {
6316        ias_pop2mark $mrk
6317        icl_rewind   $pos
6318        return
6319    }
6320
6321    set old [ier_get]
6322    matchSymbol_RBRACKET    ; # (n RBRACKET)
6323    ier_merge $old
6324
6325    if {!$ok} {
6326        ias_pop2mark $mrk
6327        icl_rewind   $pos
6328        return
6329    }
6330
6331    return
6332}
6333
6334proc ::page::parse::lemon::matchSymbol_RBRACE {} {
6335    # RBRACE = (t \})
6336
6337    variable ok
6338    if {[inc_restore RBRACE]} return
6339
6340    set pos [icl_get]
6341
6342    ict_advance \}
6343    if {$ok} {ict_match_token \175}
6344
6345    isv_clear
6346    inc_save               RBRACE $pos
6347    ier_nonterminal        RBRACE $pos
6348    return
6349}
6350
6351proc ::page::parse::lemon::matchSymbol_RBRACKET {} {
6352    # RBRACKET = (x (t ])
6353    #               (n SPACE))
6354
6355    if {[inc_restore RBRACKET]} return
6356
6357    set pos [icl_get]
6358
6359    eseq58                ; # (x (t ])
6360                            #    (n SPACE))
6361
6362    isv_clear
6363    inc_save               RBRACKET $pos
6364    ier_nonterminal        RBRACKET $pos
6365    return
6366}
6367
6368proc ::page::parse::lemon::eseq58 {} {
6369
6370    # (x (t ])
6371    #    (n SPACE))
6372
6373    variable ok
6374
6375    set pos [icl_get]
6376
6377    set old [ier_get]
6378    ict_advance \]
6379    if {$ok} {ict_match_token \135}
6380    ier_merge $old
6381
6382    if {!$ok} {icl_rewind $pos ; return}
6383
6384    set old [ier_get]
6385    matchSymbol_SPACE    ; # (n SPACE)
6386    ier_merge $old
6387
6388    if {!$ok} {icl_rewind $pos ; return}
6389
6390    return
6391}
6392
6393proc ::page::parse::lemon::matchSymbol_Right {} {
6394    # Right = (x (n DRIGHT)
6395    #            (+ (n Identifier))
6396    #            (n DOT))
6397
6398    variable ok
6399    if {[inc_restore Right]} {
6400        if {$ok} ias_push
6401        return
6402    }
6403
6404    set pos [icl_get]
6405    set mrk [ias_mark]
6406
6407    eseq30                ; # (x (n DRIGHT)
6408                            #    (+ (n Identifier))
6409                            #    (n DOT))
6410
6411    isv_nonterminal_reduce Right $pos $mrk
6412    inc_save               Right $pos
6413    ias_pop2mark             $mrk
6414    if {$ok} ias_push
6415    ier_nonterminal        Right $pos
6416    return
6417}
6418
6419proc ::page::parse::lemon::eseq30 {} {
6420
6421    # (x (n DRIGHT)
6422    #    (+ (n Identifier))
6423    #    (n DOT))
6424
6425    variable ok
6426
6427    set pos [icl_get]
6428
6429    set old [ier_get]
6430    matchSymbol_DRIGHT    ; # (n DRIGHT)
6431    ier_merge $old
6432
6433    if {!$ok} {icl_rewind $pos ; return}
6434
6435    set mrk [ias_mark]
6436
6437    set old [ier_get]
6438    epkleene29                ; # (+ (n Identifier))
6439    ier_merge $old
6440
6441    if {!$ok} {
6442        ias_pop2mark $mrk
6443        icl_rewind   $pos
6444        return
6445    }
6446
6447    set old [ier_get]
6448    matchSymbol_DOT    ; # (n DOT)
6449    ier_merge $old
6450
6451    if {!$ok} {
6452        ias_pop2mark $mrk
6453        icl_rewind   $pos
6454        return
6455    }
6456
6457    return
6458}
6459
6460proc ::page::parse::lemon::epkleene29 {} {
6461
6462    # (+ (n Identifier))
6463
6464    variable ok
6465
6466    set pos [icl_get]
6467
6468    set old [ier_get]
6469    matchSymbol_Identifier    ; # (n Identifier)
6470    ier_merge $old
6471
6472    if {!$ok} {
6473        icl_rewind $pos
6474        return
6475    }
6476
6477    while {1} {
6478        set pos [icl_get]
6479
6480        set old [ier_get]
6481        matchSymbol_Identifier    ; # (n Identifier)
6482        ier_merge $old
6483
6484        if {$ok} continue
6485        break
6486    }
6487
6488    icl_rewind $pos
6489    iok_ok
6490    return
6491}
6492
6493proc ::page::parse::lemon::matchSymbol_RPAREN {} {
6494    # RPAREN = (x (t \))
6495    #             (n SPACE))
6496
6497    if {[inc_restore RPAREN]} return
6498
6499    set pos [icl_get]
6500
6501    eseq56                ; # (x (t \))
6502                            #    (n SPACE))
6503
6504    isv_clear
6505    inc_save               RPAREN $pos
6506    ier_nonterminal        RPAREN $pos
6507    return
6508}
6509
6510proc ::page::parse::lemon::eseq56 {} {
6511
6512    # (x (t \))
6513    #    (n SPACE))
6514
6515    variable ok
6516
6517    set pos [icl_get]
6518
6519    set old [ier_get]
6520    ict_advance \)
6521    if {$ok} {ict_match_token \51}
6522    ier_merge $old
6523
6524    if {!$ok} {icl_rewind $pos ; return}
6525
6526    set old [ier_get]
6527    matchSymbol_SPACE    ; # (n SPACE)
6528    ier_merge $old
6529
6530    if {!$ok} {icl_rewind $pos ; return}
6531
6532    return
6533}
6534
6535proc ::page::parse::lemon::matchSymbol_Rule {} {
6536    # Rule = (x (n Identifier)
6537    #           (? (n Label))
6538    #           (n ASSIGN)
6539    #           (n Definition)
6540    #           (n DOT)
6541    #           (? (n Precedence))
6542    #           (? (n Codeblock)))
6543
6544    variable ok
6545    if {[inc_restore Rule]} {
6546        if {$ok} ias_push
6547        return
6548    }
6549
6550    set pos [icl_get]
6551    set mrk [ias_mark]
6552
6553    eseq8                ; # (x (n Identifier)
6554                           #    (? (n Label))
6555                           #    (n ASSIGN)
6556                           #    (n Definition)
6557                           #    (n DOT)
6558                           #    (? (n Precedence))
6559                           #    (? (n Codeblock)))
6560
6561    isv_nonterminal_reduce Rule $pos $mrk
6562    inc_save               Rule $pos
6563    ias_pop2mark             $mrk
6564    if {$ok} ias_push
6565    ier_nonterminal        Rule $pos
6566    return
6567}
6568
6569proc ::page::parse::lemon::eseq8 {} {
6570
6571    # (x (n Identifier)
6572    #    (? (n Label))
6573    #    (n ASSIGN)
6574    #    (n Definition)
6575    #    (n DOT)
6576    #    (? (n Precedence))
6577    #    (? (n Codeblock)))
6578
6579    variable ok
6580
6581    set pos [icl_get]
6582
6583    set mrk [ias_mark]
6584
6585    set old [ier_get]
6586    matchSymbol_Identifier    ; # (n Identifier)
6587    ier_merge $old
6588
6589    if {!$ok} {
6590        ias_pop2mark $mrk
6591        icl_rewind   $pos
6592        return
6593    }
6594
6595    set old [ier_get]
6596    eopt5                ; # (? (n Label))
6597    ier_merge $old
6598
6599    if {!$ok} {
6600        ias_pop2mark $mrk
6601        icl_rewind   $pos
6602        return
6603    }
6604
6605    set old [ier_get]
6606    matchSymbol_ASSIGN    ; # (n ASSIGN)
6607    ier_merge $old
6608
6609    if {!$ok} {
6610        ias_pop2mark $mrk
6611        icl_rewind   $pos
6612        return
6613    }
6614
6615    set old [ier_get]
6616    matchSymbol_Definition    ; # (n Definition)
6617    ier_merge $old
6618
6619    if {!$ok} {
6620        ias_pop2mark $mrk
6621        icl_rewind   $pos
6622        return
6623    }
6624
6625    set old [ier_get]
6626    matchSymbol_DOT    ; # (n DOT)
6627    ier_merge $old
6628
6629    if {!$ok} {
6630        ias_pop2mark $mrk
6631        icl_rewind   $pos
6632        return
6633    }
6634
6635    set old [ier_get]
6636    eopt6                ; # (? (n Precedence))
6637    ier_merge $old
6638
6639    if {!$ok} {
6640        ias_pop2mark $mrk
6641        icl_rewind   $pos
6642        return
6643    }
6644
6645    set old [ier_get]
6646    eopt7                ; # (? (n Codeblock))
6647    ier_merge $old
6648
6649    if {!$ok} {
6650        ias_pop2mark $mrk
6651        icl_rewind   $pos
6652        return
6653    }
6654
6655    return
6656}
6657
6658proc ::page::parse::lemon::eopt5 {} {
6659
6660    # (? (n Label))
6661
6662    variable ok
6663
6664    set pos [icl_get]
6665
6666    set old [ier_get]
6667    matchSymbol_Label    ; # (n Label)
6668    ier_merge $old
6669
6670    if {$ok} return
6671    icl_rewind $pos
6672    iok_ok
6673    return
6674}
6675
6676proc ::page::parse::lemon::eopt6 {} {
6677
6678    # (? (n Precedence))
6679
6680    variable ok
6681
6682    set pos [icl_get]
6683
6684    set old [ier_get]
6685    matchSymbol_Precedence    ; # (n Precedence)
6686    ier_merge $old
6687
6688    if {$ok} return
6689    icl_rewind $pos
6690    iok_ok
6691    return
6692}
6693
6694proc ::page::parse::lemon::eopt7 {} {
6695
6696    # (? (n Codeblock))
6697
6698    variable ok
6699
6700    set pos [icl_get]
6701
6702    set old [ier_get]
6703    matchSymbol_Codeblock    ; # (n Codeblock)
6704    ier_merge $old
6705
6706    if {$ok} return
6707    icl_rewind $pos
6708    iok_ok
6709    return
6710}
6711
6712proc ::page::parse::lemon::matchSymbol_SPACE {} {
6713    # SPACE = (* (/ (t <blank>)
6714    #               (t \t)
6715    #               (t \n)
6716    #               (t \r)
6717    #               (n C_COMMENT)
6718    #               (n Cplusplus_COMMENT)
6719    #               (n Ifndef)
6720    #               (n Ifdef)
6721    #               (n Endif)))
6722
6723    if {[inc_restore SPACE]} return
6724
6725    set pos [icl_get]
6726
6727    ekleene86                ; # (* (/ (t <blank>)
6728                               #       (t \t)
6729                               #       (t \n)
6730                               #       (t \r)
6731                               #       (n C_COMMENT)
6732                               #       (n Cplusplus_COMMENT)
6733                               #       (n Ifndef)
6734                               #       (n Ifdef)
6735                               #       (n Endif)))
6736
6737    isv_clear
6738    inc_save               SPACE $pos
6739    ier_nonterminal        SPACE $pos
6740    return
6741}
6742
6743proc ::page::parse::lemon::ekleene86 {} {
6744
6745    # (* (/ (t <blank>)
6746    #       (t \t)
6747    #       (t \n)
6748    #       (t \r)
6749    #       (n C_COMMENT)
6750    #       (n Cplusplus_COMMENT)
6751    #       (n Ifndef)
6752    #       (n Ifdef)
6753    #       (n Endif)))
6754
6755    variable ok
6756
6757    while {1} {
6758        set pos [icl_get]
6759
6760        set old [ier_get]
6761        ebra85                ; # (/ (t <blank>)
6762                                #    (t \t)
6763                                #    (t \n)
6764                                #    (t \r)
6765                                #    (n C_COMMENT)
6766                                #    (n Cplusplus_COMMENT)
6767                                #    (n Ifndef)
6768                                #    (n Ifdef)
6769                                #    (n Endif))
6770        ier_merge $old
6771
6772        if {$ok} continue
6773        break
6774    }
6775
6776    icl_rewind $pos
6777    iok_ok
6778    return
6779}
6780
6781proc ::page::parse::lemon::ebra85 {} {
6782
6783    # (/ (t <blank>)
6784    #    (t \t)
6785    #    (t \n)
6786    #    (t \r)
6787    #    (n C_COMMENT)
6788    #    (n Cplusplus_COMMENT)
6789    #    (n Ifndef)
6790    #    (n Ifdef)
6791    #    (n Endif))
6792
6793    variable ok
6794
6795    set pos [icl_get]
6796
6797    set old [ier_get]
6798    ict_advance <blank>
6799    if {$ok} {ict_match_token \40}
6800    ier_merge $old
6801
6802    if {$ok} return
6803    icl_rewind   $pos
6804
6805    set old [ier_get]
6806    ict_advance \\t
6807    if {$ok} {ict_match_token \t}
6808    ier_merge $old
6809
6810    if {$ok} return
6811    icl_rewind   $pos
6812
6813    set old [ier_get]
6814    ict_advance \\n
6815    if {$ok} {ict_match_token \n}
6816    ier_merge $old
6817
6818    if {$ok} return
6819    icl_rewind   $pos
6820
6821    set old [ier_get]
6822    ict_advance \\r
6823    if {$ok} {ict_match_token \r}
6824    ier_merge $old
6825
6826    if {$ok} return
6827    icl_rewind   $pos
6828
6829    set old [ier_get]
6830    matchSymbol_C_COMMENT    ; # (n C_COMMENT)
6831    ier_merge $old
6832
6833    if {$ok} return
6834    icl_rewind   $pos
6835
6836    set old [ier_get]
6837    matchSymbol_Cplusplus_COMMENT    ; # (n Cplusplus_COMMENT)
6838    ier_merge $old
6839
6840    if {$ok} return
6841    icl_rewind   $pos
6842
6843    set old [ier_get]
6844    matchSymbol_Ifndef    ; # (n Ifndef)
6845    ier_merge $old
6846
6847    if {$ok} return
6848    icl_rewind   $pos
6849
6850    set old [ier_get]
6851    matchSymbol_Ifdef    ; # (n Ifdef)
6852    ier_merge $old
6853
6854    if {$ok} return
6855    icl_rewind   $pos
6856
6857    set old [ier_get]
6858    matchSymbol_Endif    ; # (n Endif)
6859    ier_merge $old
6860
6861    if {$ok} return
6862    icl_rewind   $pos
6863
6864    return
6865}
6866
6867proc ::page::parse::lemon::matchSymbol_StackOverflow {} {
6868    # StackOverflow = (x (n DSTKOVER)
6869    #                    (n Codeblock))
6870
6871    variable ok
6872    if {[inc_restore StackOverflow]} {
6873        if {$ok} ias_push
6874        return
6875    }
6876
6877    set pos [icl_get]
6878    set mrk [ias_mark]
6879
6880    eseq31                ; # (x (n DSTKOVER)
6881                            #    (n Codeblock))
6882
6883    isv_nonterminal_reduce StackOverflow $pos $mrk
6884    inc_save               StackOverflow $pos
6885    ias_pop2mark             $mrk
6886    if {$ok} ias_push
6887    ier_nonterminal        StackOverflow $pos
6888    return
6889}
6890
6891proc ::page::parse::lemon::eseq31 {} {
6892
6893    # (x (n DSTKOVER)
6894    #    (n Codeblock))
6895
6896    variable ok
6897
6898    set pos [icl_get]
6899
6900    set old [ier_get]
6901    matchSymbol_DSTKOVER    ; # (n DSTKOVER)
6902    ier_merge $old
6903
6904    if {!$ok} {icl_rewind $pos ; return}
6905
6906    set mrk [ias_mark]
6907
6908    set old [ier_get]
6909    matchSymbol_Codeblock    ; # (n Codeblock)
6910    ier_merge $old
6911
6912    if {!$ok} {
6913        ias_pop2mark $mrk
6914        icl_rewind   $pos
6915        return
6916    }
6917
6918    return
6919}
6920
6921proc ::page::parse::lemon::matchSymbol_Stacksize {} {
6922    # Stacksize = (x (n DSTKSZ)
6923    #                (n NaturalNumber))
6924
6925    variable ok
6926    if {[inc_restore Stacksize]} {
6927        if {$ok} ias_push
6928        return
6929    }
6930
6931    set pos [icl_get]
6932    set mrk [ias_mark]
6933
6934    eseq32                ; # (x (n DSTKSZ)
6935                            #    (n NaturalNumber))
6936
6937    isv_nonterminal_reduce Stacksize $pos $mrk
6938    inc_save               Stacksize $pos
6939    ias_pop2mark             $mrk
6940    if {$ok} ias_push
6941    ier_nonterminal        Stacksize $pos
6942    return
6943}
6944
6945proc ::page::parse::lemon::eseq32 {} {
6946
6947    # (x (n DSTKSZ)
6948    #    (n NaturalNumber))
6949
6950    variable ok
6951
6952    set pos [icl_get]
6953
6954    set old [ier_get]
6955    matchSymbol_DSTKSZ    ; # (n DSTKSZ)
6956    ier_merge $old
6957
6958    if {!$ok} {icl_rewind $pos ; return}
6959
6960    set mrk [ias_mark]
6961
6962    set old [ier_get]
6963    matchSymbol_NaturalNumber    ; # (n NaturalNumber)
6964    ier_merge $old
6965
6966    if {!$ok} {
6967        ias_pop2mark $mrk
6968        icl_rewind   $pos
6969        return
6970    }
6971
6972    return
6973}
6974
6975proc ::page::parse::lemon::matchSymbol_StartSymbol {} {
6976    # StartSymbol = (x (n DSTART)
6977    #                  (n Identifier))
6978
6979    variable ok
6980    if {[inc_restore StartSymbol]} {
6981        if {$ok} ias_push
6982        return
6983    }
6984
6985    set pos [icl_get]
6986    set mrk [ias_mark]
6987
6988    eseq33                ; # (x (n DSTART)
6989                            #    (n Identifier))
6990
6991    isv_nonterminal_reduce StartSymbol $pos $mrk
6992    inc_save               StartSymbol $pos
6993    ias_pop2mark             $mrk
6994    if {$ok} ias_push
6995    ier_nonterminal        StartSymbol $pos
6996    return
6997}
6998
6999proc ::page::parse::lemon::eseq33 {} {
7000
7001    # (x (n DSTART)
7002    #    (n Identifier))
7003
7004    variable ok
7005
7006    set pos [icl_get]
7007
7008    set old [ier_get]
7009    matchSymbol_DSTART    ; # (n DSTART)
7010    ier_merge $old
7011
7012    if {!$ok} {icl_rewind $pos ; return}
7013
7014    set mrk [ias_mark]
7015
7016    set old [ier_get]
7017    matchSymbol_Identifier    ; # (n Identifier)
7018    ier_merge $old
7019
7020    if {!$ok} {
7021        ias_pop2mark $mrk
7022        icl_rewind   $pos
7023        return
7024    }
7025
7026    return
7027}
7028
7029proc ::page::parse::lemon::matchSymbol_Statement {} {
7030    # Statement = (x (/ (n Directive)
7031    #                   (n Rule))
7032    #                (n SPACE))
7033
7034    variable ok
7035    if {[inc_restore Statement]} {
7036        if {$ok} ias_push
7037        return
7038    }
7039
7040    set pos [icl_get]
7041    set mrk [ias_mark]
7042
7043    eseq4                ; # (x (/ (n Directive)
7044                           #       (n Rule))
7045                           #    (n SPACE))
7046
7047    isv_nonterminal_reduce Statement $pos $mrk
7048    inc_save               Statement $pos
7049    ias_pop2mark             $mrk
7050    if {$ok} ias_push
7051    ier_nonterminal        Statement $pos
7052    return
7053}
7054
7055proc ::page::parse::lemon::eseq4 {} {
7056
7057    # (x (/ (n Directive)
7058    #       (n Rule))
7059    #    (n SPACE))
7060
7061    variable ok
7062
7063    set pos [icl_get]
7064
7065    set mrk [ias_mark]
7066
7067    set old [ier_get]
7068    ebra3                ; # (/ (n Directive)
7069                           #    (n Rule))
7070    ier_merge $old
7071
7072    if {!$ok} {
7073        ias_pop2mark $mrk
7074        icl_rewind   $pos
7075        return
7076    }
7077
7078    set old [ier_get]
7079    matchSymbol_SPACE    ; # (n SPACE)
7080    ier_merge $old
7081
7082    if {!$ok} {
7083        ias_pop2mark $mrk
7084        icl_rewind   $pos
7085        return
7086    }
7087
7088    return
7089}
7090
7091proc ::page::parse::lemon::ebra3 {} {
7092
7093    # (/ (n Directive)
7094    #    (n Rule))
7095
7096    variable ok
7097
7098    set pos [icl_get]
7099
7100    set mrk [ias_mark]
7101    set old [ier_get]
7102    matchSymbol_Directive    ; # (n Directive)
7103    ier_merge $old
7104
7105    if {$ok} return
7106    ias_pop2mark $mrk
7107    icl_rewind   $pos
7108
7109    set mrk [ias_mark]
7110    set old [ier_get]
7111    matchSymbol_Rule    ; # (n Rule)
7112    ier_merge $old
7113
7114    if {$ok} return
7115    ias_pop2mark $mrk
7116    icl_rewind   $pos
7117
7118    return
7119}
7120
7121proc ::page::parse::lemon::matchSymbol_SyntaxError {} {
7122    # SyntaxError = (x (n DSYNERR)
7123    #                  (n Codeblock))
7124
7125    variable ok
7126    if {[inc_restore SyntaxError]} {
7127        if {$ok} ias_push
7128        return
7129    }
7130
7131    set pos [icl_get]
7132    set mrk [ias_mark]
7133
7134    eseq34                ; # (x (n DSYNERR)
7135                            #    (n Codeblock))
7136
7137    isv_nonterminal_reduce SyntaxError $pos $mrk
7138    inc_save               SyntaxError $pos
7139    ias_pop2mark             $mrk
7140    if {$ok} ias_push
7141    ier_nonterminal        SyntaxError $pos
7142    return
7143}
7144
7145proc ::page::parse::lemon::eseq34 {} {
7146
7147    # (x (n DSYNERR)
7148    #    (n Codeblock))
7149
7150    variable ok
7151
7152    set pos [icl_get]
7153
7154    set old [ier_get]
7155    matchSymbol_DSYNERR    ; # (n DSYNERR)
7156    ier_merge $old
7157
7158    if {!$ok} {icl_rewind $pos ; return}
7159
7160    set mrk [ias_mark]
7161
7162    set old [ier_get]
7163    matchSymbol_Codeblock    ; # (n Codeblock)
7164    ier_merge $old
7165
7166    if {!$ok} {
7167        ias_pop2mark $mrk
7168        icl_rewind   $pos
7169        return
7170    }
7171
7172    return
7173}
7174
7175proc ::page::parse::lemon::matchSymbol_TokenDestructor {} {
7176    # TokenDestructor = (x (n DTOKDEST)
7177    #                      (n Identifier)
7178    #                      (n Codeblock))
7179
7180    variable ok
7181    if {[inc_restore TokenDestructor]} {
7182        if {$ok} ias_push
7183        return
7184    }
7185
7186    set pos [icl_get]
7187    set mrk [ias_mark]
7188
7189    eseq35                ; # (x (n DTOKDEST)
7190                            #    (n Identifier)
7191                            #    (n Codeblock))
7192
7193    isv_nonterminal_reduce TokenDestructor $pos $mrk
7194    inc_save               TokenDestructor $pos
7195    ias_pop2mark             $mrk
7196    if {$ok} ias_push
7197    ier_nonterminal        TokenDestructor $pos
7198    return
7199}
7200
7201proc ::page::parse::lemon::eseq35 {} {
7202
7203    # (x (n DTOKDEST)
7204    #    (n Identifier)
7205    #    (n Codeblock))
7206
7207    variable ok
7208
7209    set pos [icl_get]
7210
7211    set old [ier_get]
7212    matchSymbol_DTOKDEST    ; # (n DTOKDEST)
7213    ier_merge $old
7214
7215    if {!$ok} {icl_rewind $pos ; return}
7216
7217    set mrk [ias_mark]
7218
7219    set old [ier_get]
7220    matchSymbol_Identifier    ; # (n Identifier)
7221    ier_merge $old
7222
7223    if {!$ok} {
7224        ias_pop2mark $mrk
7225        icl_rewind   $pos
7226        return
7227    }
7228
7229    set old [ier_get]
7230    matchSymbol_Codeblock    ; # (n Codeblock)
7231    ier_merge $old
7232
7233    if {!$ok} {
7234        ias_pop2mark $mrk
7235        icl_rewind   $pos
7236        return
7237    }
7238
7239    return
7240}
7241
7242proc ::page::parse::lemon::matchSymbol_TokenPrefix {} {
7243    # TokenPrefix = (x (n DTOKPFX)
7244    #                  (n Identifier))
7245
7246    variable ok
7247    if {[inc_restore TokenPrefix]} {
7248        if {$ok} ias_push
7249        return
7250    }
7251
7252    set pos [icl_get]
7253    set mrk [ias_mark]
7254
7255    eseq36                ; # (x (n DTOKPFX)
7256                            #    (n Identifier))
7257
7258    isv_nonterminal_reduce TokenPrefix $pos $mrk
7259    inc_save               TokenPrefix $pos
7260    ias_pop2mark             $mrk
7261    if {$ok} ias_push
7262    ier_nonterminal        TokenPrefix $pos
7263    return
7264}
7265
7266proc ::page::parse::lemon::eseq36 {} {
7267
7268    # (x (n DTOKPFX)
7269    #    (n Identifier))
7270
7271    variable ok
7272
7273    set pos [icl_get]
7274
7275    set old [ier_get]
7276    matchSymbol_DTOKPFX    ; # (n DTOKPFX)
7277    ier_merge $old
7278
7279    if {!$ok} {icl_rewind $pos ; return}
7280
7281    set mrk [ias_mark]
7282
7283    set old [ier_get]
7284    matchSymbol_Identifier    ; # (n Identifier)
7285    ier_merge $old
7286
7287    if {!$ok} {
7288        ias_pop2mark $mrk
7289        icl_rewind   $pos
7290        return
7291    }
7292
7293    return
7294}
7295
7296proc ::page::parse::lemon::matchSymbol_TokenType {} {
7297    # TokenType = (x (n DTOKTYPE)
7298    #                (n Codeblock))
7299
7300    variable ok
7301    if {[inc_restore TokenType]} {
7302        if {$ok} ias_push
7303        return
7304    }
7305
7306    set pos [icl_get]
7307    set mrk [ias_mark]
7308
7309    eseq37                ; # (x (n DTOKTYPE)
7310                            #    (n Codeblock))
7311
7312    isv_nonterminal_reduce TokenType $pos $mrk
7313    inc_save               TokenType $pos
7314    ias_pop2mark             $mrk
7315    if {$ok} ias_push
7316    ier_nonterminal        TokenType $pos
7317    return
7318}
7319
7320proc ::page::parse::lemon::eseq37 {} {
7321
7322    # (x (n DTOKTYPE)
7323    #    (n Codeblock))
7324
7325    variable ok
7326
7327    set pos [icl_get]
7328
7329    set old [ier_get]
7330    matchSymbol_DTOKTYPE    ; # (n DTOKTYPE)
7331    ier_merge $old
7332
7333    if {!$ok} {icl_rewind $pos ; return}
7334
7335    set mrk [ias_mark]
7336
7337    set old [ier_get]
7338    matchSymbol_Codeblock    ; # (n Codeblock)
7339    ier_merge $old
7340
7341    if {!$ok} {
7342        ias_pop2mark $mrk
7343        icl_rewind   $pos
7344        return
7345    }
7346
7347    return
7348}
7349
7350proc ::page::parse::lemon::matchSymbol_Type {} {
7351    # Type = (x (n DTYPE)
7352    #           (n Identifier)
7353    #           (n Codeblock))
7354
7355    variable ok
7356    if {[inc_restore Type]} {
7357        if {$ok} ias_push
7358        return
7359    }
7360
7361    set pos [icl_get]
7362    set mrk [ias_mark]
7363
7364    eseq38                ; # (x (n DTYPE)
7365                            #    (n Identifier)
7366                            #    (n Codeblock))
7367
7368    isv_nonterminal_reduce Type $pos $mrk
7369    inc_save               Type $pos
7370    ias_pop2mark             $mrk
7371    if {$ok} ias_push
7372    ier_nonterminal        Type $pos
7373    return
7374}
7375
7376proc ::page::parse::lemon::eseq38 {} {
7377
7378    # (x (n DTYPE)
7379    #    (n Identifier)
7380    #    (n Codeblock))
7381
7382    variable ok
7383
7384    set pos [icl_get]
7385
7386    set old [ier_get]
7387    matchSymbol_DTYPE    ; # (n DTYPE)
7388    ier_merge $old
7389
7390    if {!$ok} {icl_rewind $pos ; return}
7391
7392    set mrk [ias_mark]
7393
7394    set old [ier_get]
7395    matchSymbol_Identifier    ; # (n Identifier)
7396    ier_merge $old
7397
7398    if {!$ok} {
7399        ias_pop2mark $mrk
7400        icl_rewind   $pos
7401        return
7402    }
7403
7404    set old [ier_get]
7405    matchSymbol_Codeblock    ; # (n Codeblock)
7406    ier_merge $old
7407
7408    if {!$ok} {
7409        ias_pop2mark $mrk
7410        icl_rewind   $pos
7411        return
7412    }
7413
7414    return
7415}
7416
7417# ### ### ### ######### ######### #########
7418## Package Management
7419
7420package provide page::parse::lemon 0.1
7421