LCOV - code coverage report
Current view: top level - /mnt/build/buildbot/bld/build-lcov/gcc/m2/gm2-compiler-boot - P1Build.c (source / functions) Coverage Total Hit
Test: gcc.info Lines: 62.3 % 1846 1150
Test Date: 2026-02-28 14:20:25 Functions: 91.2 % 147 134
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /* do not edit automatically generated by mc from P1Build.  */
       2              : /* output from m2-1.bnf, automatically generated do not edit if these
       3              :    are the top two lines in the file.
       4              : 
       5              : Copyright (C) 2001-2026 Free Software Foundation, Inc.
       6              : Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
       7              : 
       8              : This file is part of GNU Modula-2.
       9              : 
      10              : GNU Modula-2 is free software; you can redistribute it and/or modify
      11              : it under the terms of the GNU General Public License as published by
      12              : the Free Software Foundation; either version 3, or (at your option)
      13              : any later version.
      14              : 
      15              : GNU Modula-2 is distributed in the hope that it will be useful, but
      16              : WITHOUT ANY WARRANTY; without even the implied warranty of
      17              : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      18              : General Public License for more details.
      19              : 
      20              : You should have received a copy of the GNU General Public License
      21              : along with GNU Modula-2; see the file COPYING.  If not,
      22              : see <https://www.gnu.org/licenses/>.  */
      23              : 
      24              : #include "config.h"
      25              : #include "system.h"
      26              : #include "gcc-consolidation.h"
      27              : 
      28              : #include <stdbool.h>
      29              : #   if !defined (PROC_D)
      30              : #      define PROC_D
      31              :        typedef void (*PROC_t) (void);
      32              :        typedef struct { PROC_t proc; } PROC;
      33              : #   endif
      34              : 
      35              : #   if !defined (TRUE)
      36              : #      define TRUE (1==1)
      37              : #   endif
      38              : 
      39              : #   if !defined (FALSE)
      40              : #      define FALSE (1==0)
      41              : #   endif
      42              : 
      43              : #define _P1Build_C
      44              : 
      45              : #include "GP1Build.h"
      46              : #   include "GM2LexBuf.h"
      47              : #   include "GM2Error.h"
      48              : #   include "GM2Quads.h"
      49              : #   include "GM2Reserved.h"
      50              : #   include "GNameKey.h"
      51              : #   include "GStrLib.h"
      52              : #   include "GP2SymBuild.h"
      53              : #   include "GDynamicStrings.h"
      54              : #   include "GM2Debug.h"
      55              : #   include "GM2Printf.h"
      56              : #   include "GSymbolTable.h"
      57              : #   include "GP1SymBuild.h"
      58              : 
      59              : #   define Debugging false
      60              : #   define Pass0 false
      61              : #   define Pass1 true
      62              : #   define Pass2 false
      63              : #   define Pass3 false
      64              : #   define MaxInsert 10
      65              : typedef unsigned int P1Build_stop0;
      66              : 
      67              : typedef unsigned int P1Build_SetOfStop0;
      68              : 
      69              : typedef unsigned int P1Build_stop1;
      70              : 
      71              : typedef unsigned int P1Build_SetOfStop1;
      72              : 
      73              : typedef unsigned int P1Build_stop2;
      74              : 
      75              : typedef unsigned int P1Build_SetOfStop2;
      76              : 
      77              : static bool WasNoError;
      78              : static NameKey_Name LastIdent;
      79              : static unsigned int InsertCount;
      80              : 
      81              : /*
      82              :    CompilationUnit - returns TRUE if the input was correct enough to parse
      83              :                      in future passes.
      84              : */
      85              : 
      86              : extern "C" bool P1Build_CompilationUnit (void);
      87              : static void ErrorString (DynamicStrings_String s);
      88              : static void ErrorArray (const char *a_, unsigned int _a_high);
      89              : 
      90              : /*
      91              :    DescribeStop - issues a message explaining what tokens were expected
      92              : */
      93              : 
      94              : static DynamicStrings_String DescribeStop (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
      95              : 
      96              : /*
      97              :    DescribeError - issues a message explaining what tokens were expected
      98              : */
      99              : 
     100              : static void DescribeError (void);
     101              : 
     102              : /*
     103              :    SyntaxError - after a syntax error we skip all tokens up until we reach
     104              :                  a stop symbol.
     105              : */
     106              : 
     107              : static void SyntaxError (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     108              : 
     109              : /*
     110              :    SyntaxCheck -
     111              : */
     112              : 
     113              : static void SyntaxCheck (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     114              : 
     115              : /*
     116              :    WarnMissingToken - generates a warning message about a missing token, t.
     117              : */
     118              : 
     119              : static void WarnMissingToken (M2Reserved_toktype t);
     120              : 
     121              : /*
     122              :    MissingToken - generates a warning message about a missing token, t.
     123              : */
     124              : 
     125              : static void MissingToken (M2Reserved_toktype t);
     126              : 
     127              : /*
     128              :    CheckAndInsert -
     129              : */
     130              : 
     131              : static bool CheckAndInsert (M2Reserved_toktype t, P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     132              : 
     133              : /*
     134              :    InStopSet
     135              : */
     136              : 
     137              : static bool InStopSet (M2Reserved_toktype t, P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     138              : 
     139              : /*
     140              :    PeepToken - peep token checks to see whether the stopset is satisfied by currenttoken
     141              :                If it is not then it will insert a token providing the token
     142              :                is one of ; ] ) } . OF END ,
     143              : 
     144              :                if the stopset contains <identtok> then we do not insert a token
     145              : */
     146              : 
     147              : static void PeepToken (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     148              : 
     149              : /*
     150              :    Expect -
     151              : */
     152              : 
     153              : static void Expect (M2Reserved_toktype t, P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     154              : 
     155              : /*
     156              :    Ident - error checking varient of Ident
     157              : */
     158              : 
     159              : static void Ident (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     160              : 
     161              : /*
     162              :    IdentScope - error checking varient of Ident but it remembers the
     163              :                 idents name in the current scope.
     164              : */
     165              : 
     166              : static void IdentScope (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     167              : 
     168              : /*
     169              :    PossiblyExportIdent - error checking varient of Ident which also
     170              :                          checks to see if this ident should be
     171              :                          explicitly exported.
     172              : */
     173              : 
     174              : static void PossiblyExportIdent (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     175              : 
     176              : /*
     177              :    string -
     178              : */
     179              : 
     180              : static void string (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     181              : 
     182              : /*
     183              :    Integer -
     184              : */
     185              : 
     186              : static void Integer (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     187              : 
     188              : /*
     189              :    Real -
     190              : */
     191              : 
     192              : static void Real (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     193              : 
     194              : /*
     195              :    FileUnit := 
     196              :                % PushAutoOff  %
     197              :                ( DefinitionModule  | 
     198              :                  ImplementationOrProgramModule  ) 
     199              :                % PopAuto  %
     200              :                
     201              : 
     202              :    first  symbols:implementationtok, moduletok, definitiontok
     203              :    
     204              :    cannot reachend
     205              : */
     206              : 
     207              : static void FileUnit (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     208              : 
     209              : /*
     210              :    ProgramModule := 'MODULE' 
     211              :                     % M2Error.DefaultProgramModule  %
     212              :                     
     213              :                     % PushAutoOn ;  %
     214              :                     Ident 
     215              :                     % P1StartBuildProgramModule ;  %
     216              :                     
     217              :                     % PushAutoOff ;  %
     218              :                     [ Priority  ] ';' 
     219              :                     % PushAutoOn ;  %
     220              :                     { Import 
     221              :                       % BuildImportOuterModule(FALSE)  %
     222              :                        } 
     223              :                     % PopAuto  %
     224              :                     Block 
     225              :                     % PushAutoOn  %
     226              :                     Ident 
     227              :                     % P1EndBuildProgramModule  %
     228              :                     '.' 
     229              :                     % PopAuto ; PopAuto ; PopAuto  %
     230              :                     
     231              : 
     232              :    first  symbols:moduletok
     233              :    
     234              :    cannot reachend
     235              : */
     236              : 
     237              : static void ProgramModule (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     238              : 
     239              : /*
     240              :    ImplementationModule := 'IMPLEMENTATION' 
     241              :                            % M2Error.DefaultImplementationModule  %
     242              :                            'MODULE' 
     243              :                            % PushAutoOn ;  %
     244              :                            Ident 
     245              :                            % P1StartBuildImplementationModule ;  %
     246              :                            
     247              :                            % PushAutoOff ;  %
     248              :                            [ Priority  ] ';' 
     249              :                            % PushAutoOn ;  %
     250              :                            { Import 
     251              :                              % BuildImportOuterModule(FALSE)  %
     252              :                               } 
     253              :                            % PopAuto ;  %
     254              :                            Block 
     255              :                            % PushAutoOn ;  %
     256              :                            Ident 
     257              :                            % P1EndBuildImplementationModule  %
     258              :                            
     259              :                            % PopAuto ; PopAuto ; PopAuto ;  %
     260              :                            '.' 
     261              : 
     262              :    first  symbols:implementationtok
     263              :    
     264              :    cannot reachend
     265              : */
     266              : 
     267              : static void ImplementationModule (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     268              : 
     269              : /*
     270              :    ImplementationOrProgramModule := ImplementationModule  | 
     271              :                                     ProgramModule 
     272              : 
     273              :    first  symbols:moduletok, implementationtok
     274              :    
     275              :    cannot reachend
     276              : */
     277              : 
     278              : static void ImplementationOrProgramModule (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     279              : 
     280              : /*
     281              :    Number := Integer  | Real 
     282              : 
     283              :    first  symbols:realtok, integertok
     284              :    
     285              :    cannot reachend
     286              : */
     287              : 
     288              : static void Number (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     289              : 
     290              : /*
     291              :    Qualident := Ident { '.' Ident  } 
     292              : 
     293              :    first  symbols:identtok
     294              :    
     295              :    cannot reachend
     296              : */
     297              : 
     298              : static void Qualident (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     299              : 
     300              : /*
     301              :    ConstantDeclaration := PossiblyExportIdent '=' ConstExpression 
     302              : 
     303              :    first  symbols:identtok
     304              :    
     305              :    cannot reachend
     306              : */
     307              : 
     308              : static void ConstantDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     309              : 
     310              : /*
     311              :    ConstExpression := 
     312              :                       % PushAutoOff  %
     313              :                       SimpleConstExpr [ Relation SimpleConstExpr  ] 
     314              :                       
     315              :                       % PopAuto  %
     316              :                       
     317              : 
     318              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     319              :    
     320              :    cannot reachend
     321              : */
     322              : 
     323              : static void ConstExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     324              : 
     325              : /*
     326              :    Relation := '='  | '#'  | '<>'  | '<'  | '<='  | 
     327              :                '>'  | '>='  | 'IN' 
     328              : 
     329              :    first  symbols:intok, greaterequaltok, greatertok, lessequaltok, lesstok, lessgreatertok, hashtok, equaltok
     330              :    
     331              :    cannot reachend
     332              : */
     333              : 
     334              : static void Relation (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     335              : 
     336              : /*
     337              :    SimpleConstExpr := UnaryOrConstTerm { AddOperator 
     338              :                                          ConstTerm  } 
     339              : 
     340              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     341              :    
     342              :    cannot reachend
     343              : */
     344              : 
     345              : static void SimpleConstExpr (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     346              : 
     347              : /*
     348              :    UnaryOrConstTerm := '+' ConstTerm  | 
     349              :                        '-' ConstTerm  | 
     350              :                        ConstTerm 
     351              : 
     352              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     353              :    
     354              :    cannot reachend
     355              : */
     356              : 
     357              : static void UnaryOrConstTerm (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     358              : 
     359              : /*
     360              :    AddOperator := '+'  | '-'  | 'OR' 
     361              : 
     362              :    first  symbols:ortok, minustok, plustok
     363              :    
     364              :    cannot reachend
     365              : */
     366              : 
     367              : static void AddOperator (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     368              : 
     369              : /*
     370              :    ConstTerm := ConstFactor { MulOperator ConstFactor  } 
     371              : 
     372              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok
     373              :    
     374              :    cannot reachend
     375              : */
     376              : 
     377              : static void ConstTerm (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     378              : 
     379              : /*
     380              :    MulOperator := '*'  | '/'  | 'DIV'  | 'MOD'  | 
     381              :                   'REM'  | 'AND'  | '&' 
     382              : 
     383              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
     384              :    
     385              :    cannot reachend
     386              : */
     387              : 
     388              : static void MulOperator (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     389              : 
     390              : /*
     391              :    ConstFactor := Number  | ConstString  | 
     392              :                   ConstSetOrQualidentOrFunction  | 
     393              :                   '(' ConstExpression ')'  | 
     394              :                   'NOT' ConstFactor  | 
     395              :                   ConstAttribute 
     396              : 
     397              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok
     398              :    
     399              :    cannot reachend
     400              : */
     401              : 
     402              : static void ConstFactor (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     403              : 
     404              : /*
     405              :    ConstString := string 
     406              : 
     407              :    first  symbols:stringtok
     408              :    
     409              :    cannot reachend
     410              : */
     411              : 
     412              : static void ConstString (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     413              : 
     414              : /*
     415              :    ComponentElement := ConstExpression [ '..' ConstExpression  ] 
     416              : 
     417              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     418              :    
     419              :    cannot reachend
     420              : */
     421              : 
     422              : static void ComponentElement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     423              : 
     424              : /*
     425              :    ComponentValue := ComponentElement [ 'BY' ConstExpression  ] 
     426              : 
     427              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     428              :    
     429              :    cannot reachend
     430              : */
     431              : 
     432              : static void ComponentValue (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     433              : 
     434              : /*
     435              :    ArraySetRecordValue := ComponentValue { ',' ComponentValue  } 
     436              : 
     437              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     438              :    
     439              :    cannot reachend
     440              : */
     441              : 
     442              : static void ArraySetRecordValue (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     443              : 
     444              : /*
     445              :    Constructor := '{' [ ArraySetRecordValue  ] '}' 
     446              : 
     447              :    first  symbols:lcbratok
     448              :    
     449              :    cannot reachend
     450              : */
     451              : 
     452              : static void Constructor (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     453              : 
     454              : /*
     455              :    ConstSetOrQualidentOrFunction := Constructor  | 
     456              :                                     Qualident [ Constructor  | 
     457              :                                                 ConstActualParameters  ] 
     458              : 
     459              :    first  symbols:identtok, lcbratok
     460              :    
     461              :    cannot reachend
     462              : */
     463              : 
     464              : static void ConstSetOrQualidentOrFunction (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     465              : 
     466              : /*
     467              :    ConstActualParameters := '(' [ ExpList  ] ')' 
     468              : 
     469              :    first  symbols:lparatok
     470              :    
     471              :    cannot reachend
     472              : */
     473              : 
     474              : static void ConstActualParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     475              : 
     476              : /*
     477              :    ConstAttribute := '__ATTRIBUTE__' '__BUILTIN__' 
     478              :                      '(' '(' ConstAttributeExpression 
     479              :                      ')' ')' 
     480              : 
     481              :    first  symbols:attributetok
     482              :    
     483              :    cannot reachend
     484              : */
     485              : 
     486              : static void ConstAttribute (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     487              : 
     488              : /*
     489              :    ConstAttributeExpression := Ident  | '<' Qualident 
     490              :                                ',' Ident '>' 
     491              : 
     492              :    first  symbols:lesstok, identtok
     493              :    
     494              :    cannot reachend
     495              : */
     496              : 
     497              : static void ConstAttributeExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     498              : 
     499              : /*
     500              :    ByteAlignment := '' 
     501              : 
     502              :    first  symbols:ldirectivetok
     503              :    
     504              :    cannot reachend
     505              : */
     506              : 
     507              : static void ByteAlignment (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     508              : 
     509              : /*
     510              :    Alignment := [ ByteAlignment  ] 
     511              : 
     512              :    first  symbols:ldirectivetok
     513              :    
     514              :    reachend
     515              : */
     516              : 
     517              : static void Alignment (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     518              : 
     519              : /*
     520              :    TypeDeclaration := 
     521              :                       % PushAutoOn  %
     522              :                       ( IdentScope '=' Type Alignment  ) 
     523              :                       
     524              :                       % PopAuto     %
     525              :                       
     526              : 
     527              :    first  symbols:identtok
     528              :    
     529              :    cannot reachend
     530              : */
     531              : 
     532              : static void TypeDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     533              : 
     534              : /*
     535              :    Type := 
     536              :            % VAR Name: CARDINAL ;  %
     537              :            
     538              :            % PushAutoOff  %
     539              :            ( SimpleType  | ArrayType  | RecordType  | 
     540              :              SetType  | PointerType  | 
     541              :              ProcedureType  ) 
     542              :            % PopAuto  %
     543              :            
     544              :            % PopT(Name)   remove TYPE name from stack   %
     545              :            
     546              : 
     547              :    first  symbols:lparatok, lsbratok, proceduretok, pointertok, settok, packedsettok, oftok, recordtok, arraytok, identtok
     548              :    
     549              :    cannot reachend
     550              : */
     551              : 
     552              : static void Type (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     553              : 
     554              : /*
     555              :    SimpleType := Qualident [ SubrangeType  ]  | 
     556              :                  Enumeration  | SubrangeType 
     557              : 
     558              :    first  symbols:lsbratok, lparatok, identtok
     559              :    
     560              :    cannot reachend
     561              : */
     562              : 
     563              : static void SimpleType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     564              : 
     565              : /*
     566              :    Enumeration := '(' 
     567              :                   % PushAutoOn  %
     568              :                   ( PossiblyExportIdentList 
     569              :                     % StartBuildEnumeration  %
     570              :                     
     571              :                     % EndBuildEnumeration  %
     572              :                      ) 
     573              :                   % PopAuto  %
     574              :                   ')' 
     575              : 
     576              :    first  symbols:lparatok
     577              :    
     578              :    cannot reachend
     579              : */
     580              : 
     581              : static void Enumeration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     582              : 
     583              : /*
     584              :    IdentList := Ident 
     585              :                 % VAR
     586              :                                                                                                   on: BOOLEAN ;
     587              :                                                                                                   n : CARDINAL ;  %
     588              :                 
     589              :                 % on := IsAutoPushOn() ;
     590              :                   IF on
     591              :                   THEN
     592              :                      n := 1
     593              :                   END  %
     594              :                 { ',' Ident 
     595              :                   % IF on
     596              :                     THEN
     597              :                        INC(n)
     598              :                     END  %
     599              :                    } 
     600              :                 % IF on
     601              :                   THEN
     602              :                      PushT(n)
     603              :                   END  %
     604              :                 
     605              : 
     606              :    first  symbols:identtok
     607              :    
     608              :    cannot reachend
     609              : */
     610              : 
     611              : static void IdentList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     612              : 
     613              : /*
     614              :    PossiblyExportIdentList := PossiblyExportIdent 
     615              :                               % VAR
     616              :                                                                                                                 on: BOOLEAN ;
     617              :                                                                                                                 n : CARDINAL ;  %
     618              :                               
     619              :                               % on := IsAutoPushOn() ;
     620              :                                 IF on
     621              :                                 THEN
     622              :                                    n := 1
     623              :                                 END  %
     624              :                               { ',' PossiblyExportIdent 
     625              :                                 
     626              :                                 % IF on
     627              :                                   THEN
     628              :                                      INC(n)
     629              :                                   END  %
     630              :                                  } 
     631              :                               % IF on
     632              :                                 THEN
     633              :                                    PushT(n)
     634              :                                 END  %
     635              :                               
     636              : 
     637              :    first  symbols:identtok
     638              :    
     639              :    cannot reachend
     640              : */
     641              : 
     642              : static void PossiblyExportIdentList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     643              : 
     644              : /*
     645              :    SubrangeType := '[' ConstExpression '..' ConstExpression 
     646              :                    ']' 
     647              : 
     648              :    first  symbols:lsbratok
     649              :    
     650              :    cannot reachend
     651              : */
     652              : 
     653              : static void SubrangeType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     654              : 
     655              : /*
     656              :    ArrayType := 'ARRAY' SimpleType { ',' SimpleType  } 
     657              :                 'OF' 
     658              :                 % BuildNulName  %
     659              :                 Type 
     660              : 
     661              :    first  symbols:arraytok
     662              :    
     663              :    cannot reachend
     664              : */
     665              : 
     666              : static void ArrayType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     667              : 
     668              : /*
     669              :    RecordType := 'RECORD' [ DefaultRecordAttributes  ] 
     670              :                  FieldListSequence 'END' 
     671              : 
     672              :    first  symbols:recordtok
     673              :    
     674              :    cannot reachend
     675              : */
     676              : 
     677              : static void RecordType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     678              : 
     679              : /*
     680              :    DefaultRecordAttributes := '' 
     681              : 
     682              :    first  symbols:ldirectivetok
     683              :    
     684              :    cannot reachend
     685              : */
     686              : 
     687              : static void DefaultRecordAttributes (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     688              : 
     689              : /*
     690              :    RecordFieldPragma := [ ''  ] 
     691              : 
     692              :    first  symbols:ldirectivetok
     693              :    
     694              :    reachend
     695              : */
     696              : 
     697              : static void RecordFieldPragma (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     698              : 
     699              : /*
     700              :    FieldPragmaExpression := 
     701              :                             % PushAutoOff  %
     702              :                             Ident [ '(' ConstExpression 
     703              :                                     ')'  ] 
     704              :                             % PopAuto  %
     705              :                             
     706              : 
     707              :    first  symbols:identtok
     708              :    
     709              :    cannot reachend
     710              : */
     711              : 
     712              : static void FieldPragmaExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     713              : 
     714              : /*
     715              :    AttributeExpression := 
     716              :                           % PushAutoOff  %
     717              :                           Ident '(' ConstExpression 
     718              :                           ')' 
     719              :                           % PopAuto  %
     720              :                           
     721              : 
     722              :    first  symbols:identtok
     723              :    
     724              :    cannot reachend
     725              : */
     726              : 
     727              : static void AttributeExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     728              : 
     729              : /*
     730              :    AttributeUnused := [ ''  ] 
     731              : 
     732              :    first  symbols:ldirectivetok
     733              :    
     734              :    reachend
     735              : */
     736              : 
     737              : static void AttributeUnused (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     738              : 
     739              : /*
     740              :    FieldListSequence := FieldListStatement { ';' FieldListStatement  } 
     741              : 
     742              :    first  symbols:casetok, identtok, semicolontok
     743              :    
     744              :    reachend
     745              : */
     746              : 
     747              : static void FieldListSequence (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     748              : 
     749              : /*
     750              :    FieldListStatement := [ FieldList  ] 
     751              : 
     752              :    first  symbols:identtok, casetok
     753              :    
     754              :    reachend
     755              : */
     756              : 
     757              : static void FieldListStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     758              : 
     759              : /*
     760              :    FieldList := IdentList ':' 
     761              :                 % BuildNulName  %
     762              :                 Type RecordFieldPragma  | 
     763              :                 'CASE' CaseTag 'OF' Varient { '|' Varient  } 
     764              :                 [ 'ELSE' FieldListSequence  ] 'END' 
     765              : 
     766              :    first  symbols:casetok, identtok
     767              :    
     768              :    cannot reachend
     769              : */
     770              : 
     771              : static void FieldList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     772              : 
     773              : /*
     774              :    TagIdent := [ Ident  ] 
     775              : 
     776              :    first  symbols:identtok
     777              :    
     778              :    reachend
     779              : */
     780              : 
     781              : static void TagIdent (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     782              : 
     783              : /*
     784              :    CaseTag := TagIdent [ ':' Qualident  ] 
     785              : 
     786              :    first  symbols:colontok, identtok
     787              :    
     788              :    reachend
     789              : */
     790              : 
     791              : static void CaseTag (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     792              : 
     793              : /*
     794              :    Varient := [ VarientCaseLabelList ':' FieldListSequence  ] 
     795              : 
     796              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     797              :    
     798              :    reachend
     799              : */
     800              : 
     801              : static void Varient (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     802              : 
     803              : /*
     804              :    VarientCaseLabelList := VarientCaseLabels { ',' 
     805              :                                                VarientCaseLabels  } 
     806              : 
     807              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     808              :    
     809              :    cannot reachend
     810              : */
     811              : 
     812              : static void VarientCaseLabelList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     813              : 
     814              : /*
     815              :    VarientCaseLabels := ConstExpression [ '..' ConstExpression  ] 
     816              : 
     817              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     818              :    
     819              :    cannot reachend
     820              : */
     821              : 
     822              : static void VarientCaseLabels (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     823              : 
     824              : /*
     825              :    CaseLabelList := CaseLabels { ',' CaseLabels  } 
     826              : 
     827              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     828              :    
     829              :    cannot reachend
     830              : */
     831              : 
     832              : static void CaseLabelList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     833              : 
     834              : /*
     835              :    CaseLabels := ConstExpression [ '..' ConstExpression  ] 
     836              : 
     837              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     838              :    
     839              :    cannot reachend
     840              : */
     841              : 
     842              : static void CaseLabels (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     843              : 
     844              : /*
     845              :    SetType := 
     846              :               % VAR Name: CARDINAL ;  %
     847              :               ( 'SET'  | 'PACKEDSET'  ) 'OF' 
     848              :               % BuildNulName ;  %
     849              :               SimpleType 
     850              :               % PopT(Name) ;  %
     851              :               
     852              : 
     853              :    first  symbols:oftok, packedsettok, settok
     854              :    
     855              :    cannot reachend
     856              : */
     857              : 
     858              : static void SetType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     859              : 
     860              : /*
     861              :    PointerType := 'POINTER' 'TO' 
     862              :                   % BuildNulName  %
     863              :                   Type 
     864              : 
     865              :    first  symbols:pointertok
     866              :    
     867              :    cannot reachend
     868              : */
     869              : 
     870              : static void PointerType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     871              : 
     872              : /*
     873              :    ProcedureType := 'PROCEDURE' [ FormalTypeList  ] 
     874              : 
     875              :    first  symbols:proceduretok
     876              :    
     877              :    cannot reachend
     878              : */
     879              : 
     880              : static void ProcedureType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     881              : 
     882              : /*
     883              :    FormalTypeList := '(' ( ')' FormalReturn  | 
     884              :                            ProcedureParameters ')' 
     885              :                            FormalReturn  ) 
     886              : 
     887              :    first  symbols:lparatok
     888              :    
     889              :    cannot reachend
     890              : */
     891              : 
     892              : static void FormalTypeList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     893              : 
     894              : /*
     895              :    FormalReturn := [ ':' OptReturnType  ] 
     896              : 
     897              :    first  symbols:colontok
     898              :    
     899              :    reachend
     900              : */
     901              : 
     902              : static void FormalReturn (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     903              : 
     904              : /*
     905              :    OptReturnType := '[' Qualident ']'  | 
     906              :                     Qualident 
     907              : 
     908              :    first  symbols:identtok, lsbratok
     909              :    
     910              :    cannot reachend
     911              : */
     912              : 
     913              : static void OptReturnType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     914              : 
     915              : /*
     916              :    ProcedureParameters := ProcedureParameter { ',' 
     917              :                                                ProcedureParameter  } 
     918              : 
     919              :    first  symbols:identtok, arraytok, periodperiodperiodtok, vartok
     920              :    
     921              :    cannot reachend
     922              : */
     923              : 
     924              : static void ProcedureParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     925              : 
     926              : /*
     927              :    ProcedureParameter := '...'  | 'VAR' FormalType  | 
     928              :                          FormalType 
     929              : 
     930              :    first  symbols:arraytok, identtok, vartok, periodperiodperiodtok
     931              :    
     932              :    cannot reachend
     933              : */
     934              : 
     935              : static void ProcedureParameter (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     936              : 
     937              : /*
     938              :    VarIdent := PossiblyExportIdent [ '[' ConstExpression 
     939              :                                      ']'  ] 
     940              : 
     941              :    first  symbols:identtok
     942              :    
     943              :    cannot reachend
     944              : */
     945              : 
     946              : static void VarIdent (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     947              : 
     948              : /*
     949              :    VariableDeclaration := ( VarIdentList ':' 
     950              :                             % BuildNulName  %
     951              :                             Type Alignment  ) 
     952              : 
     953              :    first  symbols:identtok
     954              :    
     955              :    cannot reachend
     956              : */
     957              : 
     958              : static void VariableDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     959              : 
     960              : /*
     961              :    VarIdentList := VarIdent 
     962              :                    % VAR
     963              :                                                                                                      on: BOOLEAN ;
     964              :                                                                                                      n : CARDINAL ;  %
     965              :                    
     966              :                    % on := IsAutoPushOn() ;
     967              :                      IF on
     968              :                      THEN
     969              :                         n := 1
     970              :                      END  %
     971              :                    { ',' VarIdent 
     972              :                      % IF on
     973              :                        THEN
     974              :                           INC(n)
     975              :                        END  %
     976              :                       } 
     977              :                    % IF on
     978              :                      THEN
     979              :                         PushT(n)
     980              :                      END  %
     981              :                    
     982              : 
     983              :    first  symbols:identtok
     984              :    
     985              :    cannot reachend
     986              : */
     987              : 
     988              : static void VarIdentList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     989              : 
     990              : /*
     991              :    Designator := Qualident { SubDesignator  } 
     992              : 
     993              :    first  symbols:identtok
     994              :    
     995              :    cannot reachend
     996              : */
     997              : 
     998              : static void Designator (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
     999              : 
    1000              : /*
    1001              :    SubDesignator := '.' Ident  | '[' ExpList ']'  | 
    1002              :                     '^' 
    1003              : 
    1004              :    first  symbols:uparrowtok, lsbratok, periodtok
    1005              :    
    1006              :    cannot reachend
    1007              : */
    1008              : 
    1009              : static void SubDesignator (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1010              : 
    1011              : /*
    1012              :    ExpList := Expression { ',' Expression  } 
    1013              : 
    1014              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    1015              :    
    1016              :    cannot reachend
    1017              : */
    1018              : 
    1019              : static void ExpList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1020              : 
    1021              : /*
    1022              :    Expression := 
    1023              :                  % PushAutoOff  %
    1024              :                  SimpleExpression [ Relation SimpleExpression  ] 
    1025              :                  
    1026              :                  % PopAuto  %
    1027              :                  
    1028              : 
    1029              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, attributetok, plustok, minustok
    1030              :    
    1031              :    cannot reachend
    1032              : */
    1033              : 
    1034              : static void Expression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1035              : 
    1036              : /*
    1037              :    SimpleExpression := [ '+'  | '-'  ] Term { AddOperator 
    1038              :                                               Term  } 
    1039              : 
    1040              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    1041              :    
    1042              :    cannot reachend
    1043              : */
    1044              : 
    1045              : static void SimpleExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1046              : 
    1047              : /*
    1048              :    Term := Factor { MulOperator Factor  } 
    1049              : 
    1050              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, attributetok
    1051              :    
    1052              :    cannot reachend
    1053              : */
    1054              : 
    1055              : static void Term (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1056              : 
    1057              : /*
    1058              :    Factor := Number  | string  | SetOrDesignatorOrFunction  | 
    1059              :              '(' Expression ')'  | 
    1060              :              'NOT' Factor  | ConstAttribute 
    1061              : 
    1062              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok
    1063              :    
    1064              :    cannot reachend
    1065              : */
    1066              : 
    1067              : static void Factor (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1068              : 
    1069              : /*
    1070              :    SetOrDesignatorOrFunction := ( Qualident [ Constructor  | 
    1071              :                                               SimpleDes 
    1072              :                                               [ ActualParameters  ]  ]  | 
    1073              :                                   Constructor  ) 
    1074              : 
    1075              :    first  symbols:lcbratok, identtok
    1076              :    
    1077              :    cannot reachend
    1078              : */
    1079              : 
    1080              : static void SetOrDesignatorOrFunction (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1081              : 
    1082              : /*
    1083              :    SimpleDes := { '.' Ident  | '[' ExpList ']'  | 
    1084              :                   '^'  } 
    1085              : 
    1086              :    first  symbols:uparrowtok, lsbratok, periodtok
    1087              :    
    1088              :    reachend
    1089              : */
    1090              : 
    1091              : static void SimpleDes (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1092              : 
    1093              : /*
    1094              :    ActualParameters := '(' [ ExpList  ] ')' 
    1095              : 
    1096              :    first  symbols:lparatok
    1097              :    
    1098              :    cannot reachend
    1099              : */
    1100              : 
    1101              : static void ActualParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1102              : 
    1103              : /*
    1104              :    Statement := [ AssignmentOrProcedureCall  | 
    1105              :                   IfStatement  | CaseStatement  | 
    1106              :                   WhileStatement  | 
    1107              :                   RepeatStatement  | 
    1108              :                   LoopStatement  | ForStatement  | 
    1109              :                   WithStatement  | AsmStatement  | 
    1110              :                   'EXIT'  | 'RETURN' [ Expression  ]  | 
    1111              :                   RetryStatement  ] 
    1112              : 
    1113              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok
    1114              :    
    1115              :    reachend
    1116              : */
    1117              : 
    1118              : static void Statement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1119              : 
    1120              : /*
    1121              :    RetryStatement := 'RETRY' 
    1122              : 
    1123              :    first  symbols:retrytok
    1124              :    
    1125              :    cannot reachend
    1126              : */
    1127              : 
    1128              : static void RetryStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1129              : 
    1130              : /*
    1131              :    AssignmentOrProcedureCall := Designator ( ':=' Expression  | 
    1132              :                                              ActualParameters  | 
    1133              :                                              
    1134              :                                              %  epsilon   %
    1135              :                                               ) 
    1136              : 
    1137              :    first  symbols:identtok
    1138              :    
    1139              :    cannot reachend
    1140              : */
    1141              : 
    1142              : static void AssignmentOrProcedureCall (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1143              : 
    1144              : /*
    1145              :    StatementSequence := Statement { ';' Statement  } 
    1146              : 
    1147              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok
    1148              :    
    1149              :    reachend
    1150              : */
    1151              : 
    1152              : static void StatementSequence (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1153              : 
    1154              : /*
    1155              :    IfStatement := 'IF' Expression 'THEN' StatementSequence 
    1156              :                   { 'ELSIF' Expression 'THEN' StatementSequence  } 
    1157              :                   [ 'ELSE' StatementSequence  ] 'END' 
    1158              : 
    1159              :    first  symbols:iftok
    1160              :    
    1161              :    cannot reachend
    1162              : */
    1163              : 
    1164              : static void IfStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1165              : 
    1166              : /*
    1167              :    CaseStatement := 'CASE' Expression 'OF' Case { '|' 
    1168              :                                                   Case  } 
    1169              :                     [ 'ELSE' StatementSequence  ] 'END' 
    1170              : 
    1171              :    first  symbols:casetok
    1172              :    
    1173              :    cannot reachend
    1174              : */
    1175              : 
    1176              : static void CaseStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1177              : 
    1178              : /*
    1179              :    Case := [ CaseLabelList ':' StatementSequence  ] 
    1180              : 
    1181              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    1182              :    
    1183              :    reachend
    1184              : */
    1185              : 
    1186              : static void Case (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1187              : 
    1188              : /*
    1189              :    WhileStatement := 'WHILE' Expression 'DO' StatementSequence 
    1190              :                      'END' 
    1191              : 
    1192              :    first  symbols:whiletok
    1193              :    
    1194              :    cannot reachend
    1195              : */
    1196              : 
    1197              : static void WhileStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1198              : 
    1199              : /*
    1200              :    RepeatStatement := 'REPEAT' StatementSequence 'UNTIL' 
    1201              :                       Expression 
    1202              : 
    1203              :    first  symbols:repeattok
    1204              :    
    1205              :    cannot reachend
    1206              : */
    1207              : 
    1208              : static void RepeatStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1209              : 
    1210              : /*
    1211              :    ForStatement := 'FOR' Ident ':=' Expression 'TO' 
    1212              :                    Expression [ 'BY' ConstExpression  ] 
    1213              :                    'DO' StatementSequence 'END' 
    1214              : 
    1215              :    first  symbols:fortok
    1216              :    
    1217              :    cannot reachend
    1218              : */
    1219              : 
    1220              : static void ForStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1221              : 
    1222              : /*
    1223              :    LoopStatement := 'LOOP' StatementSequence 'END' 
    1224              : 
    1225              :    first  symbols:looptok
    1226              :    
    1227              :    cannot reachend
    1228              : */
    1229              : 
    1230              : static void LoopStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1231              : 
    1232              : /*
    1233              :    WithStatement := 'WITH' Designator 'DO' StatementSequence 
    1234              :                     'END' 
    1235              : 
    1236              :    first  symbols:withtok
    1237              :    
    1238              :    cannot reachend
    1239              : */
    1240              : 
    1241              : static void WithStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1242              : 
    1243              : /*
    1244              :    ProcedureDeclaration := 
    1245              :                            % VAR top: CARDINAL ;  %
    1246              :                            
    1247              :                            % top := Top ()  %
    1248              :                            ProcedureHeading ';' PostProcedureHeading 
    1249              :                            
    1250              :                            % Assert (top = Top ())  %
    1251              :                            
    1252              : 
    1253              :    first  symbols:proceduretok
    1254              :    
    1255              :    cannot reachend
    1256              : */
    1257              : 
    1258              : static void ProcedureDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1259              : 
    1260              : /*
    1261              :    PostProcedureHeading := ProperProcedure  | 
    1262              :                            ForwardDeclaration 
    1263              : 
    1264              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok, forwardtok
    1265              :    
    1266              :    cannot reachend
    1267              : */
    1268              : 
    1269              : static void PostProcedureHeading (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1270              : 
    1271              : /*
    1272              :    ForwardDeclaration := 'FORWARD' 
    1273              :                          % EndBuildForward (GetTokenNo ()-1)  %
    1274              :                          
    1275              : 
    1276              :    first  symbols:forwardtok
    1277              :    
    1278              :    cannot reachend
    1279              : */
    1280              : 
    1281              : static void ForwardDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1282              : 
    1283              : /*
    1284              :    ProperProcedure := ProcedureBlock 
    1285              :                       % PushAutoOn  %
    1286              :                       Ident 
    1287              :                       % EndBuildProcedure  %
    1288              :                       
    1289              :                       % PopAuto  %
    1290              :                       
    1291              : 
    1292              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok, begintok, endtok
    1293              :    
    1294              :    cannot reachend
    1295              : */
    1296              : 
    1297              : static void ProperProcedure (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1298              : 
    1299              : /*
    1300              :    DefineBuiltinProcedure := '__ATTRIBUTE__' '__BUILTIN__' 
    1301              :                              '(' '(' Ident ')' ')'  | 
    1302              :                              '__INLINE__' 
    1303              :                              % PushT(InlineTok)  %
    1304              :                               | 
    1305              :                              % PushT(NulTok)  %
    1306              :                              
    1307              : 
    1308              :    first  symbols:inlinetok, attributetok
    1309              :    
    1310              :    reachend
    1311              : */
    1312              : 
    1313              : static void DefineBuiltinProcedure (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1314              : 
    1315              : /*
    1316              :    ProcedureHeading := 'PROCEDURE' 
    1317              :                        % M2Error.DefaultProcedure  %
    1318              :                        
    1319              :                        % PushAutoOn  %
    1320              :                        DefineBuiltinProcedure ( PossiblyExportIdent 
    1321              :                                                 
    1322              :                                                 % StartBuildProcedure  %
    1323              :                                                 
    1324              :                                                 % PushAutoOff  %
    1325              :                                                 [ FormalParameters  ] 
    1326              :                                                 AttributeNoReturn 
    1327              :                                                 
    1328              :                                                 % PopAuto  %
    1329              :                                                 
    1330              :                                                 % BuildProcedureHeading  %
    1331              :                                                  ) 
    1332              :                        
    1333              :                        % PopAuto  %
    1334              :                        
    1335              : 
    1336              :    first  symbols:proceduretok
    1337              :    
    1338              :    cannot reachend
    1339              : */
    1340              : 
    1341              : static void ProcedureHeading (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1342              : 
    1343              : /*
    1344              :    Builtin := '__BUILTIN__' 
    1345              :               % PushT(BuiltinTok)  %
    1346              :                | '__INLINE__' 
    1347              :               % PushT(InlineTok)  %
    1348              :                | 
    1349              :               % PushT(NulTok)  %
    1350              :               
    1351              : 
    1352              :    first  symbols:inlinetok, builtintok
    1353              :    
    1354              :    reachend
    1355              : */
    1356              : 
    1357              : static void Builtin (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1358              : 
    1359              : /*
    1360              :    DefProcedureHeading := 'PROCEDURE' 
    1361              :                           % M2Error.DefaultProcedure  %
    1362              :                           Builtin 
    1363              :                           % PushAutoOn  %
    1364              :                           ( PossiblyExportIdent 
    1365              :                             % StartBuildProcedure  %
    1366              :                             
    1367              :                             % PushAutoOff  %
    1368              :                             [ DefFormalParameters  ] 
    1369              :                             AttributeNoReturn 
    1370              :                             % PopAuto  %
    1371              :                             
    1372              :                             % BuildProcedureHeading  %
    1373              :                              ) 
    1374              :                           % PopAuto  %
    1375              :                           
    1376              :                           % M2Error.LeaveErrorScope  %
    1377              :                           
    1378              : 
    1379              :    first  symbols:proceduretok
    1380              :    
    1381              :    cannot reachend
    1382              : */
    1383              : 
    1384              : static void DefProcedureHeading (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1385              : 
    1386              : /*
    1387              :    AttributeNoReturn := [ ''  ] 
    1388              : 
    1389              :    first  symbols:ldirectivetok
    1390              :    
    1391              :    reachend
    1392              : */
    1393              : 
    1394              : static void AttributeNoReturn (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1395              : 
    1396              : /*
    1397              :    ProcedureBlock := { Declaration  } [ 'BEGIN' BlockBody  ] 
    1398              :                      'END' 
    1399              : 
    1400              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok
    1401              :    
    1402              :    cannot reachend
    1403              : */
    1404              : 
    1405              : static void ProcedureBlock (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1406              : 
    1407              : /*
    1408              :    Block := { Declaration  } InitialBlock FinalBlock 
    1409              :             'END' 
    1410              : 
    1411              :    first  symbols:proceduretok, moduletok, finallytok, begintok, consttok, typetok, vartok, endtok
    1412              :    
    1413              :    cannot reachend
    1414              : */
    1415              : 
    1416              : static void Block (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1417              : 
    1418              : /*
    1419              :    InitialBlock := [ 'BEGIN' BlockBody  ] 
    1420              : 
    1421              :    first  symbols:begintok
    1422              :    
    1423              :    reachend
    1424              : */
    1425              : 
    1426              : static void InitialBlock (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1427              : 
    1428              : /*
    1429              :    FinalBlock := [ 'FINALLY' BlockBody  ] 
    1430              : 
    1431              :    first  symbols:finallytok
    1432              :    
    1433              :    reachend
    1434              : */
    1435              : 
    1436              : static void FinalBlock (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1437              : 
    1438              : /*
    1439              :    BlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    1440              : 
    1441              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    1442              :    
    1443              :    reachend
    1444              : */
    1445              : 
    1446              : static void BlockBody (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1447              : 
    1448              : /*
    1449              :    NormalPart := StatementSequence 
    1450              : 
    1451              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    1452              :    
    1453              :    reachend
    1454              : */
    1455              : 
    1456              : static void NormalPart (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1457              : 
    1458              : /*
    1459              :    ExceptionalPart := StatementSequence 
    1460              : 
    1461              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    1462              :    
    1463              :    reachend
    1464              : */
    1465              : 
    1466              : static void ExceptionalPart (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1467              : 
    1468              : /*
    1469              :    Declaration := 'CONST' { ConstantDeclaration ';'  }  | 
    1470              :                   'TYPE' { TypeDeclaration ';'  }  | 
    1471              :                   'VAR' { VariableDeclaration ';'  }  | 
    1472              :                   ProcedureDeclaration ';'  | 
    1473              :                   ModuleDeclaration ';' 
    1474              : 
    1475              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok
    1476              :    
    1477              :    cannot reachend
    1478              : */
    1479              : 
    1480              : static void Declaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1481              : 
    1482              : /*
    1483              :    DefFormalParameters := '(' [ DefMultiFPSection  ] 
    1484              :                           ')' FormalReturn 
    1485              : 
    1486              :    first  symbols:lparatok
    1487              :    
    1488              :    cannot reachend
    1489              : */
    1490              : 
    1491              : static void DefFormalParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1492              : 
    1493              : /*
    1494              :    DefMultiFPSection := DefExtendedFP  | 
    1495              :                         FPSection [ ';' DefMultiFPSection  ] 
    1496              : 
    1497              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    1498              :    
    1499              :    cannot reachend
    1500              : */
    1501              : 
    1502              : static void DefMultiFPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1503              : 
    1504              : /*
    1505              :    FormalParameters := '(' [ MultiFPSection  ] ')' 
    1506              :                        FormalReturn 
    1507              : 
    1508              :    first  symbols:lparatok
    1509              :    
    1510              :    cannot reachend
    1511              : */
    1512              : 
    1513              : static void FormalParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1514              : 
    1515              : /*
    1516              :    MultiFPSection := ExtendedFP  | FPSection [ ';' 
    1517              :                                                MultiFPSection  ] 
    1518              : 
    1519              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    1520              :    
    1521              :    cannot reachend
    1522              : */
    1523              : 
    1524              : static void MultiFPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1525              : 
    1526              : /*
    1527              :    FPSection := NonVarFPSection  | 
    1528              :                 VarFPSection 
    1529              : 
    1530              :    first  symbols:vartok, identtok
    1531              :    
    1532              :    cannot reachend
    1533              : */
    1534              : 
    1535              : static void FPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1536              : 
    1537              : /*
    1538              :    DefExtendedFP := DefOptArg  | '...' 
    1539              : 
    1540              :    first  symbols:lsbratok, periodperiodperiodtok
    1541              :    
    1542              :    cannot reachend
    1543              : */
    1544              : 
    1545              : static void DefExtendedFP (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1546              : 
    1547              : /*
    1548              :    ExtendedFP := OptArg  | '...' 
    1549              : 
    1550              :    first  symbols:lsbratok, periodperiodperiodtok
    1551              :    
    1552              :    cannot reachend
    1553              : */
    1554              : 
    1555              : static void ExtendedFP (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1556              : 
    1557              : /*
    1558              :    VarFPSection := 'VAR' IdentList ':' FormalType [ 
    1559              :    AttributeUnused  ] 
    1560              : 
    1561              :    first  symbols:vartok
    1562              :    
    1563              :    cannot reachend
    1564              : */
    1565              : 
    1566              : static void VarFPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1567              : 
    1568              : /*
    1569              :    NonVarFPSection := IdentList ':' FormalType [ AttributeUnused  ] 
    1570              : 
    1571              :    first  symbols:identtok
    1572              :    
    1573              :    cannot reachend
    1574              : */
    1575              : 
    1576              : static void NonVarFPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1577              : 
    1578              : /*
    1579              :    OptArg := '[' IdentScope ':' FormalType [ '=' ConstExpression  ] 
    1580              :              ']' 
    1581              : 
    1582              :    first  symbols:lsbratok
    1583              :    
    1584              :    cannot reachend
    1585              : */
    1586              : 
    1587              : static void OptArg (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1588              : 
    1589              : /*
    1590              :    DefOptArg := '[' IdentScope ':' FormalType '=' ConstExpression 
    1591              :                 ']' 
    1592              : 
    1593              :    first  symbols:lsbratok
    1594              :    
    1595              :    cannot reachend
    1596              : */
    1597              : 
    1598              : static void DefOptArg (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1599              : 
    1600              : /*
    1601              :    FormalType := { 'ARRAY' 'OF'  } Qualident 
    1602              : 
    1603              :    first  symbols:identtok, arraytok
    1604              :    
    1605              :    cannot reachend
    1606              : */
    1607              : 
    1608              : static void FormalType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1609              : 
    1610              : /*
    1611              :    ModuleDeclaration := 'MODULE' 
    1612              :                         % M2Error.DefaultInnerModule  %
    1613              :                         
    1614              :                         % PushAutoOn  %
    1615              :                         Ident 
    1616              :                         % StartBuildInnerModule  %
    1617              :                         
    1618              :                         % PushAutoOff  %
    1619              :                         [ Priority  ] ';' 
    1620              :                         % PushAutoOn  %
    1621              :                         { Import 
    1622              :                           % BuildImportInnerModule  %
    1623              :                            } [ Export 
    1624              :                                % BuildExportInnerModule  %
    1625              :                                 ] 
    1626              :                         % PopAuto  %
    1627              :                         Block 
    1628              :                         % PushAutoOn  %
    1629              :                         Ident 
    1630              :                         % EndBuildInnerModule  %
    1631              :                         
    1632              :                         % PopAuto ; PopAuto ; PopAuto  %
    1633              :                         
    1634              : 
    1635              :    first  symbols:moduletok
    1636              :    
    1637              :    cannot reachend
    1638              : */
    1639              : 
    1640              : static void ModuleDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1641              : 
    1642              : /*
    1643              :    Priority := '[' ConstExpression ']' 
    1644              : 
    1645              :    first  symbols:lsbratok
    1646              :    
    1647              :    cannot reachend
    1648              : */
    1649              : 
    1650              : static void Priority (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1651              : 
    1652              : /*
    1653              :    Export := 'EXPORT' ( 'QUALIFIED' 
    1654              :                         % PushT(QualifiedTok)  %
    1655              :                         IdentList  | 
    1656              :                         'UNQUALIFIED' 
    1657              :                         % PushT(UnQualifiedTok)  %
    1658              :                         IdentList  | 
    1659              :                         
    1660              :                         % PushT(ExportTok)  %
    1661              :                         IdentList  ) ';' 
    1662              : 
    1663              :    first  symbols:exporttok
    1664              :    
    1665              :    cannot reachend
    1666              : */
    1667              : 
    1668              : static void Export (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1669              : 
    1670              : /*
    1671              :    Import := 'FROM' 
    1672              :              % BuildImportStatement (GetTokenNo () -1)  %
    1673              :              Ident 
    1674              :              % AddImportToImportStatement (TRUE)  %
    1675              :              'IMPORT' IdentList ';'  | 
    1676              :              'IMPORT' 
    1677              :              % BuildImportStatement (GetTokenNo () -1)  %
    1678              :              
    1679              :              % PushT(ImportTok)
    1680              :                                                                                              determines whether Ident or Module   %
    1681              :              IdentImportList ';' 
    1682              : 
    1683              :    first  symbols:importtok, fromtok
    1684              :    
    1685              :    cannot reachend
    1686              : */
    1687              : 
    1688              : static void Import (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1689              : 
    1690              : /*
    1691              :    IdentImportList := Ident 
    1692              :                       % VAR
    1693              :                                                                                                         on: BOOLEAN ;
    1694              :                                                                                                         n : CARDINAL ;  %
    1695              :                       
    1696              :                       % on := IsAutoPushOn() ;
    1697              :                         IF on
    1698              :                         THEN
    1699              :                            AddImportToImportStatement (FALSE) ;
    1700              :                            n := 1
    1701              :                         END  %
    1702              :                       { ',' Ident 
    1703              :                         % IF on
    1704              :                           THEN
    1705              :                              AddImportToImportStatement (FALSE) ;
    1706              :                              INC(n)
    1707              :                           END  %
    1708              :                          } 
    1709              :                       % IF on
    1710              :                         THEN
    1711              :                            PushT(n)
    1712              :                         END  %
    1713              :                       
    1714              : 
    1715              :    first  symbols:identtok
    1716              :    
    1717              :    cannot reachend
    1718              : */
    1719              : 
    1720              : static void IdentImportList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1721              : 
    1722              : /*
    1723              :    DefinitionModule := 'DEFINITION' 
    1724              :                        % M2Error.DefaultDefinitionModule  %
    1725              :                        'MODULE' 
    1726              :                        % PushAutoOn  %
    1727              :                        ( 'FOR' string  | 
    1728              :                          
    1729              :                          %  epsilon 
    1730              :                            PushT(NulSym)  %
    1731              :                           ) Ident 
    1732              :                        % P1StartBuildDefinitionModule  %
    1733              :                        ';' { Import 
    1734              :                              % BuildImportOuterModule(TRUE)  %
    1735              :                               } [ Export 
    1736              :                                   % BuildExportOuterModule  %
    1737              :                                    ] 
    1738              :                        % PushAutoOff  %
    1739              :                        { Definition  } 
    1740              :                        % PopAuto  %
    1741              :                        'END' Ident 
    1742              :                        % P1EndBuildDefinitionModule  %
    1743              :                        '.' 
    1744              :                        % PopAuto  %
    1745              :                        
    1746              : 
    1747              :    first  symbols:definitiontok
    1748              :    
    1749              :    cannot reachend
    1750              : */
    1751              : 
    1752              : static void DefinitionModule (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1753              : 
    1754              : /*
    1755              :    Definition := 'CONST' { ConstantDeclaration ';'  }  | 
    1756              :                  'TYPE' 
    1757              :                  % PushAutoOn  %
    1758              :                  { PossiblyExportIdent ( ';' 
    1759              :                                          % BuildHiddenType  %
    1760              :                                           | '=' Type 
    1761              :                                          Alignment 
    1762              :                                          ';'  )  } 
    1763              :                  
    1764              :                  % PopAuto  %
    1765              :                   | 
    1766              :                  'VAR' { VariableDeclaration ';'  }  | 
    1767              :                  DefProcedureHeading ';' 
    1768              : 
    1769              :    first  symbols:proceduretok, vartok, typetok, consttok
    1770              :    
    1771              :    cannot reachend
    1772              : */
    1773              : 
    1774              : static void Definition (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1775              : 
    1776              : /*
    1777              :    AsmStatement := 'ASM' [ 'VOLATILE'  ] '(' AsmOperands 
    1778              :                    ')' 
    1779              : 
    1780              :    first  symbols:asmtok
    1781              :    
    1782              :    cannot reachend
    1783              : */
    1784              : 
    1785              : static void AsmStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1786              : 
    1787              : /*
    1788              :    NamedOperand := '[' Ident ']' 
    1789              : 
    1790              :    first  symbols:lsbratok
    1791              :    
    1792              :    cannot reachend
    1793              : */
    1794              : 
    1795              : static void NamedOperand (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1796              : 
    1797              : /*
    1798              :    AsmOperandName := [ NamedOperand  ] 
    1799              : 
    1800              :    first  symbols:lsbratok
    1801              :    
    1802              :    reachend
    1803              : */
    1804              : 
    1805              : static void AsmOperandName (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1806              : 
    1807              : /*
    1808              :    AsmOperands := ConstExpression [ ':' AsmList [ ':' 
    1809              :                                                   AsmList 
    1810              :                                                   [ 
    1811              :    ':' TrashList  ]  ]  ] 
    1812              : 
    1813              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    1814              :    
    1815              :    cannot reachend
    1816              : */
    1817              : 
    1818              : static void AsmOperands (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1819              : 
    1820              : /*
    1821              :    AsmList := [ AsmElement  ] { ',' AsmElement  } 
    1822              : 
    1823              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok, lsbratok, commatok
    1824              :    
    1825              :    reachend
    1826              : */
    1827              : 
    1828              : static void AsmList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1829              : 
    1830              : /*
    1831              :    AsmElement := AsmOperandName ConstExpression '(' 
    1832              :                  Expression ')' 
    1833              : 
    1834              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok, lsbratok
    1835              :    
    1836              :    cannot reachend
    1837              : */
    1838              : 
    1839              : static void AsmElement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1840              : 
    1841              : /*
    1842              :    TrashList := [ ConstExpression  ] { ',' ConstExpression  } 
    1843              : 
    1844              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok, commatok
    1845              :    
    1846              :    reachend
    1847              : */
    1848              : 
    1849              : static void TrashList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2);
    1850              : 
    1851            0 : static void ErrorString (DynamicStrings_String s)
    1852              : {
    1853              :   /* giving up.  */
    1854            0 :   M2Error_ErrorStringAt (s, M2LexBuf_GetTokenNo ());
    1855            0 :   WasNoError = false;
    1856            0 : }
    1857              : 
    1858            0 : static void ErrorArray (const char *a_, unsigned int _a_high)
    1859              : {
    1860            0 :   char a[_a_high+1];
    1861              : 
    1862              :   /* make a local copy of each unbounded array.  */
    1863            0 :   memcpy (a, a_, _a_high+1);
    1864              : 
    1865            0 :   ErrorString (DynamicStrings_InitString ((const char *) a, _a_high));
    1866            0 : }
    1867              : 
    1868              : 
    1869              : /*
    1870              :    DescribeStop - issues a message explaining what tokens were expected
    1871              : */
    1872              : 
    1873            0 : static DynamicStrings_String DescribeStop (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    1874              : {
    1875            0 :   unsigned int n;
    1876            0 :   DynamicStrings_String str;
    1877            0 :   DynamicStrings_String message;
    1878              : 
    1879            0 :   n = 0;
    1880            0 :   message = DynamicStrings_InitString ((const char *) "", 0);
    1881            0 :   if ((((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1882              :     {
    1883            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kstring}", 10)));
    1884            0 :       n += 1;
    1885              :     }
    1886            0 :   if ((((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1887              :     {
    1888            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kreal number}", 15)));
    1889            0 :       n += 1;
    1890              :     }
    1891            0 :   if ((((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1892              :     {
    1893            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kidentifier}", 14)));
    1894            0 :       n += 1;
    1895              :     }
    1896            0 :   if ((((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1897              :     {
    1898            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kinteger number}", 18)));
    1899            0 :       n += 1;
    1900              :     }
    1901            0 :   if ((((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1902              :     {
    1903            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__INLINE__}", 14)));
    1904            0 :       n += 1;
    1905              :     }
    1906            0 :   if ((((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1907              :     {
    1908            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__BUILTIN__}", 15)));
    1909            0 :       n += 1;
    1910              :     }
    1911            0 :   if ((((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1912              :     {
    1913            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__ATTRIBUTE__}", 17)));
    1914            0 :       n += 1;
    1915              :     }
    1916            0 :   if ((((1 << (M2Reserved_filetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1917              :     {
    1918            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__FILE__}", 12)));
    1919            0 :       n += 1;
    1920              :     }
    1921            0 :   if ((((1 << (M2Reserved_linetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1922              :     {
    1923            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__LINE__}", 12)));
    1924            0 :       n += 1;
    1925              :     }
    1926            0 :   if ((((1 << (M2Reserved_datetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1927              :     {
    1928            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__DATE__}", 12)));
    1929            0 :       n += 1;
    1930              :     }
    1931            0 :   if ((((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1932              :     {
    1933            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K...}", 7)));
    1934            0 :       n += 1;
    1935              :     }
    1936            0 :   if ((((1 << (M2Reserved_volatiletok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1937              :     {
    1938            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KVOLATILE}", 12)));
    1939            0 :       n += 1;
    1940              :     }
    1941            0 :   if ((((1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1942              :     {
    1943            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KASM}", 7)));
    1944            0 :       n += 1;
    1945              :     }
    1946            0 :   if ((((1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1947              :     {
    1948            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KWITH}", 8)));
    1949            0 :       n += 1;
    1950              :     }
    1951            0 :   if ((((1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1952              :     {
    1953            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KWHILE}", 9)));
    1954            0 :       n += 1;
    1955              :     }
    1956            0 :   if ((((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1957              :     {
    1958            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KVAR}", 7)));
    1959            0 :       n += 1;
    1960              :     }
    1961            0 :   if ((((1 << (M2Reserved_untiltok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1962              :     {
    1963            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KUNTIL}", 9)));
    1964            0 :       n += 1;
    1965              :     }
    1966            0 :   if ((((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1967              :     {
    1968            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KTYPE}", 8)));
    1969            0 :       n += 1;
    1970              :     }
    1971            0 :   if ((((1 << (M2Reserved_totok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1972              :     {
    1973            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KTO}", 6)));
    1974            0 :       n += 1;
    1975              :     }
    1976            0 :   if ((((1 << (M2Reserved_thentok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1977              :     {
    1978            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KTHEN}", 8)));
    1979            0 :       n += 1;
    1980              :     }
    1981            0 :   if ((((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1982              :     {
    1983            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KSET}", 7)));
    1984            0 :       n += 1;
    1985              :     }
    1986            0 :   if ((((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1987              :     {
    1988            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KRETURN}", 10)));
    1989            0 :       n += 1;
    1990              :     }
    1991            0 :   if ((((1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1992              :     {
    1993            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KRETRY}", 9)));
    1994            0 :       n += 1;
    1995              :     }
    1996            0 :   if ((((1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1997              :     {
    1998            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KREPEAT}", 10)));
    1999            0 :       n += 1;
    2000              :     }
    2001            0 :   if ((((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2002              :     {
    2003            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KREM}", 7)));
    2004            0 :       n += 1;
    2005              :     }
    2006            0 :   if ((((1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2007              :     {
    2008            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KRECORD}", 10)));
    2009            0 :       n += 1;
    2010              :     }
    2011            0 :   if ((((1 << (M2Reserved_unqualifiedtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2012              :     {
    2013            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KUNQUALIFIED}", 15)));
    2014            0 :       n += 1;
    2015              :     }
    2016            0 :   if ((((1 << (M2Reserved_qualifiedtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2017              :     {
    2018            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KQUALIFIED}", 13)));
    2019            0 :       n += 1;
    2020              :     }
    2021            0 :   if ((((1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2022              :     {
    2023            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KPROCEDURE}", 13)));
    2024            0 :       n += 1;
    2025              :     }
    2026            0 :   if ((((1 << (M2Reserved_pointertok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2027              :     {
    2028            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KPOINTER}", 11)));
    2029            0 :       n += 1;
    2030              :     }
    2031            0 :   if ((((1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2032              :     {
    2033            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KPACKEDSET}", 13)));
    2034            0 :       n += 1;
    2035              :     }
    2036            0 :   if ((((1 << (M2Reserved_ortok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2037              :     {
    2038            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KOR}", 6)));
    2039            0 :       n += 1;
    2040              :     }
    2041            0 :   if ((((1 << (M2Reserved_oftok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2042              :     {
    2043            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KOF}", 6)));
    2044            0 :       n += 1;
    2045              :     }
    2046            0 :   if ((((1 << (M2Reserved_nottok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2047              :     {
    2048            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KNOT}", 7)));
    2049            0 :       n += 1;
    2050              :     }
    2051            0 :   if ((((1 << (M2Reserved_moduletok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2052              :     {
    2053            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KMODULE}", 10)));
    2054            0 :       n += 1;
    2055              :     }
    2056            0 :   if ((((1 << (M2Reserved_modtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2057              :     {
    2058            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KMOD}", 7)));
    2059            0 :       n += 1;
    2060              :     }
    2061            0 :   if ((((1 << (M2Reserved_looptok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2062              :     {
    2063            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KLOOP}", 8)));
    2064            0 :       n += 1;
    2065              :     }
    2066            0 :   if ((((1 << (M2Reserved_intok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2067              :     {
    2068            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIN}", 6)));
    2069            0 :       n += 1;
    2070              :     }
    2071            0 :   if ((((1 << (M2Reserved_importtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2072              :     {
    2073            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIMPORT}", 10)));
    2074            0 :       n += 1;
    2075              :     }
    2076            0 :   if ((((1 << (M2Reserved_implementationtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2077              :     {
    2078            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIMPLEMENTATION}", 18)));
    2079            0 :       n += 1;
    2080              :     }
    2081            0 :   if ((((1 << (M2Reserved_iftok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2082              :     {
    2083            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIF}", 6)));
    2084            0 :       n += 1;
    2085              :     }
    2086            0 :   if ((((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2087              :     {
    2088            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFROM}", 8)));
    2089            0 :       n += 1;
    2090              :     }
    2091            0 :   if ((((1 << (M2Reserved_forwardtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2092              :     {
    2093            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFORWARD}", 11)));
    2094            0 :       n += 1;
    2095              :     }
    2096            0 :   if ((((1 << (M2Reserved_fortok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2097              :     {
    2098            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFOR}", 7)));
    2099            0 :       n += 1;
    2100              :     }
    2101            0 :   if ((((1 << (M2Reserved_finallytok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2102              :     {
    2103            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFINALLY}", 11)));
    2104            0 :       n += 1;
    2105              :     }
    2106            0 :   if ((((1 << (M2Reserved_exporttok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2107              :     {
    2108            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEXPORT}", 10)));
    2109            0 :       n += 1;
    2110              :     }
    2111            0 :   if ((((1 << (M2Reserved_exittok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2112              :     {
    2113            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEXIT}", 8)));
    2114            0 :       n += 1;
    2115              :     }
    2116            0 :   if ((((1 << (M2Reserved_excepttok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2117              :     {
    2118            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEXCEPT}", 10)));
    2119            0 :       n += 1;
    2120              :     }
    2121            0 :   if ((((1 << (M2Reserved_endtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2122              :     {
    2123            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEND}", 7)));
    2124            0 :       n += 1;
    2125              :     }
    2126            0 :   if ((((1 << (M2Reserved_elsiftok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2127              :     {
    2128            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KELSIF}", 9)));
    2129            0 :       n += 1;
    2130              :     }
    2131            0 :   if ((((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2132              :     {
    2133            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KELSE}", 8)));
    2134            0 :       n += 1;
    2135              :     }
    2136            0 :   if ((((1 << (M2Reserved_dotok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2137              :     {
    2138            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KDO}", 6)));
    2139            0 :       n += 1;
    2140              :     }
    2141            0 :   if ((((1 << (M2Reserved_divtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2142              :     {
    2143            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KDIV}", 7)));
    2144            0 :       n += 1;
    2145              :     }
    2146            0 :   if ((((1 << (M2Reserved_definitiontok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2147              :     {
    2148            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KDEFINITION}", 14)));
    2149            0 :       n += 1;
    2150              :     }
    2151            0 :   if ((((1 << (M2Reserved_consttok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2152              :     {
    2153            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KCONST}", 9)));
    2154            0 :       n += 1;
    2155              :     }
    2156            0 :   if ((((1 << (M2Reserved_casetok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2157              :     {
    2158            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KCASE}", 8)));
    2159            0 :       n += 1;
    2160              :     }
    2161            0 :   if ((((1 << (M2Reserved_bytok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2162              :     {
    2163            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KBY}", 6)));
    2164            0 :       n += 1;
    2165              :     }
    2166            0 :   if ((((1 << (M2Reserved_begintok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2167              :     {
    2168            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KBEGIN}", 9)));
    2169            0 :       n += 1;
    2170              :     }
    2171            0 :   if ((((1 << (M2Reserved_arraytok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2172              :     {
    2173            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KARRAY}", 9)));
    2174            0 :       n += 1;
    2175              :     }
    2176            0 :   if ((((1 << (M2Reserved_andtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2177              :     {
    2178            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KAND}", 7)));
    2179            0 :       n += 1;
    2180              :     }
    2181            0 :   if ((((1 << (M2Reserved_colontok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2182              :     {
    2183            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K:}", 5)));
    2184            0 :       n += 1;
    2185              :     }
    2186            0 :   if ((((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2187              :     {
    2188            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K..}", 6)));
    2189            0 :       n += 1;
    2190              :     }
    2191            0 :   if ((((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2192              :     {
    2193            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K*>}", 6)));
    2194            0 :       n += 1;
    2195              :     }
    2196            0 :   if ((((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2197              :     {
    2198            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<*}", 6)));
    2199            0 :       n += 1;
    2200              :     }
    2201            0 :   if ((((1 << (M2Reserved_greaterequaltok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2202              :     {
    2203            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K>=}", 6)));
    2204            0 :       n += 1;
    2205              :     }
    2206            0 :   if ((((1 << (M2Reserved_lessequaltok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2207              :     {
    2208            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<=}", 6)));
    2209            0 :       n += 1;
    2210              :     }
    2211            0 :   if ((((1 << (M2Reserved_lessgreatertok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2212              :     {
    2213            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<>}", 6)));
    2214            0 :       n += 1;
    2215              :     }
    2216            0 :   if ((((1 << (M2Reserved_hashtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2217              :     {
    2218            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K#}", 5)));
    2219            0 :       n += 1;
    2220              :     }
    2221            0 :   if ((((1 << (M2Reserved_equaltok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2222              :     {
    2223            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K=}", 5)));
    2224            0 :       n += 1;
    2225              :     }
    2226            0 :   if ((((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2227              :     {
    2228            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K^}", 5)));
    2229            0 :       n += 1;
    2230              :     }
    2231            0 :   if ((((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2232              :     {
    2233            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K;}", 5)));
    2234            0 :       n += 1;
    2235              :     }
    2236            0 :   if ((((1 << (M2Reserved_commatok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2237              :     {
    2238            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K,}", 5)));
    2239            0 :       n += 1;
    2240              :     }
    2241            0 :   if ((((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2242              :     {
    2243            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K.}", 5)));
    2244            0 :       n += 1;
    2245              :     }
    2246            0 :   if ((((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2247              :     {
    2248            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K&}", 5)));
    2249            0 :       n += 1;
    2250              :     }
    2251            0 :   if ((((1 << (M2Reserved_dividetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2252              :     {
    2253            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K/}", 5)));
    2254            0 :       n += 1;
    2255              :     }
    2256            0 :   if ((((1 << (M2Reserved_timestok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2257              :     {
    2258            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K*}", 5)));
    2259            0 :       n += 1;
    2260              :     }
    2261            0 :   if ((((1 << (M2Reserved_minustok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2262              :     {
    2263            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K-}", 5)));
    2264            0 :       n += 1;
    2265              :     }
    2266            0 :   if ((((1 << (M2Reserved_plustok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2267              :     {
    2268            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K+}", 5)));
    2269            0 :       n += 1;
    2270              :     }
    2271            0 :   if ((((1 << (M2Reserved_doublequotestok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2272              :     {
    2273            0 :       message = DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (message, ' '), '`'), '"'), '\''), ',');
    2274            0 :       n += 1;
    2275              :     }
    2276            0 :   if ((((1 << (M2Reserved_singlequotetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2277              :     {
    2278            0 :       message = DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (message, ' '), '"'), '\''), '"'), ',');
    2279            0 :       n += 1;
    2280              :     }
    2281            0 :   if ((((1 << (M2Reserved_greatertok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2282              :     {
    2283            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K>}", 5)));
    2284            0 :       n += 1;
    2285              :     }
    2286            0 :   if ((((1 << (M2Reserved_lesstok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2287              :     {
    2288            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<}", 5)));
    2289            0 :       n += 1;
    2290              :     }
    2291            0 :   if ((((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2292              :     {
    2293            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K)}", 5)));
    2294            0 :       n += 1;
    2295              :     }
    2296            0 :   if ((((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2297              :     {
    2298            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K(}", 5)));
    2299            0 :       n += 1;
    2300              :     }
    2301            0 :   if ((((1 << (M2Reserved_rcbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2302              :     {
    2303            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K%}}", 6)));
    2304            0 :       n += 1;
    2305              :     }
    2306            0 :   if ((((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2307              :     {
    2308            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K%{}", 6)));
    2309            0 :       n += 1;
    2310              :     }
    2311            0 :   if ((((1 << (M2Reserved_rsbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2312              :     {
    2313            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K]}", 5)));
    2314            0 :       n += 1;
    2315              :     }
    2316            0 :   if ((((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2317              :     {
    2318            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K[}", 5)));
    2319            0 :       n += 1;
    2320              :     }
    2321            0 :   if ((((1 << (M2Reserved_bartok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2322              :     {
    2323            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K|}", 5)));
    2324            0 :       n += 1;
    2325              :     }
    2326            0 :   if ((((1 << (M2Reserved_becomestok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2327              :     {
    2328            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K:=}", 6)));
    2329            0 :       n += 1;
    2330              :     }
    2331            0 :   if ((((1 << (M2Reserved_eoftok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2332              :     {}  /* empty.  */
    2333              :   /* eoftok has no token name (needed to generate error messages)  */
    2334            0 :   if (n == 0)
    2335              :     {
    2336            0 :       str = DynamicStrings_InitString ((const char *) " syntax error", 13);
    2337            0 :       message = DynamicStrings_KillString (message);
    2338              :     }
    2339            0 :   else if (n == 1)
    2340              :     {
    2341              :       /* avoid dangling else.  */
    2342            0 :       str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) " missing ", 9)));
    2343              :     }
    2344              :   else
    2345              :     {
    2346              :       /* avoid dangling else.  */
    2347            0 :       str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) " expecting one of", 17), message);
    2348            0 :       message = DynamicStrings_KillString (message);
    2349              :     }
    2350            0 :   return str;
    2351              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    2352              :   __builtin_unreachable ();
    2353              : }
    2354              : 
    2355              : 
    2356              : /*
    2357              :    DescribeError - issues a message explaining what tokens were expected
    2358              : */
    2359              : 
    2360            0 : static void DescribeError (void)
    2361              : {
    2362            0 :   DynamicStrings_String str;
    2363              : 
    2364            0 :   str = DynamicStrings_InitString ((const char *) "", 0);
    2365            0 :   switch (M2LexBuf_currenttoken)
    2366              :     {
    2367            0 :       case M2Reserved_stringtok:
    2368            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kstring}", 30), DynamicStrings_Mark (str));
    2369            0 :         break;
    2370              : 
    2371            0 :       case M2Reserved_realtok:
    2372            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kreal number}", 35), DynamicStrings_Mark (str));
    2373            0 :         break;
    2374              : 
    2375            0 :       case M2Reserved_identtok:
    2376            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kidentifier}", 34), DynamicStrings_Mark (str));
    2377            0 :         break;
    2378              : 
    2379            0 :       case M2Reserved_integertok:
    2380            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kinteger number}", 38), DynamicStrings_Mark (str));
    2381            0 :         break;
    2382              : 
    2383            0 :       case M2Reserved_inlinetok:
    2384            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__INLINE__}", 34), DynamicStrings_Mark (str));
    2385            0 :         break;
    2386              : 
    2387            0 :       case M2Reserved_builtintok:
    2388            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__BUILTIN__}", 35), DynamicStrings_Mark (str));
    2389            0 :         break;
    2390              : 
    2391            0 :       case M2Reserved_attributetok:
    2392            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__ATTRIBUTE__}", 37), DynamicStrings_Mark (str));
    2393            0 :         break;
    2394              : 
    2395            0 :       case M2Reserved_filetok:
    2396            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__FILE__}", 32), DynamicStrings_Mark (str));
    2397            0 :         break;
    2398              : 
    2399            0 :       case M2Reserved_linetok:
    2400            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__LINE__}", 32), DynamicStrings_Mark (str));
    2401            0 :         break;
    2402              : 
    2403            0 :       case M2Reserved_datetok:
    2404            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__DATE__}", 32), DynamicStrings_Mark (str));
    2405            0 :         break;
    2406              : 
    2407            0 :       case M2Reserved_periodperiodperiodtok:
    2408            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K...}", 27), DynamicStrings_Mark (str));
    2409            0 :         break;
    2410              : 
    2411            0 :       case M2Reserved_volatiletok:
    2412            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KVOLATILE}", 32), DynamicStrings_Mark (str));
    2413            0 :         break;
    2414              : 
    2415            0 :       case M2Reserved_asmtok:
    2416            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KASM}", 27), DynamicStrings_Mark (str));
    2417            0 :         break;
    2418              : 
    2419            0 :       case M2Reserved_withtok:
    2420            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KWITH}", 28), DynamicStrings_Mark (str));
    2421            0 :         break;
    2422              : 
    2423            0 :       case M2Reserved_whiletok:
    2424            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KWHILE}", 29), DynamicStrings_Mark (str));
    2425            0 :         break;
    2426              : 
    2427            0 :       case M2Reserved_vartok:
    2428            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KVAR}", 27), DynamicStrings_Mark (str));
    2429            0 :         break;
    2430              : 
    2431            0 :       case M2Reserved_untiltok:
    2432            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KUNTIL}", 29), DynamicStrings_Mark (str));
    2433            0 :         break;
    2434              : 
    2435            0 :       case M2Reserved_typetok:
    2436            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KTYPE}", 28), DynamicStrings_Mark (str));
    2437            0 :         break;
    2438              : 
    2439            0 :       case M2Reserved_totok:
    2440            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KTO}", 26), DynamicStrings_Mark (str));
    2441            0 :         break;
    2442              : 
    2443            0 :       case M2Reserved_thentok:
    2444            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KTHEN}", 28), DynamicStrings_Mark (str));
    2445            0 :         break;
    2446              : 
    2447            0 :       case M2Reserved_settok:
    2448            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KSET}", 27), DynamicStrings_Mark (str));
    2449            0 :         break;
    2450              : 
    2451            0 :       case M2Reserved_returntok:
    2452            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KRETURN}", 30), DynamicStrings_Mark (str));
    2453            0 :         break;
    2454              : 
    2455            0 :       case M2Reserved_retrytok:
    2456            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KRETRY}", 29), DynamicStrings_Mark (str));
    2457            0 :         break;
    2458              : 
    2459            0 :       case M2Reserved_repeattok:
    2460            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KREPEAT}", 30), DynamicStrings_Mark (str));
    2461            0 :         break;
    2462              : 
    2463            0 :       case M2Reserved_remtok:
    2464            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KREM}", 27), DynamicStrings_Mark (str));
    2465            0 :         break;
    2466              : 
    2467            0 :       case M2Reserved_recordtok:
    2468            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KRECORD}", 30), DynamicStrings_Mark (str));
    2469            0 :         break;
    2470              : 
    2471            0 :       case M2Reserved_unqualifiedtok:
    2472            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KUNQUALIFIED}", 35), DynamicStrings_Mark (str));
    2473            0 :         break;
    2474              : 
    2475            0 :       case M2Reserved_qualifiedtok:
    2476            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KQUALIFIED}", 33), DynamicStrings_Mark (str));
    2477            0 :         break;
    2478              : 
    2479            0 :       case M2Reserved_proceduretok:
    2480            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KPROCEDURE}", 33), DynamicStrings_Mark (str));
    2481            0 :         break;
    2482              : 
    2483            0 :       case M2Reserved_pointertok:
    2484            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KPOINTER}", 31), DynamicStrings_Mark (str));
    2485            0 :         break;
    2486              : 
    2487            0 :       case M2Reserved_packedsettok:
    2488            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KPACKEDSET}", 33), DynamicStrings_Mark (str));
    2489            0 :         break;
    2490              : 
    2491            0 :       case M2Reserved_ortok:
    2492            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KOR}", 26), DynamicStrings_Mark (str));
    2493            0 :         break;
    2494              : 
    2495            0 :       case M2Reserved_oftok:
    2496            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KOF}", 26), DynamicStrings_Mark (str));
    2497            0 :         break;
    2498              : 
    2499            0 :       case M2Reserved_nottok:
    2500            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KNOT}", 27), DynamicStrings_Mark (str));
    2501            0 :         break;
    2502              : 
    2503            0 :       case M2Reserved_moduletok:
    2504            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KMODULE}", 30), DynamicStrings_Mark (str));
    2505            0 :         break;
    2506              : 
    2507            0 :       case M2Reserved_modtok:
    2508            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KMOD}", 27), DynamicStrings_Mark (str));
    2509            0 :         break;
    2510              : 
    2511            0 :       case M2Reserved_looptok:
    2512            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KLOOP}", 28), DynamicStrings_Mark (str));
    2513            0 :         break;
    2514              : 
    2515            0 :       case M2Reserved_intok:
    2516            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIN}", 26), DynamicStrings_Mark (str));
    2517            0 :         break;
    2518              : 
    2519            0 :       case M2Reserved_importtok:
    2520            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIMPORT}", 30), DynamicStrings_Mark (str));
    2521            0 :         break;
    2522              : 
    2523            0 :       case M2Reserved_implementationtok:
    2524            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIMPLEMENTATION}", 38), DynamicStrings_Mark (str));
    2525            0 :         break;
    2526              : 
    2527            0 :       case M2Reserved_iftok:
    2528            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIF}", 26), DynamicStrings_Mark (str));
    2529            0 :         break;
    2530              : 
    2531            0 :       case M2Reserved_fromtok:
    2532            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFROM}", 28), DynamicStrings_Mark (str));
    2533            0 :         break;
    2534              : 
    2535            0 :       case M2Reserved_forwardtok:
    2536            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFORWARD}", 31), DynamicStrings_Mark (str));
    2537            0 :         break;
    2538              : 
    2539            0 :       case M2Reserved_fortok:
    2540            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFOR}", 27), DynamicStrings_Mark (str));
    2541            0 :         break;
    2542              : 
    2543            0 :       case M2Reserved_finallytok:
    2544            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFINALLY}", 31), DynamicStrings_Mark (str));
    2545            0 :         break;
    2546              : 
    2547            0 :       case M2Reserved_exporttok:
    2548            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEXPORT}", 30), DynamicStrings_Mark (str));
    2549            0 :         break;
    2550              : 
    2551            0 :       case M2Reserved_exittok:
    2552            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEXIT}", 28), DynamicStrings_Mark (str));
    2553            0 :         break;
    2554              : 
    2555            0 :       case M2Reserved_excepttok:
    2556            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEXCEPT}", 30), DynamicStrings_Mark (str));
    2557            0 :         break;
    2558              : 
    2559            0 :       case M2Reserved_endtok:
    2560            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEND}", 27), DynamicStrings_Mark (str));
    2561            0 :         break;
    2562              : 
    2563            0 :       case M2Reserved_elsiftok:
    2564            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KELSIF}", 29), DynamicStrings_Mark (str));
    2565            0 :         break;
    2566              : 
    2567            0 :       case M2Reserved_elsetok:
    2568            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KELSE}", 28), DynamicStrings_Mark (str));
    2569            0 :         break;
    2570              : 
    2571            0 :       case M2Reserved_dotok:
    2572            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KDO}", 26), DynamicStrings_Mark (str));
    2573            0 :         break;
    2574              : 
    2575            0 :       case M2Reserved_divtok:
    2576            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KDIV}", 27), DynamicStrings_Mark (str));
    2577            0 :         break;
    2578              : 
    2579            0 :       case M2Reserved_definitiontok:
    2580            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KDEFINITION}", 34), DynamicStrings_Mark (str));
    2581            0 :         break;
    2582              : 
    2583            0 :       case M2Reserved_consttok:
    2584            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KCONST}", 29), DynamicStrings_Mark (str));
    2585            0 :         break;
    2586              : 
    2587            0 :       case M2Reserved_casetok:
    2588            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KCASE}", 28), DynamicStrings_Mark (str));
    2589            0 :         break;
    2590              : 
    2591            0 :       case M2Reserved_bytok:
    2592            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KBY}", 26), DynamicStrings_Mark (str));
    2593            0 :         break;
    2594              : 
    2595            0 :       case M2Reserved_begintok:
    2596            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KBEGIN}", 29), DynamicStrings_Mark (str));
    2597            0 :         break;
    2598              : 
    2599            0 :       case M2Reserved_arraytok:
    2600            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KARRAY}", 29), DynamicStrings_Mark (str));
    2601            0 :         break;
    2602              : 
    2603            0 :       case M2Reserved_andtok:
    2604            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KAND}", 27), DynamicStrings_Mark (str));
    2605            0 :         break;
    2606              : 
    2607            0 :       case M2Reserved_colontok:
    2608            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K:}", 25), DynamicStrings_Mark (str));
    2609            0 :         break;
    2610              : 
    2611            0 :       case M2Reserved_periodperiodtok:
    2612            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K..}", 26), DynamicStrings_Mark (str));
    2613            0 :         break;
    2614              : 
    2615            0 :       case M2Reserved_rdirectivetok:
    2616            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K*>}", 26), DynamicStrings_Mark (str));
    2617            0 :         break;
    2618              : 
    2619            0 :       case M2Reserved_ldirectivetok:
    2620            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<*}", 26), DynamicStrings_Mark (str));
    2621            0 :         break;
    2622              : 
    2623            0 :       case M2Reserved_greaterequaltok:
    2624            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K>=}", 26), DynamicStrings_Mark (str));
    2625            0 :         break;
    2626              : 
    2627            0 :       case M2Reserved_lessequaltok:
    2628            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<=}", 26), DynamicStrings_Mark (str));
    2629            0 :         break;
    2630              : 
    2631            0 :       case M2Reserved_lessgreatertok:
    2632            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<>}", 26), DynamicStrings_Mark (str));
    2633            0 :         break;
    2634              : 
    2635            0 :       case M2Reserved_hashtok:
    2636            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K#}", 25), DynamicStrings_Mark (str));
    2637            0 :         break;
    2638              : 
    2639            0 :       case M2Reserved_equaltok:
    2640            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K=}", 25), DynamicStrings_Mark (str));
    2641            0 :         break;
    2642              : 
    2643            0 :       case M2Reserved_uparrowtok:
    2644            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K^}", 25), DynamicStrings_Mark (str));
    2645            0 :         break;
    2646              : 
    2647            0 :       case M2Reserved_semicolontok:
    2648            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K;}", 25), DynamicStrings_Mark (str));
    2649            0 :         break;
    2650              : 
    2651            0 :       case M2Reserved_commatok:
    2652            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K,}", 25), DynamicStrings_Mark (str));
    2653            0 :         break;
    2654              : 
    2655            0 :       case M2Reserved_periodtok:
    2656            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K.}", 25), DynamicStrings_Mark (str));
    2657            0 :         break;
    2658              : 
    2659            0 :       case M2Reserved_ambersandtok:
    2660            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K&}", 25), DynamicStrings_Mark (str));
    2661            0 :         break;
    2662              : 
    2663            0 :       case M2Reserved_dividetok:
    2664            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K/}", 25), DynamicStrings_Mark (str));
    2665            0 :         break;
    2666              : 
    2667            0 :       case M2Reserved_timestok:
    2668            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K*}", 25), DynamicStrings_Mark (str));
    2669            0 :         break;
    2670              : 
    2671            0 :       case M2Reserved_minustok:
    2672            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K-}", 25), DynamicStrings_Mark (str));
    2673            0 :         break;
    2674              : 
    2675            0 :       case M2Reserved_plustok:
    2676            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K+}", 25), DynamicStrings_Mark (str));
    2677            0 :         break;
    2678              : 
    2679            0 :       case M2Reserved_doublequotestok:
    2680            0 :         str = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_InitString ((const char *) "syntax error, found '", 21), '"'), '\''), DynamicStrings_Mark (str));
    2681            0 :         break;
    2682              : 
    2683            0 :       case M2Reserved_singlequotetok:
    2684            0 :         str = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_InitString ((const char *) "syntax error, found \"", 21), '\''), '"'), DynamicStrings_Mark (str));
    2685            0 :         break;
    2686              : 
    2687            0 :       case M2Reserved_greatertok:
    2688            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K>}", 25), DynamicStrings_Mark (str));
    2689            0 :         break;
    2690              : 
    2691            0 :       case M2Reserved_lesstok:
    2692            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<}", 25), DynamicStrings_Mark (str));
    2693            0 :         break;
    2694              : 
    2695            0 :       case M2Reserved_rparatok:
    2696            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K)}", 25), DynamicStrings_Mark (str));
    2697            0 :         break;
    2698              : 
    2699            0 :       case M2Reserved_lparatok:
    2700            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K(}", 25), DynamicStrings_Mark (str));
    2701            0 :         break;
    2702              : 
    2703            0 :       case M2Reserved_rcbratok:
    2704            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K%}}", 26), DynamicStrings_Mark (str));
    2705            0 :         break;
    2706              : 
    2707            0 :       case M2Reserved_lcbratok:
    2708            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K%{}", 26), DynamicStrings_Mark (str));
    2709            0 :         break;
    2710              : 
    2711            0 :       case M2Reserved_rsbratok:
    2712            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K]}", 25), DynamicStrings_Mark (str));
    2713            0 :         break;
    2714              : 
    2715            0 :       case M2Reserved_lsbratok:
    2716            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K[}", 25), DynamicStrings_Mark (str));
    2717            0 :         break;
    2718              : 
    2719            0 :       case M2Reserved_bartok:
    2720            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K|}", 25), DynamicStrings_Mark (str));
    2721            0 :         break;
    2722              : 
    2723            0 :       case M2Reserved_becomestok:
    2724            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K:=}", 26), DynamicStrings_Mark (str));
    2725            0 :         break;
    2726              : 
    2727            0 :       case M2Reserved_eoftok:
    2728            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K}", 24), DynamicStrings_Mark (str));
    2729            0 :         break;
    2730              : 
    2731              : 
    2732              :       default:
    2733              :         break;
    2734              :     }
    2735            0 :   ErrorString (str);
    2736            0 : }
    2737              : 
    2738              : 
    2739              : /*
    2740              :    SyntaxError - after a syntax error we skip all tokens up until we reach
    2741              :                  a stop symbol.
    2742              : */
    2743              : 
    2744            0 : static void SyntaxError (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2745              : {
    2746            0 :   DescribeError ();
    2747            0 :   if (Debugging)
    2748              :     {
    2749              :       M2Printf_printf0 ((const char *) "\\nskipping token *** ", 21);
    2750              :     }
    2751              :   /* 
    2752              :       yes the ORD(currenttoken) looks ugly, but it is *much* safer than
    2753              :       using currenttoken<sometok as a change to the ordering of the
    2754              :       token declarations below would cause this to break. Using ORD() we are
    2755              :       immune from such changes
    2756              :   */
    2757            0 :   while (! (((( ((unsigned int) (M2LexBuf_currenttoken)) < 32) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (M2LexBuf_currenttoken)) >= 32) && ( ((unsigned int) (M2LexBuf_currenttoken)) < 64)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (M2LexBuf_currenttoken)) >= 64) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & (stopset2)) != 0)))))
    2758              :     {
    2759            0 :       M2LexBuf_GetToken ();
    2760              :     }
    2761            0 :   if (Debugging)
    2762              :     {
    2763              :       M2Printf_printf0 ((const char *) " ***\\n", 6);
    2764              :     }
    2765            0 : }
    2766              : 
    2767              : 
    2768              : /*
    2769              :    SyntaxCheck -
    2770              : */
    2771              : 
    2772    191538595 : static void SyntaxCheck (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2773              : {
    2774              :   /* and again (see above re: ORD)
    2775              :   */
    2776    191538595 :   if (! (((( ((unsigned int) (M2LexBuf_currenttoken)) < 32) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (M2LexBuf_currenttoken)) >= 32) && ( ((unsigned int) (M2LexBuf_currenttoken)) < 64)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (M2LexBuf_currenttoken)) >= 64) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & (stopset2)) != 0)))))
    2777              :     {
    2778            0 :       SyntaxError (stopset0, stopset1, stopset2);
    2779              :     }
    2780    191538595 : }
    2781              : 
    2782              : 
    2783              : /*
    2784              :    WarnMissingToken - generates a warning message about a missing token, t.
    2785              : */
    2786              : 
    2787            0 : static void WarnMissingToken (M2Reserved_toktype t)
    2788              : {
    2789            0 :   P1Build_SetOfStop0 s0;
    2790            0 :   P1Build_SetOfStop1 s1;
    2791            0 :   P1Build_SetOfStop2 s2;
    2792            0 :   DynamicStrings_String str;
    2793              : 
    2794            0 :   s0 = (P1Build_SetOfStop0) 0;
    2795            0 :   s1 = (P1Build_SetOfStop1) 0;
    2796            0 :   s2 = (P1Build_SetOfStop2) 0;
    2797            0 :   if ( ((unsigned int) (t)) < 32)
    2798              :     {
    2799            0 :       s0 = (P1Build_SetOfStop0) ((1 << (t-M2Reserved_eoftok)));
    2800              :     }
    2801            0 :   else if ( ((unsigned int) (t)) < 64)
    2802              :     {
    2803              :       /* avoid dangling else.  */
    2804            0 :       s1 = (P1Build_SetOfStop1) ((1 << (t-M2Reserved_arraytok)));
    2805              :     }
    2806              :   else
    2807              :     {
    2808              :       /* avoid dangling else.  */
    2809            0 :       s2 = (P1Build_SetOfStop2) ((1 << (t-M2Reserved_unqualifiedtok)));
    2810              :     }
    2811            0 :   str = DescribeStop (s0, s1, s2);
    2812            0 :   str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error,", 13), DynamicStrings_Mark (str));
    2813            0 :   M2Error_ErrorStringAt (str, M2LexBuf_GetTokenNo ());
    2814            0 : }
    2815              : 
    2816              : 
    2817              : /*
    2818              :    MissingToken - generates a warning message about a missing token, t.
    2819              : */
    2820              : 
    2821            0 : static void MissingToken (M2Reserved_toktype t)
    2822              : {
    2823            0 :   WarnMissingToken (t);
    2824            0 :   InsertCount += 1;
    2825            0 :   if ((InsertCount < MaxInsert) && ((((t != M2Reserved_identtok) && (t != M2Reserved_integertok)) && (t != M2Reserved_realtok)) && (t != M2Reserved_stringtok)))
    2826              :     {
    2827            0 :       if (Debugging)
    2828              :         {
    2829              :           M2Printf_printf0 ((const char *) "inserting token\\n", 17);
    2830              :         }
    2831            0 :       M2LexBuf_InsertToken (t);
    2832              :     }
    2833            0 : }
    2834              : 
    2835              : 
    2836              : /*
    2837              :    CheckAndInsert -
    2838              : */
    2839              : 
    2840            0 : static bool CheckAndInsert (M2Reserved_toktype t, P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2841              : {
    2842            0 :   if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-M2Reserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-M2Reserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))))
    2843              :     {
    2844            0 :       WarnMissingToken (t);
    2845            0 :       M2LexBuf_InsertTokenAndRewind (t);
    2846            0 :       return true;
    2847              :     }
    2848              :   else
    2849              :     {
    2850              :       return false;
    2851              :     }
    2852              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    2853              :   __builtin_unreachable ();
    2854              : }
    2855              : 
    2856              : 
    2857              : /*
    2858              :    InStopSet
    2859              : */
    2860              : 
    2861            0 : static bool InStopSet (M2Reserved_toktype t, P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2862              : {
    2863            0 :   if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-M2Reserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-M2Reserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))))
    2864              :     {
    2865              :       return true;
    2866              :     }
    2867              :   else
    2868              :     {
    2869            0 :       return false;
    2870              :     }
    2871              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    2872              :   __builtin_unreachable ();
    2873              : }
    2874              : 
    2875              : 
    2876              : /*
    2877              :    PeepToken - peep token checks to see whether the stopset is satisfied by currenttoken
    2878              :                If it is not then it will insert a token providing the token
    2879              :                is one of ; ] ) } . OF END ,
    2880              : 
    2881              :                if the stopset contains <identtok> then we do not insert a token
    2882              : */
    2883              : 
    2884            0 : static void PeepToken (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2885              : {
    2886              :   /* and again (see above re: ORD)
    2887              :   */
    2888            0 :   if ((! (((( ((unsigned int) (M2LexBuf_currenttoken)) < 32) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (M2LexBuf_currenttoken)) >= 32) && ( ((unsigned int) (M2LexBuf_currenttoken)) < 64)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (M2LexBuf_currenttoken)) >= 64) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))))) && (! (InStopSet (M2Reserved_identtok, stopset0, stopset1, stopset2))))
    2889              :     {
    2890              :       /* SyntaxCheck would fail since currentoken is not part of the stopset
    2891              :          we check to see whether any of currenttoken might be a commonly omitted token  */
    2892            0 :       if ((((((((CheckAndInsert (M2Reserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert (M2Reserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert (M2Reserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert (M2Reserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert (M2Reserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert (M2Reserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert (M2Reserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert (M2Reserved_commatok, stopset0, stopset1, stopset2)))
    2893              :         {}  /* empty.  */
    2894              :     }
    2895            0 : }
    2896              : 
    2897              : 
    2898              : /*
    2899              :    Expect -
    2900              : */
    2901              : 
    2902    191538595 : static void Expect (M2Reserved_toktype t, P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2903              : {
    2904    191538595 :   if (M2LexBuf_currenttoken == t)
    2905              :     {
    2906              :       /* avoid dangling else.  */
    2907    191538595 :       M2LexBuf_GetToken ();
    2908              :       /* 
    2909              :       WriteFormat2('token number %d token was %a',
    2910              :                     GetTokenNo(), makekey(currentstring)) ;
    2911              :       FlushErrors ;
    2912              :   */
    2913    191538595 :       if (Pass0)
    2914              :         {
    2915              :           PeepToken (stopset0, stopset1, stopset2);
    2916              :         }
    2917              :     }
    2918              :   else
    2919              :     {
    2920            0 :       MissingToken (t);
    2921              :     }
    2922    191538595 :   SyntaxCheck (stopset0, stopset1, stopset2);
    2923    191538595 : }
    2924              : 
    2925              : 
    2926              : /*
    2927              :    Ident - error checking varient of Ident
    2928              : */
    2929              : 
    2930     62501625 : static void Ident (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2931              : {
    2932     62501625 :   LastIdent = NameKey_makekey (M2LexBuf_currentstring);
    2933     62501625 :   if (M2Quads_IsAutoPushOn ())
    2934              :     {
    2935      6551748 :       M2Quads_PushTFtok (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_identtok), M2LexBuf_GetTokenNo ());
    2936              :     }
    2937     62501625 :   Expect (M2Reserved_identtok, stopset0, stopset1, stopset2);
    2938     62501625 : }
    2939              : 
    2940              : 
    2941              : /*
    2942              :    IdentScope - error checking varient of Ident but it remembers the
    2943              :                 idents name in the current scope.
    2944              : */
    2945              : 
    2946       134994 : static void IdentScope (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2947              : {
    2948       134994 :   unsigned int tokpos;
    2949              : 
    2950       134994 :   tokpos = M2LexBuf_GetTokenNo ();
    2951       134994 :   Ident (stopset0, stopset1, stopset2);
    2952       134994 :   SymbolTable_AddNameToScope (tokpos, LastIdent);
    2953       134994 : }
    2954              : 
    2955              : 
    2956              : /*
    2957              :    PossiblyExportIdent - error checking varient of Ident which also
    2958              :                          checks to see if this ident should be
    2959              :                          explicitly exported.
    2960              : */
    2961              : 
    2962      7763176 : static void PossiblyExportIdent (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2963              : {
    2964      7763176 :   unsigned int nothing;
    2965              : 
    2966      7763176 :   SymbolTable_AddNameToScope (M2LexBuf_GetTokenNo (), NameKey_makekey (M2LexBuf_currentstring));
    2967      7763176 :   M2Quads_PushTFtok (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_identtok), M2LexBuf_GetTokenNo ());
    2968      7763176 :   P1SymBuild_CheckExplicitExported ();
    2969      7763176 :   if (! (M2Quads_IsAutoPushOn ()))
    2970              :     {
    2971      1988980 :       M2Quads_PopT (&nothing);
    2972              :     }
    2973      7763176 :   Expect (M2Reserved_identtok, stopset0, stopset1, stopset2);
    2974      7763176 : }
    2975              : 
    2976              : 
    2977              : /*
    2978              :    string -
    2979              : */
    2980              : 
    2981      1697424 : static void string (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2982              : {
    2983      1697424 :   if (M2Quads_IsAutoPushOn ())
    2984              :     {
    2985        13094 :       M2Quads_PushTF (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_stringtok));
    2986        13094 :       P2SymBuild_BuildString ();
    2987              :     }
    2988      1697424 :   Expect (M2Reserved_stringtok, stopset0, stopset1, stopset2);
    2989      1697424 : }
    2990              : 
    2991              : 
    2992              : /*
    2993              :    Integer -
    2994              : */
    2995              : 
    2996      2733950 : static void Integer (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    2997              : {
    2998      2733950 :   if (M2Quads_IsAutoPushOn ())
    2999              :     {
    3000            0 :       M2Quads_PushTFtok (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_integertok), M2LexBuf_GetTokenNo ());
    3001            0 :       P2SymBuild_BuildNumber ();
    3002              :     }
    3003      2733950 :   Expect (M2Reserved_integertok, stopset0, stopset1, stopset2);
    3004      2733950 : }
    3005              : 
    3006              : 
    3007              : /*
    3008              :    Real -
    3009              : */
    3010              : 
    3011        28958 : static void Real (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3012              : {
    3013        28958 :   if (M2Quads_IsAutoPushOn ())
    3014              :     {
    3015            0 :       M2Quads_PushTFtok (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_realtok), M2LexBuf_GetTokenNo ());
    3016            0 :       P2SymBuild_BuildNumber ();
    3017              :     }
    3018        28958 :   Expect (M2Reserved_realtok, stopset0, stopset1, stopset2);
    3019        28958 : }
    3020              : 
    3021              : 
    3022              : /*
    3023              :    FileUnit := 
    3024              :                % PushAutoOff  %
    3025              :                ( DefinitionModule  | 
    3026              :                  ImplementationOrProgramModule  ) 
    3027              :                % PopAuto  %
    3028              :                
    3029              : 
    3030              :    first  symbols:implementationtok, moduletok, definitiontok
    3031              :    
    3032              :    cannot reachend
    3033              : */
    3034              : 
    3035       244082 : static void FileUnit (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3036              : {
    3037       244082 :   M2Quads_PushAutoOff ();
    3038       244082 :   if (M2LexBuf_currenttoken == M2Reserved_definitiontok)
    3039              :     {
    3040       161456 :       DefinitionModule (stopset0, stopset1, stopset2);
    3041              :     }
    3042        82626 :   else if (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_implementationtok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))))) != 0)))
    3043              :     {
    3044              :       /* avoid dangling else.  */
    3045        82626 :       ImplementationOrProgramModule (stopset0, stopset1, stopset2);
    3046              :     }
    3047              :   else
    3048              :     {
    3049              :       /* avoid dangling else.  */
    3050            0 :       ErrorArray ((const char *) "expecting one of: {%KIMPLEMENTATION} {%KMODULE} {%KDEFINITION}", 62);
    3051              :     }
    3052       244076 :   M2Quads_PopAuto ();
    3053       244076 : }
    3054              : 
    3055              : 
    3056              : /*
    3057              :    ProgramModule := 'MODULE' 
    3058              :                     % M2Error.DefaultProgramModule  %
    3059              :                     
    3060              :                     % PushAutoOn ;  %
    3061              :                     Ident 
    3062              :                     % P1StartBuildProgramModule ;  %
    3063              :                     
    3064              :                     % PushAutoOff ;  %
    3065              :                     [ Priority  ] ';' 
    3066              :                     % PushAutoOn ;  %
    3067              :                     { Import 
    3068              :                       % BuildImportOuterModule(FALSE)  %
    3069              :                        } 
    3070              :                     % PopAuto  %
    3071              :                     Block 
    3072              :                     % PushAutoOn  %
    3073              :                     Ident 
    3074              :                     % P1EndBuildProgramModule  %
    3075              :                     '.' 
    3076              :                     % PopAuto ; PopAuto ; PopAuto  %
    3077              :                     
    3078              : 
    3079              :    first  symbols:moduletok
    3080              :    
    3081              :    cannot reachend
    3082              : */
    3083              : 
    3084        11763 : static void ProgramModule (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3085              : {
    3086        11763 :   Expect (M2Reserved_moduletok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3087        11763 :   M2Error_DefaultProgramModule ();
    3088        11763 :   M2Quads_PushAutoOn ();
    3089        11763 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3090        11763 :   P1SymBuild_P1StartBuildProgramModule ();
    3091        11763 :   M2Quads_PushAutoOff ();
    3092        11763 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3093              :     {
    3094           12 :       Priority (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    3095              :     }
    3096        11763 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_importtok-M2Reserved_arraytok)) | (1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    3097        11763 :   M2Quads_PushAutoOn ();
    3098        37736 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    3099              :     {
    3100        14210 :       Import (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    3101        14210 :       P1SymBuild_BuildImportOuterModule (false);
    3102              :     }
    3103              :    /* while  */
    3104        11763 :   M2Quads_PopAuto ();
    3105        11763 :   Block (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3106        11763 :   M2Quads_PushAutoOn ();
    3107        11763 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3108        11763 :   P1SymBuild_P1EndBuildProgramModule ();
    3109        11757 :   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2);
    3110        11757 :   M2Quads_PopAuto ();
    3111        11757 :   M2Quads_PopAuto ();
    3112        11757 :   M2Quads_PopAuto ();
    3113        11757 : }
    3114              : 
    3115              : 
    3116              : /*
    3117              :    ImplementationModule := 'IMPLEMENTATION' 
    3118              :                            % M2Error.DefaultImplementationModule  %
    3119              :                            'MODULE' 
    3120              :                            % PushAutoOn ;  %
    3121              :                            Ident 
    3122              :                            % P1StartBuildImplementationModule ;  %
    3123              :                            
    3124              :                            % PushAutoOff ;  %
    3125              :                            [ Priority  ] ';' 
    3126              :                            % PushAutoOn ;  %
    3127              :                            { Import 
    3128              :                              % BuildImportOuterModule(FALSE)  %
    3129              :                               } 
    3130              :                            % PopAuto ;  %
    3131              :                            Block 
    3132              :                            % PushAutoOn ;  %
    3133              :                            Ident 
    3134              :                            % P1EndBuildImplementationModule  %
    3135              :                            
    3136              :                            % PopAuto ; PopAuto ; PopAuto ;  %
    3137              :                            '.' 
    3138              : 
    3139              :    first  symbols:implementationtok
    3140              :    
    3141              :    cannot reachend
    3142              : */
    3143              : 
    3144        70863 : static void ImplementationModule (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3145              : {
    3146        70863 :   Expect (M2Reserved_implementationtok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2);
    3147        70863 :   M2Error_DefaultImplementationModule ();
    3148        70863 :   Expect (M2Reserved_moduletok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3149        70863 :   M2Quads_PushAutoOn ();
    3150        70863 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3151        70863 :   P1SymBuild_P1StartBuildImplementationModule ();
    3152        70863 :   M2Quads_PushAutoOff ();
    3153        70863 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3154              :     {
    3155           26 :       Priority (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    3156              :     }
    3157        70863 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_importtok-M2Reserved_arraytok)) | (1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    3158        70863 :   M2Quads_PushAutoOn ();
    3159       418778 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    3160              :     {
    3161       277052 :       Import (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    3162       277052 :       P1SymBuild_BuildImportOuterModule (false);
    3163              :     }
    3164              :    /* while  */
    3165        70863 :   M2Quads_PopAuto ();
    3166        70863 :   Block (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3167        70863 :   M2Quads_PushAutoOn ();
    3168        70863 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3169        70863 :   P1SymBuild_P1EndBuildImplementationModule ();
    3170        70863 :   M2Quads_PopAuto ();
    3171        70863 :   M2Quads_PopAuto ();
    3172        70863 :   M2Quads_PopAuto ();
    3173        70863 :   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2);
    3174        70863 : }
    3175              : 
    3176              : 
    3177              : /*
    3178              :    ImplementationOrProgramModule := ImplementationModule  | 
    3179              :                                     ProgramModule 
    3180              : 
    3181              :    first  symbols:moduletok, implementationtok
    3182              :    
    3183              :    cannot reachend
    3184              : */
    3185              : 
    3186        82626 : static void ImplementationOrProgramModule (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3187              : {
    3188        82626 :   if (M2LexBuf_currenttoken == M2Reserved_implementationtok)
    3189              :     {
    3190        70863 :       ImplementationModule (stopset0, stopset1, stopset2);
    3191              :     }
    3192        11763 :   else if (M2LexBuf_currenttoken == M2Reserved_moduletok)
    3193              :     {
    3194              :       /* avoid dangling else.  */
    3195        11763 :       ProgramModule (stopset0, stopset1, stopset2);
    3196              :     }
    3197              :   else
    3198              :     {
    3199              :       /* avoid dangling else.  */
    3200            0 :       ErrorArray ((const char *) "expecting one of: {%KMODULE} {%KIMPLEMENTATION}", 47);
    3201              :     }
    3202        82620 : }
    3203              : 
    3204              : 
    3205              : /*
    3206              :    Number := Integer  | Real 
    3207              : 
    3208              :    first  symbols:realtok, integertok
    3209              :    
    3210              :    cannot reachend
    3211              : */
    3212              : 
    3213      2762908 : static void Number (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3214              : {
    3215      2762908 :   if (M2LexBuf_currenttoken == M2Reserved_integertok)
    3216              :     {
    3217      2733950 :       Integer (stopset0, stopset1, stopset2);
    3218              :     }
    3219        28958 :   else if (M2LexBuf_currenttoken == M2Reserved_realtok)
    3220              :     {
    3221              :       /* avoid dangling else.  */
    3222        28958 :       Real (stopset0, stopset1, stopset2);
    3223              :     }
    3224              :   else
    3225              :     {
    3226              :       /* avoid dangling else.  */
    3227            0 :       ErrorArray ((const char *) "expecting one of: {%Kreal number} {%Kinteger number}", 52);
    3228              :     }
    3229      2762908 : }
    3230              : 
    3231              : 
    3232              : /*
    3233              :    Qualident := Ident { '.' Ident  } 
    3234              : 
    3235              :    first  symbols:identtok
    3236              :    
    3237              :    cannot reachend
    3238              : */
    3239              : 
    3240     42214224 : static void Qualident (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3241              : {
    3242     42214224 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3243     85520777 :   while (M2LexBuf_currenttoken == M2Reserved_periodtok)
    3244              :     {
    3245      1092329 :       Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3246      1092329 :       Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3247              :     }
    3248              :    /* while  */
    3249     42214224 : }
    3250              : 
    3251              : 
    3252              : /*
    3253              :    ConstantDeclaration := PossiblyExportIdent '=' ConstExpression 
    3254              : 
    3255              :    first  symbols:identtok
    3256              :    
    3257              :    cannot reachend
    3258              : */
    3259              : 
    3260       292392 : static void ConstantDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3261              : {
    3262       292392 :   PossiblyExportIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    3263       292392 :   Expect (M2Reserved_equaltok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    3264       292392 :   ConstExpression (stopset0, stopset1, stopset2);
    3265       292392 : }
    3266              : 
    3267              : 
    3268              : /*
    3269              :    ConstExpression := 
    3270              :                       % PushAutoOff  %
    3271              :                       SimpleConstExpr [ Relation SimpleConstExpr  ] 
    3272              :                       
    3273              :                       % PopAuto  %
    3274              :                       
    3275              : 
    3276              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    3277              :    
    3278              :    cannot reachend
    3279              : */
    3280              : 
    3281       662593 : static void ConstExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3282              : {
    3283       662593 :   M2Quads_PushAutoOff ();
    3284       662593 :   SimpleConstExpr (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_greaterequaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_greatertok-M2Reserved_eoftok)) | (1 << (M2Reserved_lessequaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_lesstok-M2Reserved_eoftok)) | (1 << (M2Reserved_lessgreatertok-M2Reserved_eoftok)) | (1 << (M2Reserved_hashtok-M2Reserved_eoftok)) | (1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_intok-M2Reserved_arraytok))), stopset2);
    3285       662593 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_hashtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lessgreatertok-M2Reserved_eoftok)) | (1 << (M2Reserved_lesstok-M2Reserved_eoftok)) | (1 << (M2Reserved_lessequaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_greatertok-M2Reserved_eoftok)) | (1 << (M2Reserved_greaterequaltok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_intok))
    3286              :     {
    3287           42 :       Relation (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    3288           42 :       SimpleConstExpr (stopset0, stopset1, stopset2);
    3289              :     }
    3290       662593 :   M2Quads_PopAuto ();
    3291       662593 : }
    3292              : 
    3293              : 
    3294              : /*
    3295              :    Relation := '='  | '#'  | '<>'  | '<'  | '<='  | 
    3296              :                '>'  | '>='  | 'IN' 
    3297              : 
    3298              :    first  symbols:intok, greaterequaltok, greatertok, lessequaltok, lesstok, lessgreatertok, hashtok, equaltok
    3299              :    
    3300              :    cannot reachend
    3301              : */
    3302              : 
    3303      2500168 : static void Relation (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3304              : {
    3305      2500168 :   if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    3306              :     {
    3307       800844 :       Expect (M2Reserved_equaltok, stopset0, stopset1, stopset2);
    3308              :     }
    3309              :   else if (M2LexBuf_currenttoken == M2Reserved_hashtok)
    3310              :     {
    3311              :       /* avoid dangling else.  */
    3312       569876 :       Expect (M2Reserved_hashtok, stopset0, stopset1, stopset2);
    3313              :     }
    3314              :   else if (M2LexBuf_currenttoken == M2Reserved_lessgreatertok)
    3315              :     {
    3316              :       /* avoid dangling else.  */
    3317           84 :       Expect (M2Reserved_lessgreatertok, stopset0, stopset1, stopset2);
    3318              :     }
    3319              :   else if (M2LexBuf_currenttoken == M2Reserved_lesstok)
    3320              :     {
    3321              :       /* avoid dangling else.  */
    3322       430218 :       Expect (M2Reserved_lesstok, stopset0, stopset1, stopset2);
    3323              :     }
    3324              :   else if (M2LexBuf_currenttoken == M2Reserved_lessequaltok)
    3325              :     {
    3326              :       /* avoid dangling else.  */
    3327       225696 :       Expect (M2Reserved_lessequaltok, stopset0, stopset1, stopset2);
    3328              :     }
    3329              :   else if (M2LexBuf_currenttoken == M2Reserved_greatertok)
    3330              :     {
    3331              :       /* avoid dangling else.  */
    3332       277382 :       Expect (M2Reserved_greatertok, stopset0, stopset1, stopset2);
    3333              :     }
    3334              :   else if (M2LexBuf_currenttoken == M2Reserved_greaterequaltok)
    3335              :     {
    3336              :       /* avoid dangling else.  */
    3337       112874 :       Expect (M2Reserved_greaterequaltok, stopset0, stopset1, stopset2);
    3338              :     }
    3339              :   else if (M2LexBuf_currenttoken == M2Reserved_intok)
    3340              :     {
    3341              :       /* avoid dangling else.  */
    3342        83194 :       Expect (M2Reserved_intok, stopset0, stopset1, stopset2);
    3343              :     }
    3344              :   else
    3345              :     {
    3346              :       /* avoid dangling else.  */
    3347            0 :       ErrorArray ((const char *) "expecting one of: {%KIN} {%K>=} {%K>} {%K<=} {%K<} {%K<>} {%K#} {%K=}", 69);
    3348              :     }
    3349      2500168 : }
    3350              : 
    3351              : 
    3352              : /*
    3353              :    SimpleConstExpr := UnaryOrConstTerm { AddOperator 
    3354              :                                          ConstTerm  } 
    3355              : 
    3356              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    3357              :    
    3358              :    cannot reachend
    3359              : */
    3360              : 
    3361       662635 : static void SimpleConstExpr (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3362              : {
    3363       662635 :   UnaryOrConstTerm (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    3364      1335326 :   while (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_ortok))
    3365              :     {
    3366        10056 :       AddOperator (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    3367        10056 :       ConstTerm (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    3368              :     }
    3369              :    /* while  */
    3370       662635 : }
    3371              : 
    3372              : 
    3373              : /*
    3374              :    UnaryOrConstTerm := '+' ConstTerm  | 
    3375              :                        '-' ConstTerm  | 
    3376              :                        ConstTerm 
    3377              : 
    3378              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    3379              :    
    3380              :    cannot reachend
    3381              : */
    3382              : 
    3383       662635 : static void UnaryOrConstTerm (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3384              : {
    3385       662635 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    3386              :     {
    3387           12 :       Expect (M2Reserved_plustok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    3388           12 :       ConstTerm (stopset0, stopset1, stopset2);
    3389              :     }
    3390       662623 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    3391              :     {
    3392              :       /* avoid dangling else.  */
    3393        18534 :       Expect (M2Reserved_minustok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    3394        18534 :       ConstTerm (stopset0, stopset1, stopset2);
    3395              :     }
    3396       644089 :   else if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_nottok)) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))))) != 0))))
    3397              :     {
    3398              :       /* avoid dangling else.  */
    3399       644089 :       ConstTerm (stopset0, stopset1, stopset2);
    3400              :     }
    3401              :   else
    3402              :     {
    3403              :       /* avoid dangling else.  */
    3404            0 :       ErrorArray ((const char *) "expecting one of: {%KNOT} {%K(} {%Kinteger number} {%Kreal number} {%K__ATTRIBUTE__} {%K%{} {%Kidentifier} {%Kstring} {%K-} {%K+}", 129);
    3405              :     }
    3406       662635 : }
    3407              : 
    3408              : 
    3409              : /*
    3410              :    AddOperator := '+'  | '-'  | 'OR' 
    3411              : 
    3412              :    first  symbols:ortok, minustok, plustok
    3413              :    
    3414              :    cannot reachend
    3415              : */
    3416              : 
    3417       857473 : static void AddOperator (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3418              : {
    3419       857473 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    3420              :     {
    3421       436859 :       Expect (M2Reserved_plustok, stopset0, stopset1, stopset2);
    3422              :     }
    3423       420614 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    3424              :     {
    3425              :       /* avoid dangling else.  */
    3426       270292 :       Expect (M2Reserved_minustok, stopset0, stopset1, stopset2);
    3427              :     }
    3428       150322 :   else if (M2LexBuf_currenttoken == M2Reserved_ortok)
    3429              :     {
    3430              :       /* avoid dangling else.  */
    3431       150322 :       Expect (M2Reserved_ortok, stopset0, stopset1, stopset2);
    3432              :     }
    3433              :   else
    3434              :     {
    3435              :       /* avoid dangling else.  */
    3436            0 :       ErrorArray ((const char *) "expecting one of: {%KOR} {%K-} {%K+}", 36);
    3437              :     }
    3438       857473 : }
    3439              : 
    3440              : 
    3441              : /*
    3442              :    ConstTerm := ConstFactor { MulOperator ConstFactor  } 
    3443              : 
    3444              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok
    3445              :    
    3446              :    cannot reachend
    3447              : */
    3448              : 
    3449       672691 : static void ConstTerm (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3450              : {
    3451       672691 :   ConstFactor (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_timestok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_modtok-M2Reserved_arraytok)) | (1 << (M2Reserved_divtok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    3452      1364658 :   while ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_timestok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_ambersandtok-M2Reserved_eoftok))))) != 0))) || (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))))) != 0)))) || (M2LexBuf_currenttoken == M2Reserved_remtok))
    3453              :     {
    3454        19276 :       MulOperator (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    3455        19276 :       ConstFactor (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_timestok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_ambersandtok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    3456              :     }
    3457              :    /* while  */
    3458       672691 : }
    3459              : 
    3460              : 
    3461              : /*
    3462              :    MulOperator := '*'  | '/'  | 'DIV'  | 'MOD'  | 
    3463              :                   'REM'  | 'AND'  | '&' 
    3464              : 
    3465              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
    3466              :    
    3467              :    cannot reachend
    3468              : */
    3469              : 
    3470       805624 : static void MulOperator (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3471              : {
    3472       805624 :   if (M2LexBuf_currenttoken == M2Reserved_timestok)
    3473              :     {
    3474       123430 :       Expect (M2Reserved_timestok, stopset0, stopset1, stopset2);
    3475              :     }
    3476              :   else if (M2LexBuf_currenttoken == M2Reserved_dividetok)
    3477              :     {
    3478              :       /* avoid dangling else.  */
    3479        14236 :       Expect (M2Reserved_dividetok, stopset0, stopset1, stopset2);
    3480              :     }
    3481              :   else if (M2LexBuf_currenttoken == M2Reserved_divtok)
    3482              :     {
    3483              :       /* avoid dangling else.  */
    3484        85654 :       Expect (M2Reserved_divtok, stopset0, stopset1, stopset2);
    3485              :     }
    3486              :   else if (M2LexBuf_currenttoken == M2Reserved_modtok)
    3487              :     {
    3488              :       /* avoid dangling else.  */
    3489       132676 :       Expect (M2Reserved_modtok, stopset0, stopset1, stopset2);
    3490              :     }
    3491              :   else if (M2LexBuf_currenttoken == M2Reserved_remtok)
    3492              :     {
    3493              :       /* avoid dangling else.  */
    3494           96 :       Expect (M2Reserved_remtok, stopset0, stopset1, stopset2);
    3495              :     }
    3496              :   else if (M2LexBuf_currenttoken == M2Reserved_andtok)
    3497              :     {
    3498              :       /* avoid dangling else.  */
    3499       449532 :       Expect (M2Reserved_andtok, stopset0, stopset1, stopset2);
    3500              :     }
    3501              :   else if (M2LexBuf_currenttoken == M2Reserved_ambersandtok)
    3502              :     {
    3503              :       /* avoid dangling else.  */
    3504            0 :       Expect (M2Reserved_ambersandtok, stopset0, stopset1, stopset2);
    3505              :     }
    3506              :   else
    3507              :     {
    3508              :       /* avoid dangling else.  */
    3509            0 :       ErrorArray ((const char *) "expecting one of: {%K&} {%KAND} {%KREM} {%KMOD} {%KDIV} {%K/} {%K*}", 67);
    3510              :     }
    3511       805624 : }
    3512              : 
    3513              : 
    3514              : /*
    3515              :    ConstFactor := Number  | ConstString  | 
    3516              :                   ConstSetOrQualidentOrFunction  | 
    3517              :                   '(' ConstExpression ')'  | 
    3518              :                   'NOT' ConstFactor  | 
    3519              :                   ConstAttribute 
    3520              : 
    3521              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok
    3522              :    
    3523              :    cannot reachend
    3524              : */
    3525              : 
    3526       691967 : static void ConstFactor (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3527              : {
    3528       691967 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok))))) != 0)))
    3529              :     {
    3530       369710 :       Number (stopset0, stopset1, stopset2);
    3531              :     }
    3532       322257 :   else if (M2LexBuf_currenttoken == M2Reserved_stringtok)
    3533              :     {
    3534              :       /* avoid dangling else.  */
    3535        50533 :       ConstString (stopset0, stopset1, stopset2);
    3536              :     }
    3537              :   else if ((M2LexBuf_currenttoken == M2Reserved_lcbratok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    3538              :     {
    3539              :       /* avoid dangling else.  */
    3540       242006 :       ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
    3541              :     }
    3542              :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    3543              :     {
    3544              :       /* avoid dangling else.  */
    3545           78 :       Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    3546           78 :       ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3547           78 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    3548              :     }
    3549              :   else if (M2LexBuf_currenttoken == M2Reserved_nottok)
    3550              :     {
    3551              :       /* avoid dangling else.  */
    3552            0 :       Expect (M2Reserved_nottok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    3553            0 :       ConstFactor (stopset0, stopset1, stopset2);
    3554              :     }
    3555              :   else if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    3556              :     {
    3557              :       /* avoid dangling else.  */
    3558        29640 :       ConstAttribute (stopset0, stopset1, stopset2);
    3559              :     }
    3560              :   else
    3561              :     {
    3562              :       /* avoid dangling else.  */
    3563            0 :       ErrorArray ((const char *) "expecting one of: {%K__ATTRIBUTE__} {%KNOT} {%K(} {%K%{} {%Kidentifier} {%Kstring} {%Kinteger number} {%Kreal number}", 117);
    3564              :     }
    3565       691967 : }
    3566              : 
    3567              : 
    3568              : /*
    3569              :    ConstString := string 
    3570              : 
    3571              :    first  symbols:stringtok
    3572              :    
    3573              :    cannot reachend
    3574              : */
    3575              : 
    3576        50533 : static void ConstString (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3577              : {
    3578        50533 :   string (stopset0, stopset1, stopset2);
    3579        50533 : }
    3580              : 
    3581              : 
    3582              : /*
    3583              :    ComponentElement := ConstExpression [ '..' ConstExpression  ] 
    3584              : 
    3585              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    3586              :    
    3587              :    cannot reachend
    3588              : */
    3589              : 
    3590        29382 : static void ComponentElement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3591              : {
    3592        29382 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3593        29382 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    3594              :     {
    3595          362 :       Expect (M2Reserved_periodperiodtok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    3596          362 :       ConstExpression (stopset0, stopset1, stopset2);
    3597              :     }
    3598        29382 : }
    3599              : 
    3600              : 
    3601              : /*
    3602              :    ComponentValue := ComponentElement [ 'BY' ConstExpression  ] 
    3603              : 
    3604              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    3605              :    
    3606              :    cannot reachend
    3607              : */
    3608              : 
    3609        29382 : static void ComponentValue (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3610              : {
    3611        29382 :   ComponentElement (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_bytok-M2Reserved_arraytok))), stopset2);
    3612        29382 :   if (M2LexBuf_currenttoken == M2Reserved_bytok)
    3613              :     {
    3614           30 :       Expect (M2Reserved_bytok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    3615           30 :       ConstExpression (stopset0, stopset1, stopset2);
    3616              :     }
    3617        29382 : }
    3618              : 
    3619              : 
    3620              : /*
    3621              :    ArraySetRecordValue := ComponentValue { ',' ComponentValue  } 
    3622              : 
    3623              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    3624              :    
    3625              :    cannot reachend
    3626              : */
    3627              : 
    3628        10392 : static void ArraySetRecordValue (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3629              : {
    3630        10392 :   ComponentValue (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    3631        39774 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    3632              :     {
    3633        18990 :       Expect (M2Reserved_commatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    3634        18990 :       ComponentValue (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    3635              :     }
    3636              :    /* while  */
    3637        10392 : }
    3638              : 
    3639              : 
    3640              : /*
    3641              :    Constructor := '{' [ ArraySetRecordValue  ] '}' 
    3642              : 
    3643              :    first  symbols:lcbratok
    3644              :    
    3645              :    cannot reachend
    3646              : */
    3647              : 
    3648        36518 : static void Constructor (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3649              : {
    3650        36518 :   Expect (M2Reserved_lcbratok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    3651        36518 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_nottok)) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))))) != 0))))
    3652              :     {
    3653        10392 :       ArraySetRecordValue (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rcbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3654              :     }
    3655        36518 :   Expect (M2Reserved_rcbratok, stopset0, stopset1, stopset2);
    3656        36518 : }
    3657              : 
    3658              : 
    3659              : /*
    3660              :    ConstSetOrQualidentOrFunction := Constructor  | 
    3661              :                                     Qualident [ Constructor  | 
    3662              :                                                 ConstActualParameters  ] 
    3663              : 
    3664              :    first  symbols:identtok, lcbratok
    3665              :    
    3666              :    cannot reachend
    3667              : */
    3668              : 
    3669       242006 : static void ConstSetOrQualidentOrFunction (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3670              : {
    3671       242006 :   if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    3672              :     {
    3673          552 :       Constructor (stopset0, stopset1, stopset2);
    3674              :     }
    3675       241454 :   else if (M2LexBuf_currenttoken == M2Reserved_identtok)
    3676              :     {
    3677              :       /* avoid dangling else.  */
    3678       241454 :       Qualident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3679       241454 :       if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0)))
    3680              :         {
    3681              :           /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    3682              :           /* seen optional [ | ] expression  */
    3683        13148 :           if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    3684              :             {
    3685         5870 :               Constructor (stopset0, stopset1, stopset2);
    3686              :             }
    3687         7278 :           else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    3688              :             {
    3689              :               /* avoid dangling else.  */
    3690         7278 :               ConstActualParameters (stopset0, stopset1, stopset2);
    3691              :             }
    3692              :           else
    3693              :             {
    3694              :               /* avoid dangling else.  */
    3695            0 :               ErrorArray ((const char *) "expecting one of: {%K(} {%K%{}", 30);
    3696              :             }
    3697              :         }
    3698              :       /* end of optional [ | ] expression  */
    3699              :     }
    3700              :   else
    3701              :     {
    3702              :       /* avoid dangling else.  */
    3703            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%K%{}", 39);
    3704              :     }
    3705       242006 : }
    3706              : 
    3707              : 
    3708              : /*
    3709              :    ConstActualParameters := '(' [ ExpList  ] ')' 
    3710              : 
    3711              :    first  symbols:lparatok
    3712              :    
    3713              :    cannot reachend
    3714              : */
    3715              : 
    3716         7278 : static void ConstActualParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3717              : {
    3718         7278 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3719         7278 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_nottok)) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    3720              :     {
    3721         7278 :       ExpList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3722              :     }
    3723         7278 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    3724         7278 : }
    3725              : 
    3726              : 
    3727              : /*
    3728              :    ConstAttribute := '__ATTRIBUTE__' '__BUILTIN__' 
    3729              :                      '(' '(' ConstAttributeExpression 
    3730              :                      ')' ')' 
    3731              : 
    3732              :    first  symbols:attributetok
    3733              :    
    3734              :    cannot reachend
    3735              : */
    3736              : 
    3737        29640 : static void ConstAttribute (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3738              : {
    3739        29640 :   Expect (M2Reserved_attributetok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok))));
    3740        29640 :   Expect (M2Reserved_builtintok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3741        29640 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3742        29640 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lesstok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3743        29640 :   ConstAttributeExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3744        29640 :   Expect (M2Reserved_rparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3745        29640 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    3746        29640 : }
    3747              : 
    3748              : 
    3749              : /*
    3750              :    ConstAttributeExpression := Ident  | '<' Qualident 
    3751              :                                ',' Ident '>' 
    3752              : 
    3753              :    first  symbols:lesstok, identtok
    3754              :    
    3755              :    cannot reachend
    3756              : */
    3757              : 
    3758        29640 : static void ConstAttributeExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3759              : {
    3760        29640 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    3761              :     {
    3762        29280 :       Ident (stopset0, stopset1, stopset2);
    3763              :     }
    3764          360 :   else if (M2LexBuf_currenttoken == M2Reserved_lesstok)
    3765              :     {
    3766              :       /* avoid dangling else.  */
    3767          360 :       Expect (M2Reserved_lesstok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3768          360 :       Qualident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    3769          360 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3770          360 :       Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_greatertok-M2Reserved_eoftok))), stopset1, stopset2);
    3771          360 :       Expect (M2Reserved_greatertok, stopset0, stopset1, stopset2);
    3772              :     }
    3773              :   else
    3774              :     {
    3775              :       /* avoid dangling else.  */
    3776            0 :       ErrorArray ((const char *) "expecting one of: {%K<} {%Kidentifier}", 38);
    3777              :     }
    3778        29640 : }
    3779              : 
    3780              : 
    3781              : /*
    3782              :    ByteAlignment := '' 
    3783              : 
    3784              :    first  symbols:ldirectivetok
    3785              :    
    3786              :    cannot reachend
    3787              : */
    3788              : 
    3789           72 : static void ByteAlignment (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3790              : {
    3791           72 :   Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3792           72 :   AttributeExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    3793           72 :   Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    3794           72 : }
    3795              : 
    3796              : 
    3797              : /*
    3798              :    Alignment := [ ByteAlignment  ] 
    3799              : 
    3800              :    first  symbols:ldirectivetok
    3801              :    
    3802              :    reachend
    3803              : */
    3804              : 
    3805      1412759 : static void Alignment (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3806              : {
    3807            0 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    3808              :     {
    3809           72 :       ByteAlignment (stopset0, stopset1, stopset2);
    3810              :     }
    3811            0 : }
    3812              : 
    3813              : 
    3814              : /*
    3815              :    TypeDeclaration := 
    3816              :                       % PushAutoOn  %
    3817              :                       ( IdentScope '=' Type Alignment  ) 
    3818              :                       
    3819              :                       % PopAuto     %
    3820              :                       
    3821              : 
    3822              :    first  symbols:identtok
    3823              :    
    3824              :    cannot reachend
    3825              : */
    3826              : 
    3827       117340 : static void TypeDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3828              : {
    3829       117340 :   M2Quads_PushAutoOn ();
    3830       117340 :   IdentScope (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    3831       117340 :   Expect (M2Reserved_equaltok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_pointertok-M2Reserved_arraytok)) | (1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) | (1 << (M2Reserved_oftok-M2Reserved_arraytok)) | (1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3832       117340 :   Type (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    3833       117340 :   Alignment (stopset0, stopset1, stopset2);
    3834       117340 :   M2Quads_PopAuto ();
    3835       117340 : }
    3836              : 
    3837              : 
    3838              : /*
    3839              :    Type := 
    3840              :            % VAR Name: CARDINAL ;  %
    3841              :            
    3842              :            % PushAutoOff  %
    3843              :            ( SimpleType  | ArrayType  | RecordType  | 
    3844              :              SetType  | PointerType  | 
    3845              :              ProcedureType  ) 
    3846              :            % PopAuto  %
    3847              :            
    3848              :            % PopT(Name)   remove TYPE name from stack   %
    3849              :            
    3850              : 
    3851              :    first  symbols:lparatok, lsbratok, proceduretok, pointertok, settok, packedsettok, oftok, recordtok, arraytok, identtok
    3852              :    
    3853              :    cannot reachend
    3854              : */
    3855              : 
    3856      1912986 : static void Type (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3857              : {
    3858      1912986 :   unsigned int Name;
    3859              : 
    3860      1912986 :   M2Quads_PushAutoOff ();
    3861      1912986 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    3862              :     {
    3863      1576216 :       SimpleType (stopset0, stopset1, stopset2);
    3864              :     }
    3865       336770 :   else if (M2LexBuf_currenttoken == M2Reserved_arraytok)
    3866              :     {
    3867              :       /* avoid dangling else.  */
    3868       100110 :       ArrayType (stopset0, stopset1, stopset2);
    3869              :     }
    3870       236660 :   else if (M2LexBuf_currenttoken == M2Reserved_recordtok)
    3871              :     {
    3872              :       /* avoid dangling else.  */
    3873        71539 :       RecordType (stopset0, stopset1, stopset2);
    3874              :     }
    3875       165121 :   else if ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) | (1 << (M2Reserved_oftok-M2Reserved_arraytok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_settok))
    3876              :     {
    3877              :       /* avoid dangling else.  */
    3878         4748 :       SetType (stopset0, stopset1, stopset2);
    3879              :     }
    3880       160373 :   else if (M2LexBuf_currenttoken == M2Reserved_pointertok)
    3881              :     {
    3882              :       /* avoid dangling else.  */
    3883       100973 :       PointerType (stopset0, stopset1, stopset2);
    3884              :     }
    3885        59400 :   else if (M2LexBuf_currenttoken == M2Reserved_proceduretok)
    3886              :     {
    3887              :       /* avoid dangling else.  */
    3888        59400 :       ProcedureType (stopset0, stopset1, stopset2);
    3889              :     }
    3890              :   else
    3891              :     {
    3892              :       /* avoid dangling else.  */
    3893            0 :       ErrorArray ((const char *) "expecting one of: {%KPROCEDURE} {%KPOINTER} {%KSET} {%KPACKEDSET} {%KOF} {%KRECORD} {%KARRAY} {%Kidentifier} {%K(} {%K[}", 120);
    3894              :     }
    3895      1912986 :   M2Quads_PopAuto ();
    3896      1912986 :   M2Quads_PopT (&Name);  /* remove TYPE name from stack  */
    3897      1912986 : }
    3898              : 
    3899              : 
    3900              : /*
    3901              :    SimpleType := Qualident [ SubrangeType  ]  | 
    3902              :                  Enumeration  | SubrangeType 
    3903              : 
    3904              :    first  symbols:lsbratok, lparatok, identtok
    3905              :    
    3906              :    cannot reachend
    3907              : */
    3908              : 
    3909      1681212 : static void SimpleType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3910              : {
    3911      1681212 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    3912              :     {
    3913              :       /* avoid dangling else.  */
    3914      1545079 :       Qualident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3915      1545079 :       if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3916              :         {
    3917           18 :           SubrangeType (stopset0, stopset1, stopset2);
    3918              :         }
    3919              :     }
    3920       136133 :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    3921              :     {
    3922              :       /* avoid dangling else.  */
    3923        34163 :       Enumeration (stopset0, stopset1, stopset2);
    3924              :     }
    3925       101970 :   else if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3926              :     {
    3927              :       /* avoid dangling else.  */
    3928       101970 :       SubrangeType (stopset0, stopset1, stopset2);
    3929              :     }
    3930              :   else
    3931              :     {
    3932              :       /* avoid dangling else.  */
    3933            0 :       ErrorArray ((const char *) "expecting one of: {%K[} {%K(} {%Kidentifier}", 44);
    3934              :     }
    3935      1681212 : }
    3936              : 
    3937              : 
    3938              : /*
    3939              :    Enumeration := '(' 
    3940              :                   % PushAutoOn  %
    3941              :                   ( PossiblyExportIdentList 
    3942              :                     % StartBuildEnumeration  %
    3943              :                     
    3944              :                     % EndBuildEnumeration  %
    3945              :                      ) 
    3946              :                   % PopAuto  %
    3947              :                   ')' 
    3948              : 
    3949              :    first  symbols:lparatok
    3950              :    
    3951              :    cannot reachend
    3952              : */
    3953              : 
    3954        34163 : static void Enumeration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3955              : {
    3956        34163 :   Expect (M2Reserved_lparatok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3957        34163 :   M2Quads_PushAutoOn ();
    3958        34163 :   PossiblyExportIdentList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3959        34163 :   P1SymBuild_StartBuildEnumeration ();
    3960        34163 :   P1SymBuild_EndBuildEnumeration ();
    3961        34163 :   M2Quads_PopAuto ();
    3962        34163 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    3963        34163 : }
    3964              : 
    3965              : 
    3966              : /*
    3967              :    IdentList := Ident 
    3968              :                 % VAR
    3969              :                                                                                                   on: BOOLEAN ;
    3970              :                                                                                                   n : CARDINAL ;  %
    3971              :                 
    3972              :                 % on := IsAutoPushOn() ;
    3973              :                   IF on
    3974              :                   THEN
    3975              :                      n := 1
    3976              :                   END  %
    3977              :                 { ',' Ident 
    3978              :                   % IF on
    3979              :                     THEN
    3980              :                        INC(n)
    3981              :                     END  %
    3982              :                    } 
    3983              :                 % IF on
    3984              :                   THEN
    3985              :                      PushT(n)
    3986              :                   END  %
    3987              :                 
    3988              : 
    3989              :    first  symbols:identtok
    3990              :    
    3991              :    cannot reachend
    3992              : */
    3993              : 
    3994      9079704 : static void IdentList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    3995              : {
    3996      9079704 :   bool on;
    3997      9079704 :   unsigned int n;
    3998              : 
    3999      9079704 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4000      9079704 :   on = M2Quads_IsAutoPushOn ();
    4001      9079704 :   if (on)
    4002              :     {
    4003      9079704 :       n = 1;
    4004              :     }
    4005     13985541 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4006              :     {
    4007      4905837 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4008      4905837 :       Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4009      4905837 :       if (on)
    4010              :         {
    4011      2764910 :           n += 1;
    4012              :         }
    4013              :     }
    4014              :    /* while  */
    4015      9079704 :   if (on)
    4016              :     {
    4017       437352 :       M2Quads_PushT (n);
    4018              :     }
    4019      9079704 : }
    4020              : 
    4021              : 
    4022              : /*
    4023              :    PossiblyExportIdentList := PossiblyExportIdent 
    4024              :                               % VAR
    4025              :                                                                                                                 on: BOOLEAN ;
    4026              :                                                                                                                 n : CARDINAL ;  %
    4027              :                               
    4028              :                               % on := IsAutoPushOn() ;
    4029              :                                 IF on
    4030              :                                 THEN
    4031              :                                    n := 1
    4032              :                                 END  %
    4033              :                               { ',' PossiblyExportIdent 
    4034              :                                 
    4035              :                                 % IF on
    4036              :                                   THEN
    4037              :                                      INC(n)
    4038              :                                   END  %
    4039              :                                  } 
    4040              :                               % IF on
    4041              :                                 THEN
    4042              :                                    PushT(n)
    4043              :                                 END  %
    4044              :                               
    4045              : 
    4046              :    first  symbols:identtok
    4047              :    
    4048              :    cannot reachend
    4049              : */
    4050              : 
    4051        34163 : static void PossiblyExportIdentList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4052              : {
    4053        34163 :   bool on;
    4054        34163 :   unsigned int n;
    4055              : 
    4056        34163 :   PossiblyExportIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4057        34163 :   on = M2Quads_IsAutoPushOn ();
    4058        34163 :   if (on)
    4059              :     {
    4060        34163 :       n = 1;
    4061              :     }
    4062       463527 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4063              :     {
    4064       429364 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4065       429364 :       PossiblyExportIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4066       429364 :       if (on)
    4067              :         {
    4068       429364 :           n += 1;
    4069              :         }
    4070              :     }
    4071              :    /* while  */
    4072        34163 :   if (on)
    4073              :     {
    4074        34163 :       M2Quads_PushT (n);
    4075              :     }
    4076        34163 : }
    4077              : 
    4078              : 
    4079              : /*
    4080              :    SubrangeType := '[' ConstExpression '..' ConstExpression 
    4081              :                    ']' 
    4082              : 
    4083              :    first  symbols:lsbratok
    4084              :    
    4085              :    cannot reachend
    4086              : */
    4087              : 
    4088       101988 : static void SubrangeType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4089              : {
    4090       101988 :   Expect (M2Reserved_lsbratok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    4091       101988 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4092       101988 :   Expect (M2Reserved_periodperiodtok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    4093       101988 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4094       101988 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    4095       101988 : }
    4096              : 
    4097              : 
    4098              : /*
    4099              :    ArrayType := 'ARRAY' SimpleType { ',' SimpleType  } 
    4100              :                 'OF' 
    4101              :                 % BuildNulName  %
    4102              :                 Type 
    4103              : 
    4104              :    first  symbols:arraytok
    4105              :    
    4106              :    cannot reachend
    4107              : */
    4108              : 
    4109       100110 : static void ArrayType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4110              : {
    4111       100110 :   Expect (M2Reserved_arraytok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4112       100110 :   SimpleType (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    4113       200358 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4114              :     {
    4115          138 :       Expect (M2Reserved_commatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4116          138 :       SimpleType (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    4117              :     }
    4118              :    /* while  */
    4119       100110 :   Expect (M2Reserved_oftok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_pointertok-M2Reserved_arraytok)) | (1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) | (1 << (M2Reserved_oftok-M2Reserved_arraytok)) | (1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4120       100110 :   P1SymBuild_BuildNulName ();
    4121       100110 :   Type (stopset0, stopset1, stopset2);
    4122       100110 : }
    4123              : 
    4124              : 
    4125              : /*
    4126              :    RecordType := 'RECORD' [ DefaultRecordAttributes  ] 
    4127              :                  FieldListSequence 'END' 
    4128              : 
    4129              :    first  symbols:recordtok
    4130              :    
    4131              :    cannot reachend
    4132              : */
    4133              : 
    4134        71539 : static void RecordType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4135              : {
    4136        71539 :   Expect (M2Reserved_recordtok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4137        71539 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    4138              :     {
    4139           36 :       DefaultRecordAttributes (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4140              :     }
    4141        71539 :   FieldListSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    4142        71539 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    4143        71539 : }
    4144              : 
    4145              : 
    4146              : /*
    4147              :    DefaultRecordAttributes := '' 
    4148              : 
    4149              :    first  symbols:ldirectivetok
    4150              :    
    4151              :    cannot reachend
    4152              : */
    4153              : 
    4154           36 : static void DefaultRecordAttributes (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4155              : {
    4156           36 :   Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4157           36 :   AttributeExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    4158           36 :   Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    4159           36 : }
    4160              : 
    4161              : 
    4162              : /*
    4163              :    RecordFieldPragma := [ ''  ] 
    4164              : 
    4165              :    first  symbols:ldirectivetok
    4166              :    
    4167              :    reachend
    4168              : */
    4169              : 
    4170       299144 : static void RecordFieldPragma (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4171              : {
    4172       299144 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    4173              :     {
    4174           12 :       Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4175           12 :       FieldPragmaExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok)) | (1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    4176           24 :       while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4177              :         {
    4178            0 :           Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4179            0 :           FieldPragmaExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4180              :         }
    4181              :        /* while  */
    4182           12 :       Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    4183              :     }
    4184       299144 : }
    4185              : 
    4186              : 
    4187              : /*
    4188              :    FieldPragmaExpression := 
    4189              :                             % PushAutoOff  %
    4190              :                             Ident [ '(' ConstExpression 
    4191              :                                     ')'  ] 
    4192              :                             % PopAuto  %
    4193              :                             
    4194              : 
    4195              :    first  symbols:identtok
    4196              :    
    4197              :    cannot reachend
    4198              : */
    4199              : 
    4200           12 : static void FieldPragmaExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4201              : {
    4202           12 :   M2Quads_PushAutoOff ();
    4203           12 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4204           12 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4205              :     {
    4206           12 :       Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    4207           12 :       ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4208           12 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4209              :     }
    4210           12 :   M2Quads_PopAuto ();
    4211           12 : }
    4212              : 
    4213              : 
    4214              : /*
    4215              :    AttributeExpression := 
    4216              :                           % PushAutoOff  %
    4217              :                           Ident '(' ConstExpression 
    4218              :                           ')' 
    4219              :                           % PopAuto  %
    4220              :                           
    4221              : 
    4222              :    first  symbols:identtok
    4223              :    
    4224              :    cannot reachend
    4225              : */
    4226              : 
    4227          108 : static void AttributeExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4228              : {
    4229          108 :   M2Quads_PushAutoOff ();
    4230          108 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4231          108 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    4232          108 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4233          108 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4234          108 :   M2Quads_PopAuto ();
    4235          108 : }
    4236              : 
    4237              : 
    4238              : /*
    4239              :    AttributeUnused := [ ''  ] 
    4240              : 
    4241              :    first  symbols:ldirectivetok
    4242              :    
    4243              :    reachend
    4244              : */
    4245              : 
    4246            0 : static void AttributeUnused (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4247              : {
    4248            0 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    4249              :     {
    4250            0 :       Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4251            0 :       M2Quads_PushAutoOff ();
    4252            0 :       Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    4253            0 :       M2Quads_PopAuto ();
    4254            0 :       Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    4255              :     }
    4256            0 : }
    4257              : 
    4258              : 
    4259              : /*
    4260              :    FieldListSequence := FieldListStatement { ';' FieldListStatement  } 
    4261              : 
    4262              :    first  symbols:casetok, identtok, semicolontok
    4263              :    
    4264              :    reachend
    4265              : */
    4266              : 
    4267        77629 : static void FieldListSequence (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4268              : {
    4269        77629 :   FieldListStatement (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    4270       445676 :   while (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    4271              :     {
    4272       290418 :       Expect (M2Reserved_semicolontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4273       290418 :       FieldListStatement (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    4274              :     }
    4275              :    /* while  */
    4276        77629 : }
    4277              : 
    4278              : 
    4279              : /*
    4280              :    FieldListStatement := [ FieldList  ] 
    4281              : 
    4282              :    first  symbols:identtok, casetok
    4283              :    
    4284              :    reachend
    4285              : */
    4286              : 
    4287       368047 : static void FieldListStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4288              : {
    4289       368047 :   if ((M2LexBuf_currenttoken == M2Reserved_casetok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    4290              :     {
    4291       302132 :       FieldList (stopset0, stopset1, stopset2);
    4292              :     }
    4293       368047 : }
    4294              : 
    4295              : 
    4296              : /*
    4297              :    FieldList := IdentList ':' 
    4298              :                 % BuildNulName  %
    4299              :                 Type RecordFieldPragma  | 
    4300              :                 'CASE' CaseTag 'OF' Varient { '|' Varient  } 
    4301              :                 [ 'ELSE' FieldListSequence  ] 'END' 
    4302              : 
    4303              :    first  symbols:casetok, identtok
    4304              :    
    4305              :    cannot reachend
    4306              : */
    4307              : 
    4308       302132 : static void FieldList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4309              : {
    4310       302132 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4311              :     {
    4312       299144 :       IdentList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4313       299144 :       Expect (M2Reserved_colontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_pointertok-M2Reserved_arraytok)) | (1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) | (1 << (M2Reserved_oftok-M2Reserved_arraytok)) | (1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4314       299144 :       P1SymBuild_BuildNulName ();
    4315       299144 :       Type (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    4316       299144 :       RecordFieldPragma (stopset0, stopset1, stopset2);
    4317              :     }
    4318         2988 :   else if (M2LexBuf_currenttoken == M2Reserved_casetok)
    4319              :     {
    4320              :       /* avoid dangling else.  */
    4321         2988 :       Expect (M2Reserved_casetok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4322         2988 :       CaseTag (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    4323         2988 :       Expect (M2Reserved_oftok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    4324         2988 :       Varient (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    4325         9324 :       while (M2LexBuf_currenttoken == M2Reserved_bartok)
    4326              :         {
    4327         3348 :           Expect (M2Reserved_bartok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    4328         3348 :           Varient (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok))), stopset2);
    4329              :         }
    4330              :        /* while  */
    4331         2988 :       if (M2LexBuf_currenttoken == M2Reserved_elsetok)
    4332              :         {
    4333          114 :           Expect (M2Reserved_elsetok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4334          114 :           FieldListSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    4335              :         }
    4336         2988 :       Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    4337              :     }
    4338              :   else
    4339              :     {
    4340              :       /* avoid dangling else.  */
    4341            0 :       ErrorArray ((const char *) "expecting one of: {%KCASE} {%Kidentifier}", 41);
    4342              :     }
    4343       302132 : }
    4344              : 
    4345              : 
    4346              : /*
    4347              :    TagIdent := [ Ident  ] 
    4348              : 
    4349              :    first  symbols:identtok
    4350              :    
    4351              :    reachend
    4352              : */
    4353              : 
    4354         2988 : static void TagIdent (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4355              : {
    4356            0 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4357              :     {
    4358         2946 :       Ident (stopset0, stopset1, stopset2);
    4359              :     }
    4360            0 : }
    4361              : 
    4362              : 
    4363              : /*
    4364              :    CaseTag := TagIdent [ ':' Qualident  ] 
    4365              : 
    4366              :    first  symbols:colontok, identtok
    4367              :    
    4368              :    reachend
    4369              : */
    4370              : 
    4371         2988 : static void CaseTag (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4372              : {
    4373         2988 :   TagIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4374         2988 :   if (M2LexBuf_currenttoken == M2Reserved_colontok)
    4375              :     {
    4376         2976 :       Expect (M2Reserved_colontok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4377         2976 :       Qualident (stopset0, stopset1, stopset2);
    4378              :     }
    4379         2988 : }
    4380              : 
    4381              : 
    4382              : /*
    4383              :    Varient := [ VarientCaseLabelList ':' FieldListSequence  ] 
    4384              : 
    4385              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    4386              :    
    4387              :    reachend
    4388              : */
    4389              : 
    4390         6336 : static void Varient (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4391              : {
    4392         6336 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_nottok)) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))))) != 0))))
    4393              :     {
    4394         5976 :       VarientCaseLabelList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4395         5976 :       Expect (M2Reserved_colontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4396         5976 :       FieldListSequence (stopset0, stopset1, stopset2);
    4397              :     }
    4398         6336 : }
    4399              : 
    4400              : 
    4401              : /*
    4402              :    VarientCaseLabelList := VarientCaseLabels { ',' 
    4403              :                                                VarientCaseLabels  } 
    4404              : 
    4405              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    4406              :    
    4407              :    cannot reachend
    4408              : */
    4409              : 
    4410         5976 : static void VarientCaseLabelList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4411              : {
    4412         5976 :   VarientCaseLabels (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4413        11994 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4414              :     {
    4415           42 :       Expect (M2Reserved_commatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    4416           42 :       VarientCaseLabels (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4417              :     }
    4418              :    /* while  */
    4419         5976 : }
    4420              : 
    4421              : 
    4422              : /*
    4423              :    VarientCaseLabels := ConstExpression [ '..' ConstExpression  ] 
    4424              : 
    4425              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    4426              :    
    4427              :    cannot reachend
    4428              : */
    4429              : 
    4430         6018 : static void VarientCaseLabels (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4431              : {
    4432         6018 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4433         6018 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    4434              :     {
    4435            0 :       Expect (M2Reserved_periodperiodtok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    4436            0 :       ConstExpression (stopset0, stopset1, stopset2);
    4437              :     }
    4438         6018 : }
    4439              : 
    4440              : 
    4441              : /*
    4442              :    CaseLabelList := CaseLabels { ',' CaseLabels  } 
    4443              : 
    4444              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    4445              :    
    4446              :    cannot reachend
    4447              : */
    4448              : 
    4449       111678 : static void CaseLabelList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4450              : {
    4451       111678 :   CaseLabels (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4452       223604 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4453              :     {
    4454          248 :       Expect (M2Reserved_commatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    4455          248 :       CaseLabels (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4456              :     }
    4457              :    /* while  */
    4458       111678 : }
    4459              : 
    4460              : 
    4461              : /*
    4462              :    CaseLabels := ConstExpression [ '..' ConstExpression  ] 
    4463              : 
    4464              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    4465              :    
    4466              :    cannot reachend
    4467              : */
    4468              : 
    4469       111926 : static void CaseLabels (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4470              : {
    4471       111926 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4472       111926 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    4473              :     {
    4474          168 :       Expect (M2Reserved_periodperiodtok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    4475          168 :       ConstExpression (stopset0, stopset1, stopset2);
    4476              :     }
    4477       111926 : }
    4478              : 
    4479              : 
    4480              : /*
    4481              :    SetType := 
    4482              :               % VAR Name: CARDINAL ;  %
    4483              :               ( 'SET'  | 'PACKEDSET'  ) 'OF' 
    4484              :               % BuildNulName ;  %
    4485              :               SimpleType 
    4486              :               % PopT(Name) ;  %
    4487              :               
    4488              : 
    4489              :    first  symbols:oftok, packedsettok, settok
    4490              :    
    4491              :    cannot reachend
    4492              : */
    4493              : 
    4494         4748 : static void SetType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4495              : {
    4496         4748 :   unsigned int Name;
    4497              : 
    4498         4748 :   if (M2LexBuf_currenttoken == M2Reserved_settok)
    4499              :     {
    4500         1916 :       Expect (M2Reserved_settok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    4501              :     }
    4502         2832 :   else if (M2LexBuf_currenttoken == M2Reserved_packedsettok)
    4503              :     {
    4504              :       /* avoid dangling else.  */
    4505         2832 :       Expect (M2Reserved_packedsettok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    4506              :     }
    4507              :   else
    4508              :     {
    4509              :       /* avoid dangling else.  */
    4510            0 :       ErrorArray ((const char *) "expecting one of: {%KPACKEDSET} {%KSET}", 39);
    4511              :     }
    4512         4748 :   Expect (M2Reserved_oftok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4513         4748 :   P1SymBuild_BuildNulName ();
    4514         4748 :   SimpleType (stopset0, stopset1, stopset2);
    4515         4748 :   M2Quads_PopT (&Name);
    4516         4748 : }
    4517              : 
    4518              : 
    4519              : /*
    4520              :    PointerType := 'POINTER' 'TO' 
    4521              :                   % BuildNulName  %
    4522              :                   Type 
    4523              : 
    4524              :    first  symbols:pointertok
    4525              :    
    4526              :    cannot reachend
    4527              : */
    4528              : 
    4529       100973 : static void PointerType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4530              : {
    4531       100973 :   Expect (M2Reserved_pointertok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_totok-M2Reserved_unqualifiedtok))));
    4532       100973 :   Expect (M2Reserved_totok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_pointertok-M2Reserved_arraytok)) | (1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) | (1 << (M2Reserved_oftok-M2Reserved_arraytok)) | (1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4533       100973 :   P1SymBuild_BuildNulName ();
    4534       100973 :   Type (stopset0, stopset1, stopset2);
    4535       100973 : }
    4536              : 
    4537              : 
    4538              : /*
    4539              :    ProcedureType := 'PROCEDURE' [ FormalTypeList  ] 
    4540              : 
    4541              :    first  symbols:proceduretok
    4542              :    
    4543              :    cannot reachend
    4544              : */
    4545              : 
    4546        59400 : static void ProcedureType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4547              : {
    4548        59400 :   Expect (M2Reserved_proceduretok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4549        59400 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4550              :     {
    4551        44586 :       FormalTypeList (stopset0, stopset1, stopset2);
    4552              :     }
    4553        59400 : }
    4554              : 
    4555              : 
    4556              : /*
    4557              :    FormalTypeList := '(' ( ')' FormalReturn  | 
    4558              :                            ProcedureParameters ')' 
    4559              :                            FormalReturn  ) 
    4560              : 
    4561              :    first  symbols:lparatok
    4562              :    
    4563              :    cannot reachend
    4564              : */
    4565              : 
    4566        44586 : static void FormalTypeList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4567              : {
    4568        44586 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4569        44586 :   if (M2LexBuf_currenttoken == M2Reserved_rparatok)
    4570              :     {
    4571         5682 :       Expect (M2Reserved_rparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4572         5682 :       FormalReturn (stopset0, stopset1, stopset2);
    4573              :     }
    4574        38904 :   else if ((M2LexBuf_currenttoken == M2Reserved_arraytok) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    4575              :     {
    4576              :       /* avoid dangling else.  */
    4577        38904 :       ProcedureParameters (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4578        38904 :       Expect (M2Reserved_rparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4579        38904 :       FormalReturn (stopset0, stopset1, stopset2);
    4580              :     }
    4581              :   else
    4582              :     {
    4583              :       /* avoid dangling else.  */
    4584            0 :       ErrorArray ((const char *) "expecting one of: {%KVAR} {%K...} {%KARRAY} {%Kidentifier} {%K)}", 64);
    4585              :     }
    4586        44586 : }
    4587              : 
    4588              : 
    4589              : /*
    4590              :    FormalReturn := [ ':' OptReturnType  ] 
    4591              : 
    4592              :    first  symbols:colontok
    4593              :    
    4594              :    reachend
    4595              : */
    4596              : 
    4597      4999298 : static void FormalReturn (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4598              : {
    4599      4999298 :   if (M2LexBuf_currenttoken == M2Reserved_colontok)
    4600              :     {
    4601      3144865 :       Expect (M2Reserved_colontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4602      3144865 :       OptReturnType (stopset0, stopset1, stopset2);
    4603              :     }
    4604      4999298 : }
    4605              : 
    4606              : 
    4607              : /*
    4608              :    OptReturnType := '[' Qualident ']'  | 
    4609              :                     Qualident 
    4610              : 
    4611              :    first  symbols:identtok, lsbratok
    4612              :    
    4613              :    cannot reachend
    4614              : */
    4615              : 
    4616      3144865 : static void OptReturnType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4617              : {
    4618      3144865 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    4619              :     {
    4620       133948 :       Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4621       133948 :       Qualident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4622       133948 :       Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    4623              :     }
    4624      3010917 :   else if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4625              :     {
    4626              :       /* avoid dangling else.  */
    4627      3010917 :       Qualident (stopset0, stopset1, stopset2);
    4628              :     }
    4629              :   else
    4630              :     {
    4631              :       /* avoid dangling else.  */
    4632            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%K[}", 38);
    4633              :     }
    4634      3144865 : }
    4635              : 
    4636              : 
    4637              : /*
    4638              :    ProcedureParameters := ProcedureParameter { ',' 
    4639              :                                                ProcedureParameter  } 
    4640              : 
    4641              :    first  symbols:identtok, arraytok, periodperiodperiodtok, vartok
    4642              :    
    4643              :    cannot reachend
    4644              : */
    4645              : 
    4646        38904 : static void ProcedureParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4647              : {
    4648        38904 :   ProcedureParameter (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4649       122694 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4650              :     {
    4651        44886 :       Expect (M2Reserved_commatok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4652        44886 :       ProcedureParameter (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4653              :     }
    4654              :    /* while  */
    4655        38904 : }
    4656              : 
    4657              : 
    4658              : /*
    4659              :    ProcedureParameter := '...'  | 'VAR' FormalType  | 
    4660              :                          FormalType 
    4661              : 
    4662              :    first  symbols:arraytok, identtok, vartok, periodperiodperiodtok
    4663              :    
    4664              :    cannot reachend
    4665              : */
    4666              : 
    4667        83790 : static void ProcedureParameter (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4668              : {
    4669        83790 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok)
    4670              :     {
    4671            0 :       Expect (M2Reserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
    4672              :     }
    4673        83790 :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    4674              :     {
    4675              :       /* avoid dangling else.  */
    4676         6498 :       Expect (M2Reserved_vartok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4677         6498 :       FormalType (stopset0, stopset1, stopset2);
    4678              :     }
    4679        77292 :   else if ((M2LexBuf_currenttoken == M2Reserved_arraytok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    4680              :     {
    4681              :       /* avoid dangling else.  */
    4682        77292 :       FormalType (stopset0, stopset1, stopset2);
    4683              :     }
    4684              :   else
    4685              :     {
    4686              :       /* avoid dangling else.  */
    4687            0 :       ErrorArray ((const char *) "expecting one of: {%KARRAY} {%Kidentifier} {%KVAR} {%K...}", 58);
    4688              :     }
    4689        83790 : }
    4690              : 
    4691              : 
    4692              : /*
    4693              :    VarIdent := PossiblyExportIdent [ '[' ConstExpression 
    4694              :                                      ']'  ] 
    4695              : 
    4696              :    first  symbols:identtok
    4697              :    
    4698              :    cannot reachend
    4699              : */
    4700              : 
    4701      1696588 : static void VarIdent (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4702              : {
    4703      1696588 :   PossiblyExportIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4704      1696588 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    4705              :     {
    4706           54 :       Expect (M2Reserved_lsbratok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    4707           54 :       ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4708           54 :       Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    4709              :     }
    4710      1696588 : }
    4711              : 
    4712              : 
    4713              : /*
    4714              :    VariableDeclaration := ( VarIdentList ':' 
    4715              :                             % BuildNulName  %
    4716              :                             Type Alignment  ) 
    4717              : 
    4718              :    first  symbols:identtok
    4719              :    
    4720              :    cannot reachend
    4721              : */
    4722              : 
    4723      1176396 : static void VariableDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4724              : {
    4725      1176396 :   VarIdentList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4726      1176396 :   Expect (M2Reserved_colontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_pointertok-M2Reserved_arraytok)) | (1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) | (1 << (M2Reserved_oftok-M2Reserved_arraytok)) | (1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4727      1176396 :   P1SymBuild_BuildNulName ();
    4728      1176396 :   Type (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    4729      1176396 :   Alignment (stopset0, stopset1, stopset2);
    4730      1176396 : }
    4731              : 
    4732              : 
    4733              : /*
    4734              :    VarIdentList := VarIdent 
    4735              :                    % VAR
    4736              :                                                                                                      on: BOOLEAN ;
    4737              :                                                                                                      n : CARDINAL ;  %
    4738              :                    
    4739              :                    % on := IsAutoPushOn() ;
    4740              :                      IF on
    4741              :                      THEN
    4742              :                         n := 1
    4743              :                      END  %
    4744              :                    { ',' VarIdent 
    4745              :                      % IF on
    4746              :                        THEN
    4747              :                           INC(n)
    4748              :                        END  %
    4749              :                       } 
    4750              :                    % IF on
    4751              :                      THEN
    4752              :                         PushT(n)
    4753              :                      END  %
    4754              :                    
    4755              : 
    4756              :    first  symbols:identtok
    4757              :    
    4758              :    cannot reachend
    4759              : */
    4760              : 
    4761      1176396 : static void VarIdentList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4762              : {
    4763      1176396 :   bool on;
    4764      1176396 :   unsigned int n;
    4765              : 
    4766      1176396 :   VarIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4767      1176396 :   on = M2Quads_IsAutoPushOn ();
    4768      1176396 :   if (on)
    4769              :     {
    4770      1176396 :       n = 1;
    4771              :     }
    4772      1696588 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4773              :     {
    4774       520192 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4775       520192 :       VarIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4776       520192 :       if (on)
    4777              :         {
    4778            0 :           n += 1;
    4779              :         }
    4780              :     }
    4781              :    /* while  */
    4782      1176396 :   if (on)
    4783              :     {
    4784            0 :       M2Quads_PushT (n);
    4785              :     }
    4786      1176396 : }
    4787              : 
    4788              : 
    4789              : /*
    4790              :    Designator := Qualident { SubDesignator  } 
    4791              : 
    4792              :    first  symbols:identtok
    4793              :    
    4794              :    cannot reachend
    4795              : */
    4796              : 
    4797      7077224 : static void Designator (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4798              : {
    4799      7077224 :   Qualident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4800     15244843 :   while ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))))) != 0)))
    4801              :     {
    4802      1090395 :       SubDesignator (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))), stopset1, stopset2);
    4803              :     }
    4804              :    /* while  */
    4805      7077224 : }
    4806              : 
    4807              : 
    4808              : /*
    4809              :    SubDesignator := '.' Ident  | '[' ExpList ']'  | 
    4810              :                     '^' 
    4811              : 
    4812              :    first  symbols:uparrowtok, lsbratok, periodtok
    4813              :    
    4814              :    cannot reachend
    4815              : */
    4816              : 
    4817      1090395 : static void SubDesignator (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4818              : {
    4819      1090395 :   if (M2LexBuf_currenttoken == M2Reserved_periodtok)
    4820              :     {
    4821       297745 :       Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4822       297745 :       Ident (stopset0, stopset1, stopset2);
    4823              :     }
    4824       792650 :   else if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    4825              :     {
    4826              :       /* avoid dangling else.  */
    4827       334988 :       Expect (M2Reserved_lsbratok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4828       334988 :       ExpList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4829       334988 :       Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    4830              :     }
    4831       457662 :   else if (M2LexBuf_currenttoken == M2Reserved_uparrowtok)
    4832              :     {
    4833              :       /* avoid dangling else.  */
    4834       457662 :       Expect (M2Reserved_uparrowtok, stopset0, stopset1, stopset2);
    4835              :     }
    4836              :   else
    4837              :     {
    4838              :       /* avoid dangling else.  */
    4839            0 :       ErrorArray ((const char *) "expecting one of: {%K^} {%K[} {%K.}", 35);
    4840              :     }
    4841      1090395 : }
    4842              : 
    4843              : 
    4844              : /*
    4845              :    ExpList := Expression { ',' Expression  } 
    4846              : 
    4847              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    4848              :    
    4849              :    cannot reachend
    4850              : */
    4851              : 
    4852      8182655 : static void ExpList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4853              : {
    4854      8182655 :   Expression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4855     21975255 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4856              :     {
    4857      5609945 :       Expect (M2Reserved_commatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4858      5609945 :       Expression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4859              :     }
    4860              :    /* while  */
    4861      8182655 : }
    4862              : 
    4863              : 
    4864              : /*
    4865              :    Expression := 
    4866              :                  % PushAutoOff  %
    4867              :                  SimpleExpression [ Relation SimpleExpression  ] 
    4868              :                  
    4869              :                  % PopAuto  %
    4870              :                  
    4871              : 
    4872              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, attributetok, plustok, minustok
    4873              :    
    4874              :    cannot reachend
    4875              : */
    4876              : 
    4877     23204991 : static void Expression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4878              : {
    4879     23204991 :   M2Quads_PushAutoOff ();
    4880     23204991 :   SimpleExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_greaterequaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_greatertok-M2Reserved_eoftok)) | (1 << (M2Reserved_lessequaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_lesstok-M2Reserved_eoftok)) | (1 << (M2Reserved_lessgreatertok-M2Reserved_eoftok)) | (1 << (M2Reserved_hashtok-M2Reserved_eoftok)) | (1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_intok-M2Reserved_arraytok))), stopset2);
    4881     23204991 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_hashtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lessgreatertok-M2Reserved_eoftok)) | (1 << (M2Reserved_lesstok-M2Reserved_eoftok)) | (1 << (M2Reserved_lessequaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_greatertok-M2Reserved_eoftok)) | (1 << (M2Reserved_greaterequaltok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_intok))
    4882              :     {
    4883      2500126 :       Relation (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4884      2500126 :       SimpleExpression (stopset0, stopset1, stopset2);
    4885              :     }
    4886     23204991 :   M2Quads_PopAuto ();
    4887     23204991 : }
    4888              : 
    4889              : 
    4890              : /*
    4891              :    SimpleExpression := [ '+'  | '-'  ] Term { AddOperator 
    4892              :                                               Term  } 
    4893              : 
    4894              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    4895              :    
    4896              :    cannot reachend
    4897              : */
    4898              : 
    4899     25705117 : static void SimpleExpression (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4900              : {
    4901     25705117 :   if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok))))) != 0)))
    4902              :     {
    4903              :       /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    4904              :       /* seen optional [ | ] expression  */
    4905       128019 :       if (M2LexBuf_currenttoken == M2Reserved_plustok)
    4906              :         {
    4907          144 :           Expect (M2Reserved_plustok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4908              :         }
    4909       127875 :       else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    4910              :         {
    4911              :           /* avoid dangling else.  */
    4912       127875 :           Expect (M2Reserved_minustok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4913              :         }
    4914              :       else
    4915              :         {
    4916              :           /* avoid dangling else.  */
    4917            0 :           ErrorArray ((const char *) "expecting one of: {%K-} {%K+}", 29);
    4918              :         }
    4919              :     }
    4920              :   /* end of optional [ | ] expression  */
    4921     25705117 :   Term (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    4922     52257651 :   while (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_ortok))
    4923              :     {
    4924       847417 :       AddOperator (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4925       847417 :       Term (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    4926              :     }
    4927              :    /* while  */
    4928     25705117 : }
    4929              : 
    4930              : 
    4931              : /*
    4932              :    Term := Factor { MulOperator Factor  } 
    4933              : 
    4934              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, attributetok
    4935              :    
    4936              :    cannot reachend
    4937              : */
    4938              : 
    4939     26552534 : static void Term (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4940              : {
    4941     26552534 :   Factor (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_timestok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_modtok-M2Reserved_arraytok)) | (1 << (M2Reserved_divtok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    4942     53891416 :   while ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_timestok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_ambersandtok-M2Reserved_eoftok))))) != 0))) || (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))))) != 0)))) || (M2LexBuf_currenttoken == M2Reserved_remtok))
    4943              :     {
    4944       786348 :       MulOperator (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4945       786348 :       Factor (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_timestok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_ambersandtok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    4946              :     }
    4947              :    /* while  */
    4948     26552534 : }
    4949              : 
    4950              : 
    4951              : /*
    4952              :    Factor := Number  | string  | SetOrDesignatorOrFunction  | 
    4953              :              '(' Expression ')'  | 
    4954              :              'NOT' Factor  | ConstAttribute 
    4955              : 
    4956              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok
    4957              :    
    4958              :    cannot reachend
    4959              : */
    4960              : 
    4961     27338882 : static void Factor (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    4962              : {
    4963     27474476 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok))))) != 0)))
    4964              :     {
    4965      2393198 :       Number (stopset0, stopset1, stopset2);
    4966              :     }
    4967     25081278 :   else if (M2LexBuf_currenttoken == M2Reserved_stringtok)
    4968              :     {
    4969              :       /* avoid dangling else.  */
    4970      1633797 :       string (stopset0, stopset1, stopset2);
    4971              :     }
    4972              :   else if ((M2LexBuf_currenttoken == M2Reserved_lcbratok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    4973              :     {
    4974              :       /* avoid dangling else.  */
    4975     21757912 :       SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
    4976              :     }
    4977              :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4978              :     {
    4979              :       /* avoid dangling else.  */
    4980      1553975 :       Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4981      1553975 :       Expression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4982      1553975 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4983              :     }
    4984              :   else if (M2LexBuf_currenttoken == M2Reserved_nottok)
    4985              :     {
    4986              :       /* avoid dangling else.  */
    4987       135594 :       Expect (M2Reserved_nottok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4988       135594 :       Factor (stopset0, stopset1, stopset2);
    4989              :     }
    4990              :   else if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    4991              :     {
    4992              :       /* avoid dangling else.  */
    4993            0 :       ConstAttribute (stopset0, stopset1, stopset2);
    4994              :     }
    4995              :   else
    4996              :     {
    4997              :       /* avoid dangling else.  */
    4998            0 :       ErrorArray ((const char *) "expecting one of: {%K__ATTRIBUTE__} {%KNOT} {%K(} {%Kidentifier} {%K%{} {%Kstring} {%Kinteger number} {%Kreal number}", 117);
    4999              :     }
    5000     27338882 : }
    5001              : 
    5002              : 
    5003              : /*
    5004              :    SetOrDesignatorOrFunction := ( Qualident [ Constructor  | 
    5005              :                                               SimpleDes 
    5006              :                                               [ ActualParameters  ]  ]  | 
    5007              :                                   Constructor  ) 
    5008              : 
    5009              :    first  symbols:lcbratok, identtok
    5010              :    
    5011              :    cannot reachend
    5012              : */
    5013              : 
    5014     21757912 : static void SetOrDesignatorOrFunction (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5015              : {
    5016     21757912 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    5017              :     {
    5018              :       /* avoid dangling else.  */
    5019     21757614 :       Qualident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5020     21757614 :       if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0)))
    5021              :         {
    5022              :           /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    5023              :           /* seen optional [ | ] expression  */
    5024      6023954 :           if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    5025              :             {
    5026        29798 :               Constructor (stopset0, stopset1, stopset2);
    5027              :             }
    5028      5994156 :           else if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))))) != 0)))
    5029              :             {
    5030              :               /* avoid dangling else.  */
    5031      5994156 :               SimpleDes (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5032      5994156 :               if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5033              :                 {
    5034      4652546 :                   ActualParameters (stopset0, stopset1, stopset2);
    5035              :                 }
    5036              :             }
    5037              :           else
    5038              :             {
    5039              :               /* avoid dangling else.  */
    5040            0 :               ErrorArray ((const char *) "expecting one of: {%K(} {%K.} {%K[} {%K^} {%K%{}", 48);
    5041              :             }
    5042              :         }
    5043              :       /* end of optional [ | ] expression  */
    5044              :     }
    5045          298 :   else if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    5046              :     {
    5047              :       /* avoid dangling else.  */
    5048          298 :       Constructor (stopset0, stopset1, stopset2);
    5049              :     }
    5050              :   else
    5051              :     {
    5052              :       /* avoid dangling else.  */
    5053            0 :       ErrorArray ((const char *) "expecting one of: {%K%{} {%Kidentifier}", 39);
    5054              :     }
    5055     21757912 : }
    5056              : 
    5057              : 
    5058              : /*
    5059              :    SimpleDes := { '.' Ident  | '[' ExpList ']'  | 
    5060              :                   '^'  } 
    5061              : 
    5062              :    first  symbols:uparrowtok, lsbratok, periodtok
    5063              :    
    5064              :    reachend
    5065              : */
    5066              : 
    5067      5994156 : static void SimpleDes (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5068              : {
    5069      5994156 :   if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))))) != 0)))
    5070              :     {
    5071              :       /* seen optional { | } expression  */
    5072      3788054 :       while ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))))) != 0)))
    5073              :         {
    5074      2444226 :           if (M2LexBuf_currenttoken == M2Reserved_periodtok)
    5075              :             {
    5076       998656 :               Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5077       998656 :               Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    5078              :             }
    5079      1445570 :           else if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    5080              :             {
    5081              :               /* avoid dangling else.  */
    5082       545148 :               Expect (M2Reserved_lsbratok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5083       545148 :               ExpList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    5084       545148 :               Expect (M2Reserved_rsbratok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    5085              :             }
    5086       900422 :           else if (M2LexBuf_currenttoken == M2Reserved_uparrowtok)
    5087              :             {
    5088              :               /* avoid dangling else.  */
    5089       900422 :               Expect (M2Reserved_uparrowtok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    5090              :             }
    5091              :         }
    5092              :       /* end of optional { | } expression  */
    5093              :     }
    5094      5994156 : }
    5095              : 
    5096              : 
    5097              : /*
    5098              :    ActualParameters := '(' [ ExpList  ] ')' 
    5099              : 
    5100              :    first  symbols:lparatok
    5101              :    
    5102              :    cannot reachend
    5103              : */
    5104              : 
    5105      7421494 : static void ActualParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5106              : {
    5107      7421494 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5108      7421494 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_nottok)) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    5109              :     {
    5110      7295241 :       ExpList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5111              :     }
    5112      7421494 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    5113      7421494 : }
    5114              : 
    5115              : 
    5116              : /*
    5117              :    Statement := [ AssignmentOrProcedureCall  | 
    5118              :                   IfStatement  | CaseStatement  | 
    5119              :                   WhileStatement  | 
    5120              :                   RepeatStatement  | 
    5121              :                   LoopStatement  | ForStatement  | 
    5122              :                   WithStatement  | AsmStatement  | 
    5123              :                   'EXIT'  | 'RETURN' [ Expression  ]  | 
    5124              :                   RetryStatement  ] 
    5125              : 
    5126              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok
    5127              :    
    5128              :    reachend
    5129              : */
    5130              : 
    5131     11187311 : static void Statement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5132              : {
    5133     11187311 :   if ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok))))) != 0))) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    5134              :     {
    5135              :       /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    5136              :       /* seen optional [ | ] expression  */
    5137     11011999 :       if (M2LexBuf_currenttoken == M2Reserved_identtok)
    5138              :         {
    5139      6882156 :           AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
    5140              :         }
    5141              :       else if (M2LexBuf_currenttoken == M2Reserved_iftok)
    5142              :         {
    5143              :           /* avoid dangling else.  */
    5144      1932049 :           IfStatement (stopset0, stopset1, stopset2);
    5145              :         }
    5146              :       else if (M2LexBuf_currenttoken == M2Reserved_casetok)
    5147              :         {
    5148              :           /* avoid dangling else.  */
    5149        42004 :           CaseStatement (stopset0, stopset1, stopset2);
    5150              :         }
    5151              :       else if (M2LexBuf_currenttoken == M2Reserved_whiletok)
    5152              :         {
    5153              :           /* avoid dangling else.  */
    5154       379720 :           WhileStatement (stopset0, stopset1, stopset2);
    5155              :         }
    5156              :       else if (M2LexBuf_currenttoken == M2Reserved_repeattok)
    5157              :         {
    5158              :           /* avoid dangling else.  */
    5159        71582 :           RepeatStatement (stopset0, stopset1, stopset2);
    5160              :         }
    5161              :       else if (M2LexBuf_currenttoken == M2Reserved_looptok)
    5162              :         {
    5163              :           /* avoid dangling else.  */
    5164         8680 :           LoopStatement (stopset0, stopset1, stopset2);
    5165              :         }
    5166              :       else if (M2LexBuf_currenttoken == M2Reserved_fortok)
    5167              :         {
    5168              :           /* avoid dangling else.  */
    5169        43466 :           ForStatement (stopset0, stopset1, stopset2);
    5170              :         }
    5171              :       else if (M2LexBuf_currenttoken == M2Reserved_withtok)
    5172              :         {
    5173              :           /* avoid dangling else.  */
    5174       195068 :           WithStatement (stopset0, stopset1, stopset2);
    5175              :         }
    5176              :       else if (M2LexBuf_currenttoken == M2Reserved_asmtok)
    5177              :         {
    5178              :           /* avoid dangling else.  */
    5179           27 :           AsmStatement (stopset0, stopset1, stopset2);
    5180              :         }
    5181              :       else if (M2LexBuf_currenttoken == M2Reserved_exittok)
    5182              :         {
    5183              :           /* avoid dangling else.  */
    5184          106 :           Expect (M2Reserved_exittok, stopset0, stopset1, stopset2);
    5185              :         }
    5186              :       else if (M2LexBuf_currenttoken == M2Reserved_returntok)
    5187              :         {
    5188              :           /* avoid dangling else.  */
    5189      1456973 :           Expect (M2Reserved_returntok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5190      1456973 :           if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_nottok)) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    5191              :             {
    5192      1433369 :               Expression (stopset0, stopset1, stopset2);
    5193              :             }
    5194              :         }
    5195              :       else if (M2LexBuf_currenttoken == M2Reserved_retrytok)
    5196              :         {
    5197              :           /* avoid dangling else.  */
    5198          168 :           RetryStatement (stopset0, stopset1, stopset2);
    5199              :         }
    5200              :       else
    5201              :         {
    5202              :           /* avoid dangling else.  */
    5203            0 :           ErrorArray ((const char *) "expecting one of: {%KRETRY} {%KRETURN} {%KEXIT} {%KASM} {%KWITH} {%KFOR} {%KLOOP} {%KREPEAT} {%KWHILE} {%KCASE} {%KIF} {%Kidentifier}", 133);
    5204              :         }
    5205              :     }
    5206              :   /* end of optional [ | ] expression  */
    5207     11187311 : }
    5208              : 
    5209              : 
    5210              : /*
    5211              :    RetryStatement := 'RETRY' 
    5212              : 
    5213              :    first  symbols:retrytok
    5214              :    
    5215              :    cannot reachend
    5216              : */
    5217              : 
    5218          168 : static void RetryStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5219              : {
    5220          168 :   Expect (M2Reserved_retrytok, stopset0, stopset1, stopset2);
    5221          168 : }
    5222              : 
    5223              : 
    5224              : /*
    5225              :    AssignmentOrProcedureCall := Designator ( ':=' Expression  | 
    5226              :                                              ActualParameters  | 
    5227              :                                              
    5228              :                                              %  epsilon   %
    5229              :                                               ) 
    5230              : 
    5231              :    first  symbols:identtok
    5232              :    
    5233              :    cannot reachend
    5234              : */
    5235              : 
    5236      6882156 : static void AssignmentOrProcedureCall (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5237              : {
    5238      6882156 :   Designator (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_becomestok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5239      6882156 :   if (M2LexBuf_currenttoken == M2Reserved_becomestok)
    5240              :     {
    5241      3768399 :       Expect (M2Reserved_becomestok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5242      3768399 :       Expression (stopset0, stopset1, stopset2);
    5243              :     }
    5244      3113757 :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5245              :     {
    5246              :       /* avoid dangling else.  */
    5247      2768948 :       ActualParameters (stopset0, stopset1, stopset2);
    5248              :     }
    5249              :   /* epsilon  */
    5250      6882156 : }
    5251              : 
    5252              : 
    5253              : /*
    5254              :    StatementSequence := Statement { ';' Statement  } 
    5255              : 
    5256              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok
    5257              :    
    5258              :    reachend
    5259              : */
    5260              : 
    5261      5624154 : static void StatementSequence (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5262              : {
    5263      5624154 :   Statement (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5264     16811465 :   while (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    5265              :     {
    5266      5563157 :       Expect (M2Reserved_semicolontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5267      5563157 :       Statement (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5268              :     }
    5269              :    /* while  */
    5270      5624154 : }
    5271              : 
    5272              : 
    5273              : /*
    5274              :    IfStatement := 'IF' Expression 'THEN' StatementSequence 
    5275              :                   { 'ELSIF' Expression 'THEN' StatementSequence  } 
    5276              :                   [ 'ELSE' StatementSequence  ] 'END' 
    5277              : 
    5278              :    first  symbols:iftok
    5279              :    
    5280              :    cannot reachend
    5281              : */
    5282              : 
    5283      1932049 : static void IfStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5284              : {
    5285      1932049 :   Expect (M2Reserved_iftok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5286      1932049 :   Expression (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_thentok-M2Reserved_unqualifiedtok))));
    5287      1932049 :   Expect (M2Reserved_thentok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsiftok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5288      1932049 :   StatementSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_elsiftok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5289      4008426 :   while (M2LexBuf_currenttoken == M2Reserved_elsiftok)
    5290              :     {
    5291       144328 :       Expect (M2Reserved_elsiftok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5292       144328 :       Expression (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_thentok-M2Reserved_unqualifiedtok))));
    5293       144328 :       Expect (M2Reserved_thentok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsiftok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5294       144328 :       StatementSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsiftok-M2Reserved_arraytok))), stopset2);
    5295              :     }
    5296              :    /* while  */
    5297      1932049 :   if (M2LexBuf_currenttoken == M2Reserved_elsetok)
    5298              :     {
    5299       780284 :       Expect (M2Reserved_elsetok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5300       780284 :       StatementSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5301              :     }
    5302      1932049 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5303      1932049 : }
    5304              : 
    5305              : 
    5306              : /*
    5307              :    CaseStatement := 'CASE' Expression 'OF' Case { '|' 
    5308              :                                                   Case  } 
    5309              :                     [ 'ELSE' StatementSequence  ] 'END' 
    5310              : 
    5311              :    first  symbols:casetok
    5312              :    
    5313              :    cannot reachend
    5314              : */
    5315              : 
    5316        42004 : static void CaseStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5317              : {
    5318        42004 :   Expect (M2Reserved_casetok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5319        42004 :   Expression (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    5320        42004 :   Expect (M2Reserved_oftok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    5321        42004 :   Case (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5322       153788 :   while (M2LexBuf_currenttoken == M2Reserved_bartok)
    5323              :     {
    5324        69780 :       Expect (M2Reserved_bartok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    5325        69780 :       Case (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok))), stopset2);
    5326              :     }
    5327              :    /* while  */
    5328        42004 :   if (M2LexBuf_currenttoken == M2Reserved_elsetok)
    5329              :     {
    5330        27592 :       Expect (M2Reserved_elsetok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5331        27592 :       StatementSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5332              :     }
    5333        42004 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5334        42004 : }
    5335              : 
    5336              : 
    5337              : /*
    5338              :    Case := [ CaseLabelList ':' StatementSequence  ] 
    5339              : 
    5340              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    5341              :    
    5342              :    reachend
    5343              : */
    5344              : 
    5345       111784 : static void Case (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5346              : {
    5347       111784 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_nottok)) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))))) != 0))))
    5348              :     {
    5349       111678 :       CaseLabelList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5350       111678 :       Expect (M2Reserved_colontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5351       111678 :       StatementSequence (stopset0, stopset1, stopset2);
    5352              :     }
    5353       111784 : }
    5354              : 
    5355              : 
    5356              : /*
    5357              :    WhileStatement := 'WHILE' Expression 'DO' StatementSequence 
    5358              :                      'END' 
    5359              : 
    5360              :    first  symbols:whiletok
    5361              :    
    5362              :    cannot reachend
    5363              : */
    5364              : 
    5365       379720 : static void WhileStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5366              : {
    5367       379720 :   Expect (M2Reserved_whiletok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5368       379720 :   Expression (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    5369       379720 :   Expect (M2Reserved_dotok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5370       379720 :   StatementSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5371       379720 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5372       379720 : }
    5373              : 
    5374              : 
    5375              : /*
    5376              :    RepeatStatement := 'REPEAT' StatementSequence 'UNTIL' 
    5377              :                       Expression 
    5378              : 
    5379              :    first  symbols:repeattok
    5380              :    
    5381              :    cannot reachend
    5382              : */
    5383              : 
    5384        71582 : static void RepeatStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5385              : {
    5386        71582 :   Expect (M2Reserved_repeattok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_untiltok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5387        71582 :   StatementSequence (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_untiltok-M2Reserved_unqualifiedtok))));
    5388        71582 :   Expect (M2Reserved_untiltok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5389        71582 :   Expression (stopset0, stopset1, stopset2);
    5390        71582 : }
    5391              : 
    5392              : 
    5393              : /*
    5394              :    ForStatement := 'FOR' Ident ':=' Expression 'TO' 
    5395              :                    Expression [ 'BY' ConstExpression  ] 
    5396              :                    'DO' StatementSequence 'END' 
    5397              : 
    5398              :    first  symbols:fortok
    5399              :    
    5400              :    cannot reachend
    5401              : */
    5402              : 
    5403        43466 : static void ForStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5404              : {
    5405        43466 :   Expect (M2Reserved_fortok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5406        43466 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_becomestok-M2Reserved_eoftok))), stopset1, stopset2);
    5407        43466 :   Expect (M2Reserved_becomestok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5408        43466 :   Expression (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_totok-M2Reserved_unqualifiedtok))));
    5409        43466 :   Expect (M2Reserved_totok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5410        43466 :   Expression (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_bytok-M2Reserved_arraytok)) | (1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    5411        43466 :   if (M2LexBuf_currenttoken == M2Reserved_bytok)
    5412              :     {
    5413          366 :       Expect (M2Reserved_bytok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    5414          366 :       ConstExpression (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    5415              :     }
    5416        43466 :   Expect (M2Reserved_dotok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5417        43466 :   StatementSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5418        43466 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5419        43466 : }
    5420              : 
    5421              : 
    5422              : /*
    5423              :    LoopStatement := 'LOOP' StatementSequence 'END' 
    5424              : 
    5425              :    first  symbols:looptok
    5426              :    
    5427              :    cannot reachend
    5428              : */
    5429              : 
    5430         8680 : static void LoopStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5431              : {
    5432         8680 :   Expect (M2Reserved_looptok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5433         8680 :   StatementSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5434         8680 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5435         8680 : }
    5436              : 
    5437              : 
    5438              : /*
    5439              :    WithStatement := 'WITH' Designator 'DO' StatementSequence 
    5440              :                     'END' 
    5441              : 
    5442              :    first  symbols:withtok
    5443              :    
    5444              :    cannot reachend
    5445              : */
    5446              : 
    5447       195068 : static void WithStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5448              : {
    5449       195068 :   Expect (M2Reserved_withtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5450       195068 :   Designator (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    5451       195068 :   Expect (M2Reserved_dotok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5452       195068 :   StatementSequence (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5453       195068 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5454       195068 : }
    5455              : 
    5456              : 
    5457              : /*
    5458              :    ProcedureDeclaration := 
    5459              :                            % VAR top: CARDINAL ;  %
    5460              :                            
    5461              :                            % top := Top ()  %
    5462              :                            ProcedureHeading ';' PostProcedureHeading 
    5463              :                            
    5464              :                            % Assert (top = Top ())  %
    5465              :                            
    5466              : 
    5467              :    first  symbols:proceduretok
    5468              :    
    5469              :    cannot reachend
    5470              : */
    5471              : 
    5472      1886035 : static void ProcedureDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5473              : {
    5474      1886035 :   unsigned int top;
    5475              : 
    5476      1886035 :   top = M2Quads_Top ();
    5477      1886035 :   ProcedureHeading (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5478      1886035 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_forwardtok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5479      1886035 :   PostProcedureHeading (stopset0, stopset1, stopset2);
    5480      1886035 :   M2Debug_Assert (top == (M2Quads_Top ()));
    5481      1886035 : }
    5482              : 
    5483              : 
    5484              : /*
    5485              :    PostProcedureHeading := ProperProcedure  | 
    5486              :                            ForwardDeclaration 
    5487              : 
    5488              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok, forwardtok
    5489              :    
    5490              :    cannot reachend
    5491              : */
    5492              : 
    5493      1886035 : static void PostProcedureHeading (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5494              : {
    5495      1886035 :   if ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))))) != 0))) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    5496              :     {
    5497      1885975 :       ProperProcedure (stopset0, stopset1, stopset2);
    5498              :     }
    5499           60 :   else if (M2LexBuf_currenttoken == M2Reserved_forwardtok)
    5500              :     {
    5501              :       /* avoid dangling else.  */
    5502           60 :       ForwardDeclaration (stopset0, stopset1, stopset2);
    5503              :     }
    5504              :   else
    5505              :     {
    5506              :       /* avoid dangling else.  */
    5507            0 :       ErrorArray ((const char *) "expecting one of: {%KFORWARD} {%KEND} {%KBEGIN} {%KCONST} {%KTYPE} {%KVAR} {%KPROCEDURE} {%KMODULE}", 99);
    5508              :     }
    5509      1886035 : }
    5510              : 
    5511              : 
    5512              : /*
    5513              :    ForwardDeclaration := 'FORWARD' 
    5514              :                          % EndBuildForward (GetTokenNo ()-1)  %
    5515              :                          
    5516              : 
    5517              :    first  symbols:forwardtok
    5518              :    
    5519              :    cannot reachend
    5520              : */
    5521              : 
    5522           60 : static void ForwardDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5523              : {
    5524           60 :   Expect (M2Reserved_forwardtok, stopset0, stopset1, stopset2);
    5525           60 :   P1SymBuild_EndBuildForward ((M2LexBuf_GetTokenNo ())-1);
    5526           60 : }
    5527              : 
    5528              : 
    5529              : /*
    5530              :    ProperProcedure := ProcedureBlock 
    5531              :                       % PushAutoOn  %
    5532              :                       Ident 
    5533              :                       % EndBuildProcedure  %
    5534              :                       
    5535              :                       % PopAuto  %
    5536              :                       
    5537              : 
    5538              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok, begintok, endtok
    5539              :    
    5540              :    cannot reachend
    5541              : */
    5542              : 
    5543      1885975 : static void ProperProcedure (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5544              : {
    5545      1885975 :   ProcedureBlock (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5546      1885975 :   M2Quads_PushAutoOn ();
    5547      1885975 :   Ident (stopset0, stopset1, stopset2);
    5548      1885975 :   P1SymBuild_EndBuildProcedure ();
    5549      1885975 :   M2Quads_PopAuto ();
    5550      1885975 : }
    5551              : 
    5552              : 
    5553              : /*
    5554              :    DefineBuiltinProcedure := '__ATTRIBUTE__' '__BUILTIN__' 
    5555              :                              '(' '(' Ident ')' ')'  | 
    5556              :                              '__INLINE__' 
    5557              :                              % PushT(InlineTok)  %
    5558              :                               | 
    5559              :                              % PushT(NulTok)  %
    5560              :                              
    5561              : 
    5562              :    first  symbols:inlinetok, attributetok
    5563              :    
    5564              :    reachend
    5565              : */
    5566              : 
    5567      1886035 : static void DefineBuiltinProcedure (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5568              : {
    5569      1886035 :   if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    5570              :     {
    5571       440978 :       Expect (M2Reserved_attributetok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok))));
    5572       440978 :       Expect (M2Reserved_builtintok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5573       440978 :       Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5574       440978 :       Expect (M2Reserved_lparatok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5575       440978 :       Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5576       440978 :       Expect (M2Reserved_rparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5577       440978 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    5578              :     }
    5579      1445057 :   else if (M2LexBuf_currenttoken == M2Reserved_inlinetok)
    5580              :     {
    5581              :       /* avoid dangling else.  */
    5582            0 :       Expect (M2Reserved_inlinetok, stopset0, stopset1, stopset2);
    5583            0 :       M2Quads_PushT (M2Reserved_InlineTok);
    5584              :     }
    5585              :   else
    5586              :     {
    5587              :       /* avoid dangling else.  */
    5588      1445057 :       M2Quads_PushT (M2Reserved_NulTok);
    5589              :     }
    5590      1886035 : }
    5591              : 
    5592              : 
    5593              : /*
    5594              :    ProcedureHeading := 'PROCEDURE' 
    5595              :                        % M2Error.DefaultProcedure  %
    5596              :                        
    5597              :                        % PushAutoOn  %
    5598              :                        DefineBuiltinProcedure ( PossiblyExportIdent 
    5599              :                                                 
    5600              :                                                 % StartBuildProcedure  %
    5601              :                                                 
    5602              :                                                 % PushAutoOff  %
    5603              :                                                 [ FormalParameters  ] 
    5604              :                                                 AttributeNoReturn 
    5605              :                                                 
    5606              :                                                 % PopAuto  %
    5607              :                                                 
    5608              :                                                 % BuildProcedureHeading  %
    5609              :                                                  ) 
    5610              :                        
    5611              :                        % PopAuto  %
    5612              :                        
    5613              : 
    5614              :    first  symbols:proceduretok
    5615              :    
    5616              :    cannot reachend
    5617              : */
    5618              : 
    5619      1886035 : static void ProcedureHeading (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5620              : {
    5621      1886035 :   Expect (M2Reserved_proceduretok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5622      1886035 :   M2Error_DefaultProcedure ();
    5623      1886035 :   M2Quads_PushAutoOn ();
    5624      1886035 :   DefineBuiltinProcedure (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5625      1886035 :   PossiblyExportIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5626      1886035 :   P1SymBuild_StartBuildProcedure ();
    5627      1886035 :   M2Quads_PushAutoOff ();
    5628      1886035 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5629              :     {
    5630      1781943 :       FormalParameters (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5631              :     }
    5632      1886035 :   AttributeNoReturn (stopset0, stopset1, stopset2);
    5633      1886035 :   M2Quads_PopAuto ();
    5634      1886035 :   P1SymBuild_BuildProcedureHeading ();
    5635      1886035 :   M2Quads_PopAuto ();
    5636      1886035 : }
    5637              : 
    5638              : 
    5639              : /*
    5640              :    Builtin := '__BUILTIN__' 
    5641              :               % PushT(BuiltinTok)  %
    5642              :                | '__INLINE__' 
    5643              :               % PushT(InlineTok)  %
    5644              :                | 
    5645              :               % PushT(NulTok)  %
    5646              :               
    5647              : 
    5648              :    first  symbols:inlinetok, builtintok
    5649              :    
    5650              :    reachend
    5651              : */
    5652              : 
    5653      3277153 : static void Builtin (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5654              : {
    5655      3277153 :   if (M2LexBuf_currenttoken == M2Reserved_builtintok)
    5656              :     {
    5657       440526 :       Expect (M2Reserved_builtintok, stopset0, stopset1, stopset2);
    5658       440526 :       M2Quads_PushT (M2Reserved_BuiltinTok);
    5659              :     }
    5660      2836627 :   else if (M2LexBuf_currenttoken == M2Reserved_inlinetok)
    5661              :     {
    5662              :       /* avoid dangling else.  */
    5663            0 :       Expect (M2Reserved_inlinetok, stopset0, stopset1, stopset2);
    5664            0 :       M2Quads_PushT (M2Reserved_InlineTok);
    5665              :     }
    5666              :   else
    5667              :     {
    5668              :       /* avoid dangling else.  */
    5669      2836627 :       M2Quads_PushT (M2Reserved_NulTok);
    5670              :     }
    5671      3277153 : }
    5672              : 
    5673              : 
    5674              : /*
    5675              :    DefProcedureHeading := 'PROCEDURE' 
    5676              :                           % M2Error.DefaultProcedure  %
    5677              :                           Builtin 
    5678              :                           % PushAutoOn  %
    5679              :                           ( PossiblyExportIdent 
    5680              :                             % StartBuildProcedure  %
    5681              :                             
    5682              :                             % PushAutoOff  %
    5683              :                             [ DefFormalParameters  ] 
    5684              :                             AttributeNoReturn 
    5685              :                             % PopAuto  %
    5686              :                             
    5687              :                             % BuildProcedureHeading  %
    5688              :                              ) 
    5689              :                           % PopAuto  %
    5690              :                           
    5691              :                           % M2Error.LeaveErrorScope  %
    5692              :                           
    5693              : 
    5694              :    first  symbols:proceduretok
    5695              :    
    5696              :    cannot reachend
    5697              : */
    5698              : 
    5699      3277153 : static void DefProcedureHeading (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5700              : {
    5701      3277153 :   Expect (M2Reserved_proceduretok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5702      3277153 :   M2Error_DefaultProcedure ();
    5703      3277153 :   Builtin (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5704      3277153 :   M2Quads_PushAutoOn ();
    5705      3277153 :   PossiblyExportIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5706      3277153 :   P1SymBuild_StartBuildProcedure ();
    5707      3277153 :   M2Quads_PushAutoOff ();
    5708      3277153 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5709              :     {
    5710      3172769 :       DefFormalParameters (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5711              :     }
    5712      3277153 :   AttributeNoReturn (stopset0, stopset1, stopset2);
    5713      3277153 :   M2Quads_PopAuto ();
    5714      3277153 :   P1SymBuild_BuildProcedureHeading ();
    5715      3277153 :   M2Quads_PopAuto ();
    5716      3277153 :   M2Error_LeaveErrorScope ();
    5717      3277153 : }
    5718              : 
    5719              : 
    5720              : /*
    5721              :    AttributeNoReturn := [ ''  ] 
    5722              : 
    5723              :    first  symbols:ldirectivetok
    5724              :    
    5725              :    reachend
    5726              : */
    5727              : 
    5728      5163188 : static void AttributeNoReturn (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5729              : {
    5730      5163188 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    5731              :     {
    5732       469812 :       Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5733       469812 :       Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5734       469812 :       Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    5735              :     }
    5736      5163188 : }
    5737              : 
    5738              : 
    5739              : /*
    5740              :    ProcedureBlock := { Declaration  } [ 'BEGIN' BlockBody  ] 
    5741              :                      'END' 
    5742              : 
    5743              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok
    5744              :    
    5745              :    cannot reachend
    5746              : */
    5747              : 
    5748      1885975 : static void ProcedureBlock (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5749              : {
    5750      2602437 :   while ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))))) != 0))) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    5751              :     {
    5752       716462 :       Declaration (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5753              :     }
    5754              :    /* while  */
    5755      1885975 :   if (M2LexBuf_currenttoken == M2Reserved_begintok)
    5756              :     {
    5757      1880413 :       Expect (M2Reserved_begintok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_excepttok-M2Reserved_arraytok)) | (1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5758      1880413 :       BlockBody (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5759              :     }
    5760      1885975 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5761      1885975 : }
    5762              : 
    5763              : 
    5764              : /*
    5765              :    Block := { Declaration  } InitialBlock FinalBlock 
    5766              :             'END' 
    5767              : 
    5768              :    first  symbols:proceduretok, moduletok, finallytok, begintok, consttok, typetok, vartok, endtok
    5769              :    
    5770              :    cannot reachend
    5771              : */
    5772              : 
    5773        83054 : static void Block (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5774              : {
    5775      2078053 :   while ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))))) != 0))) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    5776              :     {
    5777      1994999 :       Declaration (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5778              :     }
    5779              :    /* while  */
    5780        83054 :   InitialBlock (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok))), stopset2);
    5781        83054 :   FinalBlock (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5782        83054 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5783        83054 : }
    5784              : 
    5785              : 
    5786              : /*
    5787              :    InitialBlock := [ 'BEGIN' BlockBody  ] 
    5788              : 
    5789              :    first  symbols:begintok
    5790              :    
    5791              :    reachend
    5792              : */
    5793              : 
    5794        83054 : static void InitialBlock (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5795              : {
    5796        83054 :   if (M2LexBuf_currenttoken == M2Reserved_begintok)
    5797              :     {
    5798        43106 :       Expect (M2Reserved_begintok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_excepttok-M2Reserved_arraytok)) | (1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5799        43106 :       BlockBody (stopset0, stopset1, stopset2);
    5800              :     }
    5801        83054 : }
    5802              : 
    5803              : 
    5804              : /*
    5805              :    FinalBlock := [ 'FINALLY' BlockBody  ] 
    5806              : 
    5807              :    first  symbols:finallytok
    5808              :    
    5809              :    reachend
    5810              : */
    5811              : 
    5812        83054 : static void FinalBlock (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5813              : {
    5814        83054 :   if (M2LexBuf_currenttoken == M2Reserved_finallytok)
    5815              :     {
    5816         5966 :       Expect (M2Reserved_finallytok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_excepttok-M2Reserved_arraytok)) | (1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok))));
    5817         5966 :       BlockBody (stopset0, stopset1, stopset2);
    5818              :     }
    5819        83054 : }
    5820              : 
    5821              : 
    5822              : /*
    5823              :    BlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    5824              : 
    5825              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    5826              :    
    5827              :    reachend
    5828              : */
    5829              : 
    5830      1929485 : static void BlockBody (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5831              : {
    5832      3858970 :   NormalPart (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_excepttok-M2Reserved_arraytok))), stopset2);
    5833      1929485 :   if (M2LexBuf_currenttoken == M2Reserved_excepttok)
    5834              :     {
    5835          222 :       Expect (M2Reserved_excepttok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_exittok-M2Reserved_arraytok)) | (1 << (M2Reserved_fortok-M2Reserved_arraytok)) | (1 << (M2Reserved_looptok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok)) | (1 << (M2Reserved_iftok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5836          222 :       ExceptionalPart (stopset0, stopset1, stopset2);
    5837              :     }
    5838      1929485 : }
    5839              : 
    5840              : 
    5841              : /*
    5842              :    NormalPart := StatementSequence 
    5843              : 
    5844              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    5845              :    
    5846              :    reachend
    5847              : */
    5848              : 
    5849      1929485 : static void NormalPart (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5850              : {
    5851      1929485 :   StatementSequence (stopset0, stopset1, stopset2);
    5852            0 : }
    5853              : 
    5854              : 
    5855              : /*
    5856              :    ExceptionalPart := StatementSequence 
    5857              : 
    5858              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    5859              :    
    5860              :    reachend
    5861              : */
    5862              : 
    5863          222 : static void ExceptionalPart (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5864              : {
    5865          222 :   StatementSequence (stopset0, stopset1, stopset2);
    5866          222 : }
    5867              : 
    5868              : 
    5869              : /*
    5870              :    Declaration := 'CONST' { ConstantDeclaration ';'  }  | 
    5871              :                   'TYPE' { TypeDeclaration ';'  }  | 
    5872              :                   'VAR' { VariableDeclaration ';'  }  | 
    5873              :                   ProcedureDeclaration ';'  | 
    5874              :                   ModuleDeclaration ';' 
    5875              : 
    5876              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok
    5877              :    
    5878              :    cannot reachend
    5879              : */
    5880              : 
    5881      2711461 : static void Declaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5882              : {
    5883      2711461 :   if (M2LexBuf_currenttoken == M2Reserved_consttok)
    5884              :     {
    5885        45504 :       Expect (M2Reserved_consttok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5886       194664 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    5887              :         {
    5888       103656 :           ConstantDeclaration (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5889       103656 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5890              :         }
    5891              :        /* while  */
    5892              :     }
    5893              :   else if (M2LexBuf_currenttoken == M2Reserved_typetok)
    5894              :     {
    5895              :       /* avoid dangling else.  */
    5896        33693 :       Expect (M2Reserved_typetok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5897       184726 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    5898              :         {
    5899       117340 :           TypeDeclaration (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5900       117340 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5901              :         }
    5902              :        /* while  */
    5903              :     }
    5904              :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    5905              :     {
    5906              :       /* avoid dangling else.  */
    5907       745801 :       Expect (M2Reserved_vartok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5908      2663680 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    5909              :         {
    5910      1172078 :           VariableDeclaration (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5911      1172078 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5912              :         }
    5913              :        /* while  */
    5914              :     }
    5915              :   else if (M2LexBuf_currenttoken == M2Reserved_proceduretok)
    5916              :     {
    5917              :       /* avoid dangling else.  */
    5918      1886035 :       ProcedureDeclaration (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5919      1886035 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    5920              :     }
    5921              :   else if (M2LexBuf_currenttoken == M2Reserved_moduletok)
    5922              :     {
    5923              :       /* avoid dangling else.  */
    5924          428 :       ModuleDeclaration (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5925          428 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    5926              :     }
    5927              :   else
    5928              :     {
    5929              :       /* avoid dangling else.  */
    5930            0 :       ErrorArray ((const char *) "expecting one of: {%KMODULE} {%KPROCEDURE} {%KVAR} {%KTYPE} {%KCONST}", 69);
    5931              :     }
    5932      2711461 : }
    5933              : 
    5934              : 
    5935              : /*
    5936              :    DefFormalParameters := '(' [ DefMultiFPSection  ] 
    5937              :                           ')' FormalReturn 
    5938              : 
    5939              :    first  symbols:lparatok
    5940              :    
    5941              :    cannot reachend
    5942              : */
    5943              : 
    5944      3172769 : static void DefFormalParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5945              : {
    5946      3172769 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5947      3172769 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    5948              :     {
    5949      3006595 :       DefMultiFPSection (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5950              :     }
    5951      3172769 :   Expect (M2Reserved_rparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5952      3172769 :   FormalReturn (stopset0, stopset1, stopset2);
    5953      3172769 : }
    5954              : 
    5955              : 
    5956              : /*
    5957              :    DefMultiFPSection := DefExtendedFP  | 
    5958              :                         FPSection [ ';' DefMultiFPSection  ] 
    5959              : 
    5960              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    5961              :    
    5962              :    cannot reachend
    5963              : */
    5964              : 
    5965      3006595 : static void DefMultiFPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5966              : {
    5967      5410804 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok))
    5968              :     {
    5969        26218 :       DefExtendedFP (stopset0, stopset1, stopset2);
    5970              :     }
    5971      5384586 :   else if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0)))
    5972              :     {
    5973              :       /* avoid dangling else.  */
    5974      5384586 :       FPSection (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5975      5384586 :       if (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    5976              :         {
    5977      2404209 :           Expect (M2Reserved_semicolontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5978      2404209 :           DefMultiFPSection (stopset0, stopset1, stopset2);
    5979              :         }
    5980              :     }
    5981              :   else
    5982              :     {
    5983              :       /* avoid dangling else.  */
    5984            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%KVAR} {%K...} {%K[}", 54);
    5985              :     }
    5986      3006595 : }
    5987              : 
    5988              : 
    5989              : /*
    5990              :    FormalParameters := '(' [ MultiFPSection  ] ')' 
    5991              :                        FormalReturn 
    5992              : 
    5993              :    first  symbols:lparatok
    5994              :    
    5995              :    cannot reachend
    5996              : */
    5997              : 
    5998      1781943 : static void FormalParameters (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    5999              : {
    6000      1781943 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6001      1781943 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    6002              :     {
    6003      1717216 :       MultiFPSection (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6004              :     }
    6005      1781943 :   Expect (M2Reserved_rparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6006      1781943 :   FormalReturn (stopset0, stopset1, stopset2);
    6007      1781943 : }
    6008              : 
    6009              : 
    6010              : /*
    6011              :    MultiFPSection := ExtendedFP  | FPSection [ ';' 
    6012              :                                                MultiFPSection  ] 
    6013              : 
    6014              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    6015              :    
    6016              :    cannot reachend
    6017              : */
    6018              : 
    6019      1717216 : static void MultiFPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6020              : {
    6021      2961402 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok))
    6022              :     {
    6023         2780 :       ExtendedFP (stopset0, stopset1, stopset2);
    6024              :     }
    6025      2958622 :   else if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0)))
    6026              :     {
    6027              :       /* avoid dangling else.  */
    6028      2958622 :       FPSection (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6029      2958622 :       if (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    6030              :         {
    6031      1244186 :           Expect (M2Reserved_semicolontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6032      1244186 :           MultiFPSection (stopset0, stopset1, stopset2);
    6033              :         }
    6034              :     }
    6035              :   else
    6036              :     {
    6037              :       /* avoid dangling else.  */
    6038            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%KVAR} {%K...} {%K[}", 54);
    6039              :     }
    6040      1717216 : }
    6041              : 
    6042              : 
    6043              : /*
    6044              :    FPSection := NonVarFPSection  | 
    6045              :                 VarFPSection 
    6046              : 
    6047              :    first  symbols:vartok, identtok
    6048              :    
    6049              :    cannot reachend
    6050              : */
    6051              : 
    6052      8343208 : static void FPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6053              : {
    6054      8343208 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    6055              :     {
    6056      7526382 :       NonVarFPSection (stopset0, stopset1, stopset2);
    6057              :     }
    6058       816826 :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    6059              :     {
    6060              :       /* avoid dangling else.  */
    6061       816826 :       VarFPSection (stopset0, stopset1, stopset2);
    6062              :     }
    6063              :   else
    6064              :     {
    6065              :       /* avoid dangling else.  */
    6066            0 :       ErrorArray ((const char *) "expecting one of: {%KVAR} {%Kidentifier}", 40);
    6067              :     }
    6068      8343208 : }
    6069              : 
    6070              : 
    6071              : /*
    6072              :    DefExtendedFP := DefOptArg  | '...' 
    6073              : 
    6074              :    first  symbols:lsbratok, periodperiodperiodtok
    6075              :    
    6076              :    cannot reachend
    6077              : */
    6078              : 
    6079        26218 : static void DefExtendedFP (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6080              : {
    6081        26218 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    6082              :     {
    6083        14874 :       DefOptArg (stopset0, stopset1, stopset2);
    6084              :     }
    6085        11344 :   else if (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok)
    6086              :     {
    6087              :       /* avoid dangling else.  */
    6088        11344 :       Expect (M2Reserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
    6089              :     }
    6090              :   else
    6091              :     {
    6092              :       /* avoid dangling else.  */
    6093            0 :       ErrorArray ((const char *) "expecting one of: {%K...} {%K[}", 31);
    6094              :     }
    6095        26218 : }
    6096              : 
    6097              : 
    6098              : /*
    6099              :    ExtendedFP := OptArg  | '...' 
    6100              : 
    6101              :    first  symbols:lsbratok, periodperiodperiodtok
    6102              :    
    6103              :    cannot reachend
    6104              : */
    6105              : 
    6106         2780 : static void ExtendedFP (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6107              : {
    6108         2780 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    6109              :     {
    6110         2780 :       OptArg (stopset0, stopset1, stopset2);
    6111              :     }
    6112            0 :   else if (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok)
    6113              :     {
    6114              :       /* avoid dangling else.  */
    6115            0 :       Expect (M2Reserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
    6116              :     }
    6117              :   else
    6118              :     {
    6119              :       /* avoid dangling else.  */
    6120            0 :       ErrorArray ((const char *) "expecting one of: {%K...} {%K[}", 31);
    6121              :     }
    6122         2780 : }
    6123              : 
    6124              : 
    6125              : /*
    6126              :    VarFPSection := 'VAR' IdentList ':' FormalType [ 
    6127              :    AttributeUnused  ] 
    6128              : 
    6129              :    first  symbols:vartok
    6130              :    
    6131              :    cannot reachend
    6132              : */
    6133              : 
    6134       816826 : static void VarFPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6135              : {
    6136       816826 :   Expect (M2Reserved_vartok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6137       816826 :   IdentList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6138       816826 :   Expect (M2Reserved_colontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6139       816826 :   FormalType (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    6140       816826 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    6141              :     {
    6142            0 :       AttributeUnused (stopset0, stopset1, stopset2);
    6143              :     }
    6144       816826 : }
    6145              : 
    6146              : 
    6147              : /*
    6148              :    NonVarFPSection := IdentList ':' FormalType [ AttributeUnused  ] 
    6149              : 
    6150              :    first  symbols:identtok
    6151              :    
    6152              :    cannot reachend
    6153              : */
    6154              : 
    6155      7526382 : static void NonVarFPSection (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6156              : {
    6157      7526382 :   IdentList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6158      7526382 :   Expect (M2Reserved_colontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6159      7526382 :   FormalType (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    6160      7526382 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    6161              :     {
    6162            0 :       AttributeUnused (stopset0, stopset1, stopset2);
    6163              :     }
    6164      7526382 : }
    6165              : 
    6166              : 
    6167              : /*
    6168              :    OptArg := '[' IdentScope ':' FormalType [ '=' ConstExpression  ] 
    6169              :              ']' 
    6170              : 
    6171              :    first  symbols:lsbratok
    6172              :    
    6173              :    cannot reachend
    6174              : */
    6175              : 
    6176         2780 : static void OptArg (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6177              : {
    6178         2780 :   Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6179         2780 :   IdentScope (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6180         2780 :   Expect (M2Reserved_colontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6181         2780 :   FormalType (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6182         2780 :   if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    6183              :     {
    6184         2734 :       Expect (M2Reserved_equaltok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    6185         2734 :       ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6186              :     }
    6187         2780 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    6188         2780 : }
    6189              : 
    6190              : 
    6191              : /*
    6192              :    DefOptArg := '[' IdentScope ':' FormalType '=' ConstExpression 
    6193              :                 ']' 
    6194              : 
    6195              :    first  symbols:lsbratok
    6196              :    
    6197              :    cannot reachend
    6198              : */
    6199              : 
    6200        14874 : static void DefOptArg (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6201              : {
    6202        14874 :   Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6203        14874 :   IdentScope (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6204        14874 :   Expect (M2Reserved_colontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6205        14874 :   FormalType (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    6206        14874 :   Expect (M2Reserved_equaltok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    6207        14874 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6208        14874 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    6209        14874 : }
    6210              : 
    6211              : 
    6212              : /*
    6213              :    FormalType := { 'ARRAY' 'OF'  } Qualident 
    6214              : 
    6215              :    first  symbols:identtok, arraytok
    6216              :    
    6217              :    cannot reachend
    6218              : */
    6219              : 
    6220      8444652 : static void FormalType (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6221              : {
    6222      9462852 :   while (M2LexBuf_currenttoken == M2Reserved_arraytok)
    6223              :     {
    6224      1018200 :       Expect (M2Reserved_arraytok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    6225      1018200 :       Expect (M2Reserved_oftok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6226              :     }
    6227              :    /* while  */
    6228      8444652 :   Qualident (stopset0, stopset1, stopset2);
    6229      8444652 : }
    6230              : 
    6231              : 
    6232              : /*
    6233              :    ModuleDeclaration := 'MODULE' 
    6234              :                         % M2Error.DefaultInnerModule  %
    6235              :                         
    6236              :                         % PushAutoOn  %
    6237              :                         Ident 
    6238              :                         % StartBuildInnerModule  %
    6239              :                         
    6240              :                         % PushAutoOff  %
    6241              :                         [ Priority  ] ';' 
    6242              :                         % PushAutoOn  %
    6243              :                         { Import 
    6244              :                           % BuildImportInnerModule  %
    6245              :                            } [ Export 
    6246              :                                % BuildExportInnerModule  %
    6247              :                                 ] 
    6248              :                         % PopAuto  %
    6249              :                         Block 
    6250              :                         % PushAutoOn  %
    6251              :                         Ident 
    6252              :                         % EndBuildInnerModule  %
    6253              :                         
    6254              :                         % PopAuto ; PopAuto ; PopAuto  %
    6255              :                         
    6256              : 
    6257              :    first  symbols:moduletok
    6258              :    
    6259              :    cannot reachend
    6260              : */
    6261              : 
    6262          428 : static void ModuleDeclaration (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6263              : {
    6264          428 :   Expect (M2Reserved_moduletok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6265          428 :   M2Error_DefaultInnerModule ();
    6266          428 :   M2Quads_PushAutoOn ();
    6267          428 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6268          428 :   P1SymBuild_StartBuildInnerModule ();
    6269          428 :   M2Quads_PushAutoOff ();
    6270          428 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    6271              :     {
    6272           12 :       Priority (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6273              :     }
    6274          428 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok)) | (1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_exporttok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6275          428 :   M2Quads_PushAutoOn ();
    6276         1086 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    6277              :     {
    6278          230 :       Import (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok)) | (1 << (M2Reserved_exporttok-M2Reserved_arraytok)) | (1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    6279          230 :       P1SymBuild_BuildImportInnerModule ();
    6280              :     }
    6281              :    /* while  */
    6282          428 :   if (M2LexBuf_currenttoken == M2Reserved_exporttok)
    6283              :     {
    6284          282 :       Export (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_begintok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    6285          282 :       P1SymBuild_BuildExportInnerModule ();
    6286              :     }
    6287          428 :   M2Quads_PopAuto ();
    6288          428 :   Block (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6289          428 :   M2Quads_PushAutoOn ();
    6290          428 :   Ident (stopset0, stopset1, stopset2);
    6291          428 :   P1SymBuild_EndBuildInnerModule ();
    6292          428 :   M2Quads_PopAuto ();
    6293          428 :   M2Quads_PopAuto ();
    6294          428 :   M2Quads_PopAuto ();
    6295          428 : }
    6296              : 
    6297              : 
    6298              : /*
    6299              :    Priority := '[' ConstExpression ']' 
    6300              : 
    6301              :    first  symbols:lsbratok
    6302              :    
    6303              :    cannot reachend
    6304              : */
    6305              : 
    6306           50 : static void Priority (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6307              : {
    6308           50 :   Expect (M2Reserved_lsbratok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    6309           50 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6310           50 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    6311           50 : }
    6312              : 
    6313              : 
    6314              : /*
    6315              :    Export := 'EXPORT' ( 'QUALIFIED' 
    6316              :                         % PushT(QualifiedTok)  %
    6317              :                         IdentList  | 
    6318              :                         'UNQUALIFIED' 
    6319              :                         % PushT(UnQualifiedTok)  %
    6320              :                         IdentList  | 
    6321              :                         
    6322              :                         % PushT(ExportTok)  %
    6323              :                         IdentList  ) ';' 
    6324              : 
    6325              :    first  symbols:exporttok
    6326              :    
    6327              :    cannot reachend
    6328              : */
    6329              : 
    6330        85684 : static void Export (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6331              : {
    6332        85684 :   Expect (M2Reserved_exporttok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_qualifiedtok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_unqualifiedtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6333        85684 :   if (M2LexBuf_currenttoken == M2Reserved_qualifiedtok)
    6334              :     {
    6335        73782 :       Expect (M2Reserved_qualifiedtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6336        73782 :       M2Quads_PushT (M2Reserved_QualifiedTok);
    6337        73782 :       IdentList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6338              :     }
    6339        11902 :   else if (M2LexBuf_currenttoken == M2Reserved_unqualifiedtok)
    6340              :     {
    6341              :       /* avoid dangling else.  */
    6342        11620 :       Expect (M2Reserved_unqualifiedtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6343        11620 :       M2Quads_PushT (M2Reserved_UnQualifiedTok);
    6344        11620 :       IdentList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6345              :     }
    6346              :   else
    6347              :     {
    6348              :       /* avoid dangling else.  */
    6349          282 :       M2Quads_PushT (M2Reserved_ExportTok);
    6350          282 :       IdentList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6351              :     }
    6352        85684 :   Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    6353        85684 : }
    6354              : 
    6355              : 
    6356              : /*
    6357              :    Import := 'FROM' 
    6358              :              % BuildImportStatement (GetTokenNo () -1)  %
    6359              :              Ident 
    6360              :              % AddImportToImportStatement (TRUE)  %
    6361              :              'IMPORT' IdentList ';'  | 
    6362              :              'IMPORT' 
    6363              :              % BuildImportStatement (GetTokenNo () -1)  %
    6364              :              
    6365              :              % PushT(ImportTok)
    6366              :                                                                                              determines whether Ident or Module   %
    6367              :              IdentImportList ';' 
    6368              : 
    6369              :    first  symbols:importtok, fromtok
    6370              :    
    6371              :    cannot reachend
    6372              : */
    6373              : 
    6374       400979 : static void Import (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6375              : {
    6376       400979 :   if (M2LexBuf_currenttoken == M2Reserved_fromtok)
    6377              :     {
    6378       351668 :       Expect (M2Reserved_fromtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6379       351668 :       P1SymBuild_BuildImportStatement ((M2LexBuf_GetTokenNo ())-1);
    6380       351668 :       Ident (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_importtok-M2Reserved_arraytok))), stopset2);
    6381       351668 :       P1SymBuild_AddImportToImportStatement (true);
    6382       351668 :       Expect (M2Reserved_importtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6383       351668 :       IdentList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6384       351668 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    6385              :     }
    6386        49311 :   else if (M2LexBuf_currenttoken == M2Reserved_importtok)
    6387              :     {
    6388              :       /* avoid dangling else.  */
    6389        49311 :       Expect (M2Reserved_importtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6390        49311 :       P1SymBuild_BuildImportStatement ((M2LexBuf_GetTokenNo ())-1);
    6391              :       /* determines whether Ident or Module  */
    6392        49311 :       M2Quads_PushT (M2Reserved_ImportTok);
    6393        49311 :       IdentImportList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6394        49311 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    6395              :     }
    6396              :   else
    6397              :     {
    6398              :       /* avoid dangling else.  */
    6399            0 :       ErrorArray ((const char *) "expecting one of: {%KIMPORT} {%KFROM}", 37);
    6400              :     }
    6401       400979 : }
    6402              : 
    6403              : 
    6404              : /*
    6405              :    IdentImportList := Ident 
    6406              :                       % VAR
    6407              :                                                                                                         on: BOOLEAN ;
    6408              :                                                                                                         n : CARDINAL ;  %
    6409              :                       
    6410              :                       % on := IsAutoPushOn() ;
    6411              :                         IF on
    6412              :                         THEN
    6413              :                            AddImportToImportStatement (FALSE) ;
    6414              :                            n := 1
    6415              :                         END  %
    6416              :                       { ',' Ident 
    6417              :                         % IF on
    6418              :                           THEN
    6419              :                              AddImportToImportStatement (FALSE) ;
    6420              :                              INC(n)
    6421              :                           END  %
    6422              :                          } 
    6423              :                       % IF on
    6424              :                         THEN
    6425              :                            PushT(n)
    6426              :                         END  %
    6427              :                       
    6428              : 
    6429              :    first  symbols:identtok
    6430              :    
    6431              :    cannot reachend
    6432              : */
    6433              : 
    6434        49311 : static void IdentImportList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6435              : {
    6436        49311 :   bool on;
    6437        49311 :   unsigned int n;
    6438              : 
    6439        49311 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6440        49311 :   on = M2Quads_IsAutoPushOn ();
    6441        49311 :   if (on)
    6442              :     {
    6443        49311 :       P1SymBuild_AddImportToImportStatement (false);
    6444        49311 :       n = 1;
    6445              :     }
    6446        64505 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    6447              :     {
    6448        15194 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6449        15194 :       Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6450        15194 :       if (on)
    6451              :         {
    6452        15194 :           P1SymBuild_AddImportToImportStatement (false);
    6453        15194 :           n += 1;
    6454              :         }
    6455              :     }
    6456              :    /* while  */
    6457        49311 :   if (on)
    6458              :     {
    6459        49311 :       M2Quads_PushT (n);
    6460              :     }
    6461        49311 : }
    6462              : 
    6463              : 
    6464              : /*
    6465              :    DefinitionModule := 'DEFINITION' 
    6466              :                        % M2Error.DefaultDefinitionModule  %
    6467              :                        'MODULE' 
    6468              :                        % PushAutoOn  %
    6469              :                        ( 'FOR' string  | 
    6470              :                          
    6471              :                          %  epsilon 
    6472              :                            PushT(NulSym)  %
    6473              :                           ) Ident 
    6474              :                        % P1StartBuildDefinitionModule  %
    6475              :                        ';' { Import 
    6476              :                              % BuildImportOuterModule(TRUE)  %
    6477              :                               } [ Export 
    6478              :                                   % BuildExportOuterModule  %
    6479              :                                    ] 
    6480              :                        % PushAutoOff  %
    6481              :                        { Definition  } 
    6482              :                        % PopAuto  %
    6483              :                        'END' Ident 
    6484              :                        % P1EndBuildDefinitionModule  %
    6485              :                        '.' 
    6486              :                        % PopAuto  %
    6487              :                        
    6488              : 
    6489              :    first  symbols:definitiontok
    6490              :    
    6491              :    cannot reachend
    6492              : */
    6493              : 
    6494       161456 : static void DefinitionModule (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6495              : {
    6496       161456 :   Expect (M2Reserved_definitiontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2);
    6497       161456 :   M2Error_DefaultDefinitionModule ();
    6498       161456 :   Expect (M2Reserved_moduletok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6499       161456 :   M2Quads_PushAutoOn ();
    6500       161456 :   if (M2LexBuf_currenttoken == M2Reserved_fortok)
    6501              :     {
    6502        13094 :       Expect (M2Reserved_fortok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    6503        13094 :       string (stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6504              :     }
    6505              :   else
    6506              :     {
    6507              :       /* epsilon  */
    6508       148362 :       M2Quads_PushT (static_cast<unsigned int> (SymbolTable_NulSym));
    6509              :     }
    6510       161456 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6511       161456 :   P1SymBuild_P1StartBuildDefinitionModule ();
    6512       161456 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_importtok-M2Reserved_arraytok)) | (1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_exporttok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    6513       432399 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    6514              :     {
    6515       109487 :       Import (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_exporttok-M2Reserved_arraytok)) | (1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6516       109487 :       P1SymBuild_BuildImportOuterModule (true);
    6517              :     }
    6518              :    /* while  */
    6519       161456 :   if (M2LexBuf_currenttoken == M2Reserved_exporttok)
    6520              :     {
    6521        85402 :       Export (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6522        85402 :       P1SymBuild_BuildExportOuterModule ();
    6523              :     }
    6524       161456 :   M2Quads_PushAutoOff ();
    6525      3709829 :   while ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P1Build_SetOfStop1) ((1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))))) != 0))) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    6526              :     {
    6527      3386917 :       Definition (stopset0, stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6528              :     }
    6529              :    /* while  */
    6530       161456 :   M2Quads_PopAuto ();
    6531       161456 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6532       161456 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    6533       161456 :   P1SymBuild_P1EndBuildDefinitionModule ();
    6534       161456 :   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2);
    6535       161456 :   M2Quads_PopAuto ();
    6536       161456 : }
    6537              : 
    6538              : 
    6539              : /*
    6540              :    Definition := 'CONST' { ConstantDeclaration ';'  }  | 
    6541              :                  'TYPE' 
    6542              :                  % PushAutoOn  %
    6543              :                  { PossiblyExportIdent ( ';' 
    6544              :                                          % BuildHiddenType  %
    6545              :                                           | '=' Type 
    6546              :                                          Alignment 
    6547              :                                          ';'  )  } 
    6548              :                  
    6549              :                  % PopAuto  %
    6550              :                   | 
    6551              :                  'VAR' { VariableDeclaration ';'  }  | 
    6552              :                  DefProcedureHeading ';' 
    6553              : 
    6554              :    first  symbols:proceduretok, vartok, typetok, consttok
    6555              :    
    6556              :    cannot reachend
    6557              : */
    6558              : 
    6559      3386917 : static void Definition (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6560              : {
    6561      3386917 :   if (M2LexBuf_currenttoken == M2Reserved_consttok)
    6562              :     {
    6563        23674 :       Expect (M2Reserved_consttok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6564       236084 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    6565              :         {
    6566       188736 :           ConstantDeclaration (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6567       188736 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6568              :         }
    6569              :        /* while  */
    6570              :     }
    6571      3363243 :   else if (M2LexBuf_currenttoken == M2Reserved_typetok)
    6572              :     {
    6573              :       /* avoid dangling else.  */
    6574        82422 :       Expect (M2Reserved_typetok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6575        82422 :       M2Quads_PushAutoOn ();
    6576       312325 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    6577              :         {
    6578       147481 :           PossiblyExportIdent (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    6579       147481 :           if (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    6580              :             {
    6581        28458 :               Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6582        28458 :               P1SymBuild_BuildHiddenType ();
    6583              :             }
    6584       119023 :           else if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    6585              :             {
    6586              :               /* avoid dangling else.  */
    6587       119023 :               Expect (M2Reserved_equaltok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) | (1 << (M2Reserved_pointertok-M2Reserved_arraytok)) | (1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) | (1 << (M2Reserved_oftok-M2Reserved_arraytok)) | (1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6588       119023 :               Type (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6589       119023 :               Alignment (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6590       119023 :               Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6591              :             }
    6592              :           else
    6593              :             {
    6594              :               /* avoid dangling else.  */
    6595            0 :               ErrorArray ((const char *) "expecting one of: {%K=} {%K;}", 29);
    6596              :             }
    6597              :         }
    6598              :        /* while  */
    6599        82422 :       M2Quads_PopAuto ();
    6600              :     }
    6601      3280821 :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    6602              :     {
    6603              :       /* avoid dangling else.  */
    6604         3668 :       Expect (M2Reserved_vartok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6605        11654 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    6606              :         {
    6607         4318 :           VariableDeclaration (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6608         4318 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6609              :         }
    6610              :        /* while  */
    6611              :     }
    6612      3277153 :   else if (M2LexBuf_currenttoken == M2Reserved_proceduretok)
    6613              :     {
    6614              :       /* avoid dangling else.  */
    6615      3277153 :       DefProcedureHeading (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6616      3277153 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    6617              :     }
    6618              :   else
    6619              :     {
    6620              :       /* avoid dangling else.  */
    6621            0 :       ErrorArray ((const char *) "expecting one of: {%KPROCEDURE} {%KVAR} {%KTYPE} {%KCONST}", 58);
    6622              :     }
    6623      3386917 : }
    6624              : 
    6625              : 
    6626              : /*
    6627              :    AsmStatement := 'ASM' [ 'VOLATILE'  ] '(' AsmOperands 
    6628              :                    ')' 
    6629              : 
    6630              :    first  symbols:asmtok
    6631              :    
    6632              :    cannot reachend
    6633              : */
    6634              : 
    6635           27 : static void AsmStatement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6636              : {
    6637           27 :   Expect (M2Reserved_asmtok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_volatiletok-M2Reserved_unqualifiedtok))));
    6638           27 :   if (M2LexBuf_currenttoken == M2Reserved_volatiletok)
    6639              :     {
    6640           15 :       Expect (M2Reserved_volatiletok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6641              :     }
    6642           27 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    6643           27 :   AsmOperands (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6644           27 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    6645           27 : }
    6646              : 
    6647              : 
    6648              : /*
    6649              :    NamedOperand := '[' Ident ']' 
    6650              : 
    6651              :    first  symbols:lsbratok
    6652              :    
    6653              :    cannot reachend
    6654              : */
    6655              : 
    6656            6 : static void NamedOperand (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6657              : {
    6658            6 :   Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6659            6 :   Ident (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6660            6 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    6661            6 : }
    6662              : 
    6663              : 
    6664              : /*
    6665              :    AsmOperandName := [ NamedOperand  ] 
    6666              : 
    6667              :    first  symbols:lsbratok
    6668              :    
    6669              :    reachend
    6670              : */
    6671              : 
    6672           33 : static void AsmOperandName (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6673              : {
    6674            0 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    6675              :     {
    6676            6 :       NamedOperand (stopset0, stopset1, stopset2);
    6677              :     }
    6678            0 : }
    6679              : 
    6680              : 
    6681              : /*
    6682              :    AsmOperands := ConstExpression [ ':' AsmList [ ':' 
    6683              :                                                   AsmList 
    6684              :                                                   [ 
    6685              :    ':' TrashList  ]  ]  ] 
    6686              : 
    6687              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    6688              :    
    6689              :    cannot reachend
    6690              : */
    6691              : 
    6692           27 : static void AsmOperands (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6693              : {
    6694           27 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6695           27 :   if (M2LexBuf_currenttoken == M2Reserved_colontok)
    6696              :     {
    6697           21 :       Expect (M2Reserved_colontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok)) | (1 << (M2Reserved_commatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    6698           21 :       AsmList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6699           21 :       if (M2LexBuf_currenttoken == M2Reserved_colontok)
    6700              :         {
    6701           15 :           Expect (M2Reserved_colontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok)) | (1 << (M2Reserved_commatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    6702           15 :           AsmList (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6703           15 :           if (M2LexBuf_currenttoken == M2Reserved_colontok)
    6704              :             {
    6705            9 :               Expect (M2Reserved_colontok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    6706            9 :               TrashList (stopset0, stopset1, stopset2);
    6707              :             }
    6708              :         }
    6709              :     }
    6710           27 : }
    6711              : 
    6712              : 
    6713              : /*
    6714              :    AsmList := [ AsmElement  ] { ',' AsmElement  } 
    6715              : 
    6716              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok, lsbratok, commatok
    6717              :    
    6718              :    reachend
    6719              : */
    6720              : 
    6721           36 : static void AsmList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6722              : {
    6723           36 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_nottok)) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))))) != 0))))
    6724              :     {
    6725           30 :       AsmElement (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6726              :     }
    6727           39 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    6728              :     {
    6729            3 :       Expect (M2Reserved_commatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))));
    6730            3 :       AsmElement (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6731              :     }
    6732              :    /* while  */
    6733           36 : }
    6734              : 
    6735              : 
    6736              : /*
    6737              :    AsmElement := AsmOperandName ConstExpression '(' 
    6738              :                  Expression ')' 
    6739              : 
    6740              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok, lsbratok
    6741              :    
    6742              :    cannot reachend
    6743              : */
    6744              : 
    6745           33 : static void AsmElement (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6746              : {
    6747           33 :   AsmOperandName (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    6748           33 :   ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6749           33 :   Expect (M2Reserved_lparatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6750           33 :   Expression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6751           33 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    6752           33 : }
    6753              : 
    6754              : 
    6755              : /*
    6756              :    TrashList := [ ConstExpression  ] { ',' ConstExpression  } 
    6757              : 
    6758              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok, commatok
    6759              :    
    6760              :    reachend
    6761              : */
    6762              : 
    6763            9 : static void TrashList (P1Build_SetOfStop0 stopset0, P1Build_SetOfStop1 stopset1, P1Build_SetOfStop2 stopset2)
    6764              : {
    6765            9 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P1Build_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_nottok)) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P1Build_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))))) != 0))))
    6766              :     {
    6767            3 :       ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6768              :     }
    6769            9 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    6770              :     {
    6771            0 :       Expect (M2Reserved_commatok, stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P1Build_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P1Build_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    6772            0 :       ConstExpression (stopset0|(P1Build_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6773              :     }
    6774              :    /* while  */
    6775            9 : }
    6776              : 
    6777              : 
    6778              : /*
    6779              :    CompilationUnit - returns TRUE if the input was correct enough to parse
    6780              :                      in future passes.
    6781              : */
    6782              : 
    6783       244082 : extern "C" bool P1Build_CompilationUnit (void)
    6784              : {
    6785       244082 :   WasNoError = true;
    6786       244082 :   InsertCount = 0;
    6787       244082 :   FileUnit ((P1Build_SetOfStop0) ((1 << (M2Reserved_eoftok-M2Reserved_eoftok))), (P1Build_SetOfStop1) 0, (P1Build_SetOfStop2) 0);
    6788       244076 :   return WasNoError;
    6789              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    6790              :   __builtin_unreachable ();
    6791              : }
    6792              : 
    6793            0 : extern "C" void _M2_P1Build_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
    6794              : {
    6795            0 : }
    6796              : 
    6797            0 : extern "C" void _M2_P1Build_fini (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
    6798              : {
    6799            0 : }
        

Generated by: LCOV version 2.4-beta

LCOV profile is generated on x86_64 machine using following configure options: configure --disable-bootstrap --enable-coverage=opt --enable-languages=c,c++,fortran,go,jit,lto,rust,m2 --enable-host-shared. GCC test suite is run with the built compiler.