LCOV - code coverage report
Current view: top level - /mnt/build/buildbot/bld/build-lcov/gcc/m2/gm2-compiler-boot - PCBuild.c (source / functions) Coverage Total Hit
Test: gcc.info Lines: 60.2 % 2190 1318
Test Date: 2026-02-28 14:20:25 Functions: 83.7 % 178 149
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /* do not edit automatically generated by mc from PCBuild.  */
       2              : /* output from m2-c.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 _PCBuild_C
      44              : 
      45              : #include "GPCBuild.h"
      46              : #   include "GM2LexBuf.h"
      47              : #   include "GM2MetaError.h"
      48              : #   include "GNameKey.h"
      49              : #   include "GDynamicStrings.h"
      50              : #   include "GM2Printf.h"
      51              : #   include "GM2Debug.h"
      52              : #   include "GP2SymBuild.h"
      53              : #   include "GM2Reserved.h"
      54              : #   include "GM2Quads.h"
      55              : #   include "GP3SymBuild.h"
      56              : #   include "GPCSymBuild.h"
      57              : #   include "GSymbolTable.h"
      58              : #   include "GM2Batch.h"
      59              : #   include "GM2StateCheck.h"
      60              : #   include "GM2Error.h"
      61              : 
      62              : #   define Debugging false
      63              : #   define Pass1 false
      64              : typedef unsigned int PCBuild_stop0;
      65              : 
      66              : typedef unsigned int PCBuild_SetOfStop0;
      67              : 
      68              : typedef unsigned int PCBuild_stop1;
      69              : 
      70              : typedef unsigned int PCBuild_SetOfStop1;
      71              : 
      72              : typedef unsigned int PCBuild_stop2;
      73              : 
      74              : typedef unsigned int PCBuild_SetOfStop2;
      75              : 
      76              : static M2StateCheck_StateCheck BlockState;
      77              : static bool seenError;
      78              : 
      79              : /*
      80              :    CompilationUnit - returns TRUE if the input was correct enough to parse
      81              :                      in future passes.
      82              : */
      83              : 
      84              : extern "C" bool PCBuild_CompilationUnit (void);
      85              : static void ErrorString (DynamicStrings_String s);
      86              : static void ErrorArray (const char *a_, unsigned int _a_high);
      87              : static void ErrorArrayAt (const char *a_, unsigned int _a_high, unsigned int tok);
      88              : 
      89              : /*
      90              :    DescribeStop - issues a message explaining what tokens were expected
      91              : */
      92              : 
      93              : static DynamicStrings_String DescribeStop (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
      94              : 
      95              : /*
      96              :    DescribeError - issues a message explaining what tokens were expected
      97              : */
      98              : 
      99              : static void DescribeError (void);
     100              : 
     101              : /*
     102              :    SyntaxError - after a syntax error we skip all tokens up until we reach
     103              :                  a stop symbol.
     104              : */
     105              : 
     106              : static void SyntaxError (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     107              : 
     108              : /*
     109              :    SyntaxCheck -
     110              : */
     111              : 
     112              : static void SyntaxCheck (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     113              : 
     114              : /*
     115              :    WarnMissingToken - generates a warning message about a missing token, t.
     116              : */
     117              : 
     118              : static void WarnMissingToken (M2Reserved_toktype t);
     119              : 
     120              : /*
     121              :    MissingToken - generates a warning message about a missing token, t.
     122              : */
     123              : 
     124              : static void MissingToken (M2Reserved_toktype t);
     125              : 
     126              : /*
     127              :    CheckAndInsert -
     128              : */
     129              : 
     130              : static bool CheckAndInsert (M2Reserved_toktype t, PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     131              : 
     132              : /*
     133              :    InStopSet
     134              : */
     135              : 
     136              : static bool InStopSet (M2Reserved_toktype t, PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     137              : 
     138              : /*
     139              :    PeepToken - peep token checks to see whether the stopset is satisfied by currenttoken
     140              :                If it is not then it will insert a token providing the token
     141              :                is one of ; ] ) } . OF END ,
     142              : 
     143              :                if the stopset contains <identtok> then we do not insert a token
     144              : */
     145              : 
     146              : static void PeepToken (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     147              : 
     148              : /*
     149              :    Expect -
     150              : */
     151              : 
     152              : static void Expect (M2Reserved_toktype t, PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     153              : 
     154              : /*
     155              :    Ident - error checking varient of Ident
     156              : */
     157              : 
     158              : static void Ident (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     159              : 
     160              : /*
     161              :    string -
     162              : */
     163              : 
     164              : static void string (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     165              : 
     166              : /*
     167              :    Integer -
     168              : */
     169              : 
     170              : static void Integer (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     171              : 
     172              : /*
     173              :    Real -
     174              : */
     175              : 
     176              : static void Real (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     177              : 
     178              : /*
     179              :    PushTFQualident - push the result of the Qualident
     180              :                      to the stack.  It checks to see if init
     181              :                      is a procedure or proc type and if so
     182              :                      it does not push the return type.
     183              : */
     184              : 
     185              : static void PushTFQualident (unsigned int tok, unsigned int tokstart, unsigned int init);
     186              : 
     187              : /*
     188              :    CheckModuleQualident - check to see if the beginning ident of the qualident is an
     189              :                           imported module.
     190              : */
     191              : 
     192              : static void CheckModuleQualident (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_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 (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     208              : 
     209              : /*
     210              :    ProgramModule := 'MODULE' 
     211              :                     % VAR namet: CARDINAL ;  %
     212              :                     
     213              :                     % M2Error.DefaultProgramModule  %
     214              :                     
     215              :                     % PushAutoOn  %
     216              :                     Ident 
     217              :                     % PCStartBuildProgModule  %
     218              :                     
     219              :                     % PushAutoOff  %
     220              :                     [ Priority  ] ';' { Import 
     221              :                                         % PCBuildImportOuterModule  %
     222              :                                          } Block 
     223              :                     % PushAutoOn  %
     224              :                     
     225              :                     % namet := GetTokenNo ()  %
     226              :                     Ident 
     227              :                     % PCEndBuildProgModule (namet)  %
     228              :                     '.' 
     229              :                     % PopAuto ; PopAuto  %
     230              :                     
     231              : 
     232              :    first  symbols:moduletok
     233              :    
     234              :    cannot reachend
     235              : */
     236              : 
     237              : static void ProgramModule (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     238              : 
     239              : /*
     240              :    ImplementationModule := 'IMPLEMENTATION' 
     241              :                            % VAR namet: CARDINAL ;  %
     242              :                            
     243              :                            % M2Error.DefaultImplementationModule  %
     244              :                            'MODULE' 
     245              :                            % PushAutoOn  %
     246              :                            Ident 
     247              :                            % PCStartBuildImpModule  %
     248              :                            
     249              :                            % PushAutoOff  %
     250              :                            [ Priority  ] ';' { Import 
     251              :                                                
     252              :                                                % PCBuildImportOuterModule  %
     253              :                                                 } Block 
     254              :                            
     255              :                            % PushAutoOn  %
     256              :                            
     257              :                            % namet := GetTokenNo ()  %
     258              :                            Ident 
     259              :                            % PCEndBuildImpModule (namet)  %
     260              :                            '.' 
     261              :                            % PopAuto ; PopAuto ; PopAuto  %
     262              :                            
     263              : 
     264              :    first  symbols:implementationtok
     265              :    
     266              :    cannot reachend
     267              : */
     268              : 
     269              : static void ImplementationModule (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     270              : 
     271              : /*
     272              :    ImplementationOrProgramModule := 
     273              :                                     % PushAutoOff  %
     274              :                                     ( ImplementationModule  | 
     275              :                                       ProgramModule  ) 
     276              :                                     
     277              :                                     % PopAuto  %
     278              :                                     
     279              : 
     280              :    first  symbols:moduletok, implementationtok
     281              :    
     282              :    cannot reachend
     283              : */
     284              : 
     285              : static void ImplementationOrProgramModule (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     286              : 
     287              : /*
     288              :    Number := Integer  | Real 
     289              : 
     290              :    first  symbols:realtok, integertok
     291              :    
     292              :    cannot reachend
     293              : */
     294              : 
     295              : static void Number (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     296              : 
     297              : /*
     298              :    Qualident := Ident 
     299              :                 % IF IsAutoPushOn()
     300              :                   THEN
     301              :                                                                                                 CheckModuleQualident (stopset0, stopset1, stopset2)
     302              :                   ELSE  just parse qualident   %
     303              :                 { '.' Ident  } 
     304              :                 % END  %
     305              :                 
     306              : 
     307              :    first  symbols:identtok
     308              :    
     309              :    cannot reachend
     310              : */
     311              : 
     312              : static void Qualident (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     313              : 
     314              : /*
     315              :    ConstantDeclaration := 
     316              :                           % VAR top: CARDINAL ;  %
     317              :                           
     318              :                           % InclConst (BlockState)  %
     319              :                           
     320              :                           % top := Top()  %
     321              :                           
     322              :                           % PushAutoOn  %
     323              :                           ( Ident '=' 
     324              :                             % StartDesConst  %
     325              :                             
     326              :                             % PushAutoOff  %
     327              :                             ConstExpression 
     328              :                             % PopAuto  %
     329              :                              ) 
     330              :                           % EndDesConst  %
     331              :                           
     332              :                           % PopAuto  %
     333              :                           
     334              :                           % Assert(top=Top())  %
     335              :                           
     336              :                           % ExclConst (BlockState)  %
     337              :                           
     338              : 
     339              :    first  symbols:identtok
     340              :    
     341              :    cannot reachend
     342              : */
     343              : 
     344              : static void ConstantDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     345              : 
     346              : /*
     347              :    ConstExpression := 
     348              :                       % VAR top: CARDINAL ;  %
     349              :                       
     350              :                       % top := Top()  %
     351              :                       
     352              :                       % PushInConstExpression  %
     353              :                       
     354              :                       % PushAutoOff  %
     355              :                       SimpleConstExpr [ Relation SimpleConstExpr 
     356              :                                         
     357              :                                         % BuildRelationConst  %
     358              :                                          ] 
     359              :                       % PopAuto  %
     360              :                       
     361              :                       % PopInConstExpression  %
     362              :                       
     363              :                       % Assert(top=Top())  %
     364              :                       
     365              : 
     366              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
     367              :    
     368              :    cannot reachend
     369              : */
     370              : 
     371              : static void ConstExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     372              : 
     373              : /*
     374              :    Relation := '=' 
     375              :                % PushT(EqualTok)  %
     376              :                 | '#' 
     377              :                % PushT(HashTok)  %
     378              :                 | '<>' 
     379              :                % PushT(LessGreaterTok)  %
     380              :                 | '<' 
     381              :                % PushT(LessTok)  %
     382              :                 | '<=' 
     383              :                % PushT(LessEqualTok)  %
     384              :                 | '>' 
     385              :                % PushT(GreaterTok)  %
     386              :                 | '>=' 
     387              :                % PushT(GreaterEqualTok)  %
     388              :                 | 'IN' 
     389              :                % PushT(InTok)  %
     390              :                
     391              : 
     392              :    first  symbols:intok, greaterequaltok, greatertok, lessequaltok, lesstok, lessgreatertok, hashtok, equaltok
     393              :    
     394              :    cannot reachend
     395              : */
     396              : 
     397              : static void Relation (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     398              : 
     399              : /*
     400              :    SimpleConstExpr := 
     401              :                       % VAR top: CARDINAL ;  %
     402              :                       
     403              :                       % top := Top()  %
     404              :                       UnaryOrConstTerm { ConstAddOperator 
     405              :                                          ConstTerm 
     406              :                                          
     407              :                                          % BuildBinaryConst  %
     408              :                                           } 
     409              :                       % Assert(top=Top())  %
     410              :                       
     411              : 
     412              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
     413              :    
     414              :    cannot reachend
     415              : */
     416              : 
     417              : static void SimpleConstExpr (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     418              : 
     419              : /*
     420              :    UnaryOrConstTerm := '+' 
     421              :                        % PushT(PlusTok)  %
     422              :                        ConstTerm 
     423              :                        % BuildUnaryConst  %
     424              :                         | '-' 
     425              :                        % PushT(MinusTok)  %
     426              :                        ConstTerm 
     427              :                        % BuildUnaryConst  %
     428              :                         | ConstTerm 
     429              : 
     430              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
     431              :    
     432              :    cannot reachend
     433              : */
     434              : 
     435              : static void UnaryOrConstTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     436              : 
     437              : /*
     438              :    ConstAddOperator := '+' 
     439              :                        % PushT(PlusTok)  %
     440              :                         | '-' 
     441              :                        % PushT(MinusTok)  %
     442              :                         | 'OR' 
     443              :                        % PushT(OrTok)  %
     444              :                        
     445              : 
     446              :    first  symbols:ortok, minustok, plustok
     447              :    
     448              :    cannot reachend
     449              : */
     450              : 
     451              : static void ConstAddOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     452              : 
     453              : /*
     454              :    AddOperator := '+'  | '-'  | 'OR' 
     455              : 
     456              :    first  symbols:ortok, minustok, plustok
     457              :    
     458              :    cannot reachend
     459              : */
     460              : 
     461              : static void AddOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     462              : 
     463              : /*
     464              :    ConstTerm := 
     465              :                 % VAR top: CARDINAL ;  %
     466              :                 
     467              :                 % top := Top()  %
     468              :                 ConstFactor 
     469              :                 % Assert(top=Top())  %
     470              :                 { ConstMulOperator ConstFactor 
     471              :                   % BuildBinaryConst  %
     472              :                   
     473              :                   % Assert(top=Top())  %
     474              :                    } 
     475              :                 % Assert(top=Top())  %
     476              :                 
     477              : 
     478              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok
     479              :    
     480              :    cannot reachend
     481              : */
     482              : 
     483              : static void ConstTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     484              : 
     485              : /*
     486              :    ConstMulOperator := '*' 
     487              :                        % PushT(TimesTok)  %
     488              :                         | '/' 
     489              :                        % PushT(DivideTok)  %
     490              :                         | 'DIV' 
     491              :                        % PushT(DivTok)  %
     492              :                         | 'MOD' 
     493              :                        % PushT(ModTok)  %
     494              :                         | 'REM' 
     495              :                        % PushT(RemTok)  %
     496              :                         | 'AND' 
     497              :                        % PushT(AndTok)  %
     498              :                         | '&' 
     499              :                        % PushT(AmbersandTok)  %
     500              :                        
     501              : 
     502              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
     503              :    
     504              :    cannot reachend
     505              : */
     506              : 
     507              : static void ConstMulOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     508              : 
     509              : /*
     510              :    MulOperator := '*'  | '/'  | 'DIV'  | 'MOD'  | 
     511              :                   'REM'  | 'AND'  | '&' 
     512              : 
     513              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
     514              :    
     515              :    cannot reachend
     516              : */
     517              : 
     518              : static void MulOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     519              : 
     520              : /*
     521              :    ConstFactor := ConstNumber  | ConstString  | 
     522              :                   ConstSetOrQualidentOrFunction  | 
     523              :                   '(' ConstExpression ')'  | 
     524              :                   'NOT' ConstFactor  | 
     525              :                   ConstAttribute 
     526              : 
     527              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok
     528              :    
     529              :    cannot reachend
     530              : */
     531              : 
     532              : static void ConstFactor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     533              : 
     534              : /*
     535              :    ConstNumber := 
     536              :                   % PushAutoOn  %
     537              :                   ( Integer 
     538              :                     % PushIntegerType  %
     539              :                      | Real 
     540              :                     % PushRType  %
     541              :                      ) 
     542              :                   % PopAuto  %
     543              :                   
     544              : 
     545              :    first  symbols:realtok, integertok
     546              :    
     547              :    cannot reachend
     548              : */
     549              : 
     550              : static void ConstNumber (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     551              : 
     552              : /*
     553              :    ConstString := 
     554              :                   % PushAutoOn  %
     555              :                   string 
     556              :                   % PushStringType  %
     557              :                   
     558              :                   % PopAuto  %
     559              :                   
     560              : 
     561              :    first  symbols:stringtok
     562              :    
     563              :    cannot reachend
     564              : */
     565              : 
     566              : static void ConstString (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     567              : 
     568              : /*
     569              :    ComponentElement := ConstExpression [ '..' ConstExpression  ] 
     570              : 
     571              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
     572              :    
     573              :    cannot reachend
     574              : */
     575              : 
     576              : static void ComponentElement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     577              : 
     578              : /*
     579              :    ComponentValue := ComponentElement [ 'BY' ConstExpression  ] 
     580              : 
     581              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
     582              :    
     583              :    cannot reachend
     584              : */
     585              : 
     586              : static void ComponentValue (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     587              : 
     588              : /*
     589              :    ArraySetRecordValue := ComponentValue { ',' 
     590              :                                            % NextConstructorField  %
     591              :                                            ComponentValue  } 
     592              : 
     593              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
     594              :    
     595              :    cannot reachend
     596              : */
     597              : 
     598              : static void ArraySetRecordValue (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     599              : 
     600              : /*
     601              :    Constructor := '{' 
     602              :                   % InclConstructor (BlockState)  %
     603              :                   
     604              :                   % CheckQualident (OperandTok (1), BlockState, OperandT (1))  %
     605              :                   
     606              :                   % PushConstructorCastType  %
     607              :                   
     608              :                   % PushInConstructor  %
     609              :                   
     610              :                   % BuildConstructor (GetTokenNo ()-1)  %
     611              :                   [ ArraySetRecordValue  ] 
     612              :                   % PopConstructor  %
     613              :                   '}' 
     614              :                   % PopInConstructor  %
     615              :                   
     616              :                   % ExclConstructor (BlockState)  %
     617              :                   
     618              : 
     619              :    first  symbols:lcbratok
     620              :    
     621              :    cannot reachend
     622              : */
     623              : 
     624              : static void Constructor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     625              : 
     626              : /*
     627              :    ConstructorOrConstActualParameters := Constructor  | 
     628              :                                          ConstActualParameters 
     629              :                                          
     630              :                                          % PushConstFunctionType  %
     631              :                                          
     632              :                                          % PopNothing  pop function   %
     633              :                                          
     634              : 
     635              :    first  symbols:lparatok, lcbratok
     636              :    
     637              :    cannot reachend
     638              : */
     639              : 
     640              : static void ConstructorOrConstActualParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     641              : 
     642              : /*
     643              :    ConstSetOrQualidentOrFunction := 
     644              :                                     % PushAutoOff  %
     645              :                                     
     646              :                                     % VAR tokpos: CARDINAL ;  %
     647              :                                     
     648              :                                     % tokpos := GetTokenNo ()  %
     649              :                                     ( PushQualident 
     650              :                                       ( ConstructorOrConstActualParameters  | 
     651              :                                         
     652              :                                         % CheckQualident (OperandTok (1), BlockState, OperandT (1))  %
     653              :                                         
     654              :                                         % PushConstType  %
     655              :                                         
     656              :                                         % PopNothing  %
     657              :                                          )  | 
     658              :                                       
     659              :                                       % BuildTypeForConstructor (tokpos)  %
     660              :                                       Constructor  ) 
     661              :                                     
     662              :                                     % PopAuto  %
     663              :                                     
     664              : 
     665              :    first  symbols:identtok, lcbratok
     666              :    
     667              :    cannot reachend
     668              : */
     669              : 
     670              : static void ConstSetOrQualidentOrFunction (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     671              : 
     672              : /*
     673              :    ConstActualParameters := 
     674              :                             % PushState (BlockState)  %
     675              :                             
     676              :                             % InclConstFunc (BlockState)  %
     677              :                             
     678              :                             % CheckQualident (OperandTok (1), BlockState, OperandT (1))  %
     679              :                             
     680              :                             % PushT(0)  %
     681              :                             '(' [ ConstExpList  ] ')' 
     682              :                             
     683              :                             % PopState (BlockState)  %
     684              :                             
     685              : 
     686              :    first  symbols:lparatok
     687              :    
     688              :    cannot reachend
     689              : */
     690              : 
     691              : static void ConstActualParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     692              : 
     693              : /*
     694              :    ConstExpList := 
     695              :                    % VAR n: CARDINAL ;  %
     696              :                    ConstExpression 
     697              :                    % PopT(n)  %
     698              :                    
     699              :                    % INC(n)  %
     700              :                    
     701              :                    % Assert(n=1)  %
     702              :                    
     703              :                    % PushT(n)  %
     704              :                    { ',' ConstExpression 
     705              :                      % PopT(n)  %
     706              :                      
     707              :                      % INC(n)  %
     708              :                      
     709              :                      % PushT(n)  %
     710              :                       } 
     711              : 
     712              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
     713              :    
     714              :    cannot reachend
     715              : */
     716              : 
     717              : static void ConstExpList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     718              : 
     719              : /*
     720              :    ConstAttribute := 
     721              :                      % VAR top: CARDINAL ;  %
     722              :                      
     723              :                      % top := Top()  %
     724              :                      '__ATTRIBUTE__' '__BUILTIN__' 
     725              :                      '(' '(' 
     726              :                      % PushAutoOn  %
     727              :                      ConstAttributeExpression 
     728              :                      % PopAuto  %
     729              :                      ')' ')' 
     730              :                      % Assert(top=Top())  %
     731              :                      
     732              : 
     733              :    first  symbols:attributetok
     734              :    
     735              :    cannot reachend
     736              : */
     737              : 
     738              : static void ConstAttribute (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     739              : 
     740              : /*
     741              :    ConstAttributeExpression := Ident 
     742              :                                % PushConstAttributeType  %
     743              :                                
     744              :                                % PopNothing  %
     745              :                                 | '<' Qualident ',' 
     746              :                                Ident '>' 
     747              :                                % PushConstAttributePairType  %
     748              :                                
     749              :                                % PopNothing ; PopNothing  %
     750              :                                
     751              : 
     752              :    first  symbols:lesstok, identtok
     753              :    
     754              :    cannot reachend
     755              : */
     756              : 
     757              : static void ConstAttributeExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     758              : 
     759              : /*
     760              :    ByteAlignment := '' 
     761              : 
     762              :    first  symbols:ldirectivetok
     763              :    
     764              :    cannot reachend
     765              : */
     766              : 
     767              : static void ByteAlignment (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     768              : 
     769              : /*
     770              :    Alignment := [ ByteAlignment  ] 
     771              : 
     772              :    first  symbols:ldirectivetok
     773              :    
     774              :    reachend
     775              : */
     776              : 
     777              : static void Alignment (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     778              : 
     779              : /*
     780              :    TypeDeclaration := Ident '=' Type Alignment 
     781              : 
     782              :    first  symbols:identtok
     783              :    
     784              :    cannot reachend
     785              : */
     786              : 
     787              : static void TypeDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     788              : 
     789              : /*
     790              :    Type := 
     791              :            % PushAutoOff  %
     792              :            ( SimpleType  | ArrayType  | RecordType  | 
     793              :              SetType  | PointerType  | 
     794              :              ProcedureType  ) 
     795              :            % PopAuto  %
     796              :            
     797              : 
     798              :    first  symbols:lparatok, lsbratok, proceduretok, pointertok, settok, packedsettok, oftok, recordtok, arraytok, identtok
     799              :    
     800              :    cannot reachend
     801              : */
     802              : 
     803              : static void Type (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     804              : 
     805              : /*
     806              :    SimpleType := Qualident [ SubrangeType  ]  | 
     807              :                  Enumeration  | SubrangeType 
     808              : 
     809              :    first  symbols:lsbratok, lparatok, identtok
     810              :    
     811              :    cannot reachend
     812              : */
     813              : 
     814              : static void SimpleType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     815              : 
     816              : /*
     817              :    Enumeration := '(' IdentList ')' 
     818              : 
     819              :    first  symbols:lparatok
     820              :    
     821              :    cannot reachend
     822              : */
     823              : 
     824              : static void Enumeration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     825              : 
     826              : /*
     827              :    IdentList := Ident 
     828              :                 % VAR
     829              :                                                                                                   on: BOOLEAN ;
     830              :                                                                                                   n : CARDINAL ;  %
     831              :                 
     832              :                 % on := IsAutoPushOn() ;
     833              :                   IF on
     834              :                   THEN
     835              :                      n := 1
     836              :                   END  %
     837              :                 { ',' Ident 
     838              :                   % IF on
     839              :                     THEN
     840              :                        INC(n)
     841              :                     END  %
     842              :                    } 
     843              :                 % IF on
     844              :                   THEN
     845              :                      PushT(n)
     846              :                   END  %
     847              :                 
     848              : 
     849              :    first  symbols:identtok
     850              :    
     851              :    cannot reachend
     852              : */
     853              : 
     854              : static void IdentList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     855              : 
     856              : /*
     857              :    SubrangeType := '[' ConstExpression '..' ConstExpression 
     858              :                    ']' 
     859              : 
     860              :    first  symbols:lsbratok
     861              :    
     862              :    cannot reachend
     863              : */
     864              : 
     865              : static void SubrangeType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     866              : 
     867              : /*
     868              :    ArrayType := 'ARRAY' SimpleType { ',' SimpleType  } 
     869              :                 'OF' Type 
     870              : 
     871              :    first  symbols:arraytok
     872              :    
     873              :    cannot reachend
     874              : */
     875              : 
     876              : static void ArrayType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     877              : 
     878              : /*
     879              :    RecordType := 'RECORD' [ DefaultRecordAttributes  ] 
     880              :                  FieldListSequence 'END' 
     881              : 
     882              :    first  symbols:recordtok
     883              :    
     884              :    cannot reachend
     885              : */
     886              : 
     887              : static void RecordType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     888              : 
     889              : /*
     890              :    DefaultRecordAttributes := '' 
     891              : 
     892              :    first  symbols:ldirectivetok
     893              :    
     894              :    cannot reachend
     895              : */
     896              : 
     897              : static void DefaultRecordAttributes (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     898              : 
     899              : /*
     900              :    RecordFieldPragma := [ ''  ] 
     901              : 
     902              :    first  symbols:ldirectivetok
     903              :    
     904              :    reachend
     905              : */
     906              : 
     907              : static void RecordFieldPragma (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     908              : 
     909              : /*
     910              :    FieldPragmaExpression := 
     911              :                             % PushAutoOff  %
     912              :                             Ident [ '(' ConstExpression 
     913              :                                     ')'  ] 
     914              :                             % PopAuto  %
     915              :                             
     916              : 
     917              :    first  symbols:identtok
     918              :    
     919              :    cannot reachend
     920              : */
     921              : 
     922              : static void FieldPragmaExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     923              : 
     924              : /*
     925              :    AttributeExpression := 
     926              :                           % PushAutoOff  %
     927              :                           Ident '(' ConstExpression 
     928              :                           ')' 
     929              :                           % PopAuto  %
     930              :                           
     931              : 
     932              :    first  symbols:identtok
     933              :    
     934              :    cannot reachend
     935              : */
     936              : 
     937              : static void AttributeExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     938              : 
     939              : /*
     940              :    FieldListSequence := FieldListStatement { ';' FieldListStatement  } 
     941              : 
     942              :    first  symbols:casetok, identtok, semicolontok
     943              :    
     944              :    reachend
     945              : */
     946              : 
     947              : static void FieldListSequence (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     948              : 
     949              : /*
     950              :    FieldListStatement := [ FieldList  ] 
     951              : 
     952              :    first  symbols:identtok, casetok
     953              :    
     954              :    reachend
     955              : */
     956              : 
     957              : static void FieldListStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     958              : 
     959              : /*
     960              :    FieldList := IdentList ':' Type RecordFieldPragma  | 
     961              :                 'CASE' CaseTag 'OF' Varient { '|' Varient  } 
     962              :                 [ 'ELSE' FieldListSequence  ] 'END' 
     963              : 
     964              :    first  symbols:casetok, identtok
     965              :    
     966              :    cannot reachend
     967              : */
     968              : 
     969              : static void FieldList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     970              : 
     971              : /*
     972              :    TagIdent := [ Ident  ] 
     973              : 
     974              :    first  symbols:identtok
     975              :    
     976              :    reachend
     977              : */
     978              : 
     979              : static void TagIdent (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     980              : 
     981              : /*
     982              :    CaseTag := TagIdent [ ':' Qualident  ] 
     983              : 
     984              :    first  symbols:colontok, identtok
     985              :    
     986              :    reachend
     987              : */
     988              : 
     989              : static void CaseTag (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
     990              : 
     991              : /*
     992              :    Varient := [ VarientCaseLabelList ':' FieldListSequence  ] 
     993              : 
     994              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
     995              :    
     996              :    reachend
     997              : */
     998              : 
     999              : static void Varient (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1000              : 
    1001              : /*
    1002              :    VarientCaseLabelList := VarientCaseLabels { ',' 
    1003              :                                                VarientCaseLabels  } 
    1004              : 
    1005              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
    1006              :    
    1007              :    cannot reachend
    1008              : */
    1009              : 
    1010              : static void VarientCaseLabelList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1011              : 
    1012              : /*
    1013              :    VarientCaseLabels := ConstExpression ( '..' ConstExpression  | 
    1014              :                                           
    1015              :                                           %  epsilon   %
    1016              :                                            ) 
    1017              : 
    1018              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    1019              :    
    1020              :    cannot reachend
    1021              : */
    1022              : 
    1023              : static void VarientCaseLabels (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1024              : 
    1025              : /*
    1026              :    SilentConstExpression := 
    1027              :                             % PushAutoOff  %
    1028              :                             SilentSimpleConstExpr [ 
    1029              :    SilentRelation SilentSimpleConstExpr  ] 
    1030              :                             % PopAuto  %
    1031              :                             
    1032              : 
    1033              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    1034              :    
    1035              :    cannot reachend
    1036              : */
    1037              : 
    1038              : static void SilentConstExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1039              : 
    1040              : /*
    1041              :    SilentRelation := '='  | '#'  | '<>'  | '<'  | 
    1042              :                      '<='  | '>'  | '>='  | 'IN' 
    1043              : 
    1044              :    first  symbols:intok, greaterequaltok, greatertok, lessequaltok, lesstok, lessgreatertok, hashtok, equaltok
    1045              :    
    1046              :    cannot reachend
    1047              : */
    1048              : 
    1049              : static void SilentRelation (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1050              : 
    1051              : /*
    1052              :    SilentSimpleConstExpr := SilentUnaryOrConstTerm 
    1053              :                             { SilentAddOperator SilentConstTerm  } 
    1054              : 
    1055              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    1056              :    
    1057              :    cannot reachend
    1058              : */
    1059              : 
    1060              : static void SilentSimpleConstExpr (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1061              : 
    1062              : /*
    1063              :    SilentUnaryOrConstTerm := '+' SilentConstTerm  | 
    1064              :                              '-' SilentConstTerm  | 
    1065              :                              SilentConstTerm 
    1066              : 
    1067              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    1068              :    
    1069              :    cannot reachend
    1070              : */
    1071              : 
    1072              : static void SilentUnaryOrConstTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1073              : 
    1074              : /*
    1075              :    SilentAddOperator := '+'  | '-'  | 'OR' 
    1076              : 
    1077              :    first  symbols:ortok, minustok, plustok
    1078              :    
    1079              :    cannot reachend
    1080              : */
    1081              : 
    1082              : static void SilentAddOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1083              : 
    1084              : /*
    1085              :    SilentConstTerm := SilentConstFactor { SilentMulOperator 
    1086              :                                           SilentConstFactor  } 
    1087              : 
    1088              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok
    1089              :    
    1090              :    cannot reachend
    1091              : */
    1092              : 
    1093              : static void SilentConstTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1094              : 
    1095              : /*
    1096              :    SilentMulOperator := '*'  | '/'  | 'DIV'  | 
    1097              :                         'MOD'  | 'REM'  | 'AND'  | 
    1098              :                         '&' 
    1099              : 
    1100              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
    1101              :    
    1102              :    cannot reachend
    1103              : */
    1104              : 
    1105              : static void SilentMulOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1106              : 
    1107              : /*
    1108              :    SilentConstFactor := Number  | SilentConstString  | 
    1109              :                         SilentConstSetOrQualidentOrFunction  | 
    1110              :                         '(' SilentConstExpression ')'  | 
    1111              :                         'NOT' SilentConstFactor  | 
    1112              :                         SilentConstAttribute 
    1113              : 
    1114              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok
    1115              :    
    1116              :    cannot reachend
    1117              : */
    1118              : 
    1119              : static void SilentConstFactor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1120              : 
    1121              : /*
    1122              :    SilentConstString := string 
    1123              : 
    1124              :    first  symbols:stringtok
    1125              :    
    1126              :    cannot reachend
    1127              : */
    1128              : 
    1129              : static void SilentConstString (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1130              : 
    1131              : /*
    1132              :    SilentConstAttribute := '__ATTRIBUTE__' '__BUILTIN__' 
    1133              :                            '(' '(' SilentConstAttributeExpression 
    1134              :                            ')' ')' 
    1135              : 
    1136              :    first  symbols:attributetok
    1137              :    
    1138              :    cannot reachend
    1139              : */
    1140              : 
    1141              : static void SilentConstAttribute (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1142              : 
    1143              : /*
    1144              :    SilentConstAttributeExpression := Ident  | 
    1145              :                                      '<' Ident ',' 
    1146              :                                      SilentConstString 
    1147              :                                      '>' 
    1148              : 
    1149              :    first  symbols:lesstok, identtok
    1150              :    
    1151              :    cannot reachend
    1152              : */
    1153              : 
    1154              : static void SilentConstAttributeExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1155              : 
    1156              : /*
    1157              :    SilentComponentElement := SilentConstExpression 
    1158              :                              [ '..' SilentConstExpression  ] 
    1159              : 
    1160              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    1161              :    
    1162              :    cannot reachend
    1163              : */
    1164              : 
    1165              : static void SilentComponentElement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1166              : 
    1167              : /*
    1168              :    SilentComponentValue := SilentComponentElement [ 
    1169              :    'BY' SilentConstExpression  ] 
    1170              : 
    1171              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    1172              :    
    1173              :    cannot reachend
    1174              : */
    1175              : 
    1176              : static void SilentComponentValue (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1177              : 
    1178              : /*
    1179              :    SilentArraySetRecordValue := SilentComponentValue 
    1180              :                                 { ',' SilentComponentValue  } 
    1181              : 
    1182              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    1183              :    
    1184              :    cannot reachend
    1185              : */
    1186              : 
    1187              : static void SilentArraySetRecordValue (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1188              : 
    1189              : /*
    1190              :    SilentConstructor := '{' 
    1191              :                         % SilentBuildConstructor  %
    1192              :                         [ SilentArraySetRecordValue  ] 
    1193              :                         '}' 
    1194              : 
    1195              :    first  symbols:lcbratok
    1196              :    
    1197              :    cannot reachend
    1198              : */
    1199              : 
    1200              : static void SilentConstructor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1201              : 
    1202              : /*
    1203              :    SilentConstSetOrQualidentOrFunction := SilentConstructor  | 
    1204              :                                           Qualident 
    1205              :                                           [ SilentConstructor  | 
    1206              :                                             SilentActualParameters  ] 
    1207              : 
    1208              :    first  symbols:identtok, lcbratok
    1209              :    
    1210              :    cannot reachend
    1211              : */
    1212              : 
    1213              : static void SilentConstSetOrQualidentOrFunction (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1214              : 
    1215              : /*
    1216              :    SilentActualParameters := '(' [ SilentExpList  ] 
    1217              :                              ')' 
    1218              : 
    1219              :    first  symbols:lparatok
    1220              :    
    1221              :    cannot reachend
    1222              : */
    1223              : 
    1224              : static void SilentActualParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1225              : 
    1226              : /*
    1227              :    SilentExpList := SilentConstExpression { ',' SilentConstExpression  } 
    1228              : 
    1229              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    1230              :    
    1231              :    cannot reachend
    1232              : */
    1233              : 
    1234              : static void SilentExpList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1235              : 
    1236              : /*
    1237              :    SetType := ( 'SET'  | 'PACKEDSET'  ) 'OF' SimpleType 
    1238              : 
    1239              :    first  symbols:oftok, packedsettok, settok
    1240              :    
    1241              :    cannot reachend
    1242              : */
    1243              : 
    1244              : static void SetType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1245              : 
    1246              : /*
    1247              :    PointerType := 'POINTER' 'TO' Type 
    1248              : 
    1249              :    first  symbols:pointertok
    1250              :    
    1251              :    cannot reachend
    1252              : */
    1253              : 
    1254              : static void PointerType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1255              : 
    1256              : /*
    1257              :    ProcedureType := 'PROCEDURE' [ FormalTypeList  ] 
    1258              : 
    1259              :    first  symbols:proceduretok
    1260              :    
    1261              :    cannot reachend
    1262              : */
    1263              : 
    1264              : static void ProcedureType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1265              : 
    1266              : /*
    1267              :    FormalTypeList := '(' ( ')' FormalReturn  | 
    1268              :                            ProcedureParameters ')' 
    1269              :                            FormalReturn  ) 
    1270              : 
    1271              :    first  symbols:lparatok
    1272              :    
    1273              :    cannot reachend
    1274              : */
    1275              : 
    1276              : static void FormalTypeList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1277              : 
    1278              : /*
    1279              :    FormalReturn := [ ':' OptReturnType  ] 
    1280              : 
    1281              :    first  symbols:colontok
    1282              :    
    1283              :    reachend
    1284              : */
    1285              : 
    1286              : static void FormalReturn (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1287              : 
    1288              : /*
    1289              :    OptReturnType := '[' Qualident ']'  | 
    1290              :                     Qualident 
    1291              : 
    1292              :    first  symbols:identtok, lsbratok
    1293              :    
    1294              :    cannot reachend
    1295              : */
    1296              : 
    1297              : static void OptReturnType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1298              : 
    1299              : /*
    1300              :    ProcedureParameters := ProcedureParameter { ',' 
    1301              :                                                ProcedureParameter  } 
    1302              : 
    1303              :    first  symbols:identtok, arraytok, periodperiodperiodtok, vartok
    1304              :    
    1305              :    cannot reachend
    1306              : */
    1307              : 
    1308              : static void ProcedureParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1309              : 
    1310              : /*
    1311              :    ProcedureParameter := '...'  | 'VAR' FormalType  | 
    1312              :                          FormalType 
    1313              : 
    1314              :    first  symbols:arraytok, identtok, vartok, periodperiodperiodtok
    1315              :    
    1316              :    cannot reachend
    1317              : */
    1318              : 
    1319              : static void ProcedureParameter (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1320              : 
    1321              : /*
    1322              :    VarIdent := Ident [ '[' ConstExpression ']'  ] 
    1323              : 
    1324              :    first  symbols:identtok
    1325              :    
    1326              :    cannot reachend
    1327              : */
    1328              : 
    1329              : static void VarIdent (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1330              : 
    1331              : /*
    1332              :    VarIdentList := VarIdent { ',' VarIdent  } 
    1333              : 
    1334              :    first  symbols:identtok
    1335              :    
    1336              :    cannot reachend
    1337              : */
    1338              : 
    1339              : static void VarIdentList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1340              : 
    1341              : /*
    1342              :    VariableDeclaration := VarIdentList ':' Type Alignment 
    1343              : 
    1344              :    first  symbols:identtok
    1345              :    
    1346              :    cannot reachend
    1347              : */
    1348              : 
    1349              : static void VariableDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1350              : 
    1351              : /*
    1352              :    Designator := Qualident { SubDesignator  } 
    1353              : 
    1354              :    first  symbols:identtok
    1355              :    
    1356              :    cannot reachend
    1357              : */
    1358              : 
    1359              : static void Designator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1360              : 
    1361              : /*
    1362              :    SubDesignator := '.' Ident  | '[' ArrayExpList ']'  | 
    1363              :                     '^' 
    1364              : 
    1365              :    first  symbols:uparrowtok, lsbratok, periodtok
    1366              :    
    1367              :    cannot reachend
    1368              : */
    1369              : 
    1370              : static void SubDesignator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1371              : 
    1372              : /*
    1373              :    ArrayExpList := Expression { ',' Expression  } 
    1374              : 
    1375              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, plustok, minustok
    1376              :    
    1377              :    cannot reachend
    1378              : */
    1379              : 
    1380              : static void ArrayExpList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1381              : 
    1382              : /*
    1383              :    ExpList := Expression { ',' Expression  } 
    1384              : 
    1385              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, plustok, minustok
    1386              :    
    1387              :    cannot reachend
    1388              : */
    1389              : 
    1390              : static void ExpList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1391              : 
    1392              : /*
    1393              :    Expression := SimpleExpression [ SilentRelation 
    1394              :                                     SimpleExpression  ] 
    1395              : 
    1396              :    first  symbols:identtok, lcbratok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    1397              :    
    1398              :    cannot reachend
    1399              : */
    1400              : 
    1401              : static void Expression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1402              : 
    1403              : /*
    1404              :    SimpleExpression := UnaryOrTerm { AddOperator Term  } 
    1405              : 
    1406              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, plustok, minustok
    1407              :    
    1408              :    cannot reachend
    1409              : */
    1410              : 
    1411              : static void SimpleExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1412              : 
    1413              : /*
    1414              :    UnaryOrTerm := '+' Term  | '-' Term  | 
    1415              :                   Term 
    1416              : 
    1417              :    first  symbols:identtok, lcbratok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    1418              :    
    1419              :    cannot reachend
    1420              : */
    1421              : 
    1422              : static void UnaryOrTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1423              : 
    1424              : /*
    1425              :    Term := Factor { MulOperator Factor  } 
    1426              : 
    1427              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok
    1428              :    
    1429              :    cannot reachend
    1430              : */
    1431              : 
    1432              : static void Term (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1433              : 
    1434              : /*
    1435              :    Factor := Number  | string  | SetOrDesignatorOrFunction  | 
    1436              :              '(' Expression ')'  | 
    1437              :              'NOT' ( Factor  | ConstAttribute  ) 
    1438              : 
    1439              :    first  symbols:identtok, lcbratok, nottok, lparatok, stringtok, integertok, realtok
    1440              :    
    1441              :    cannot reachend
    1442              : */
    1443              : 
    1444              : static void Factor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1445              : 
    1446              : /*
    1447              :    PushQualident := 
    1448              :                     % VAR name         : Name ;
    1449              :                           init, ip1    : CARDINAL ;
    1450              :                           tok, tokstart: CARDINAL ;  %
    1451              :                     
    1452              :                     % PushAutoOn  %
    1453              :                     Ident 
    1454              :                     % IF IsAutoPushOn()
    1455              :                       THEN
    1456              :                          PopTtok (name, tokstart) ;
    1457              :                          tok := tokstart ;
    1458              :                          init := GetSym (name) ;
    1459              :                          IF init=NulSym
    1460              :                          THEN
    1461              :                             PushTFntok (NulSym, NulSym, name, tok)
    1462              :                          ELSE
    1463              :                             WHILE IsDefImp (init) OR IsModule (init) DO
    1464              :                                IF currenttoken # periodtok
    1465              :                                THEN
    1466              :                                   ErrorArrayAt ("expecting '.' after module in the construction of a qualident", tok) ;
    1467              :                                   IF tok#tokstart
    1468              :                                   THEN
    1469              :                                      tok := MakeVirtualTok (tokstart, tokstart, tok)
    1470              :                                   END ;
    1471              :                                   PushTtok (init, tok) ;
    1472              :                                   PopAuto ;
    1473              :                                   RETURN
    1474              :                                ELSE
    1475              :                                   Expect (periodtok, stopset0, stopset1, stopset2 + SetOfStop2{identtok}) ;
    1476              :                                   StartScope (init) ;
    1477              :                                   Ident (stopset0, stopset1, stopset2) ;
    1478              :                                   PopTtok (name, tok) ;
    1479              :                                   ip1 := GetSym (name) ;
    1480              :                                   IF ip1 = NulSym
    1481              :                                   THEN
    1482              :                                      ErrorArrayAt ("unknown ident in the construction of a qualident", tok) ;
    1483              :                                      EndScope ;
    1484              :                                      IF tok#tokstart
    1485              :                                      THEN
    1486              :                                         tok := MakeVirtualTok (tokstart, tokstart, tok)
    1487              :                                      END ;
    1488              :                                      PushTFntok (NulSym, NulSym, name, tok) ;
    1489              :                                      PopAuto ;
    1490              :                                      RETURN
    1491              :                                   ELSE
    1492              :                                      PutIncluded (ip1)
    1493              :                                   END ;
    1494              :                                   EndScope ;
    1495              :                                   CheckCanBeImported (init, ip1) ;
    1496              :                                   init := ip1
    1497              :                                END
    1498              :                             END ;
    1499              :                             IF tok#tokstart
    1500              :                             THEN
    1501              :                                tok := MakeVirtualTok (tokstart, tokstart, tok)
    1502              :                             END ;
    1503              :                             IF IsProcedure (init) OR IsProcType (init)
    1504              :                             THEN
    1505              :                                PushTtok (init, tok)
    1506              :                             ELSE
    1507              :                                PushTFtok (init, GetType(init), tok)
    1508              :                             END
    1509              :                          END
    1510              :                       ELSE  %
    1511              :                     { '.' Ident  } 
    1512              :                     % END  %
    1513              :                     
    1514              :                     % PopAuto  %
    1515              :                     
    1516              : 
    1517              :    first  symbols:identtok
    1518              :    
    1519              :    cannot reachend
    1520              : */
    1521              : 
    1522              : static void PushQualident (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1523              : 
    1524              : /*
    1525              :    ConstructorOrSimpleDes := Constructor  | 
    1526              :                              
    1527              :                              % PopNothing  %
    1528              :                              SimpleDes [ ActualParameters  ] 
    1529              : 
    1530              :    first  symbols:lparatok, uparrowtok, lsbratok, periodtok, lcbratok
    1531              :    
    1532              :    reachend
    1533              : */
    1534              : 
    1535              : static void ConstructorOrSimpleDes (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1536              : 
    1537              : /*
    1538              :    SetOrDesignatorOrFunction := 
    1539              :                                 % VAR tokpos: CARDINAL ;  %
    1540              :                                 
    1541              :                                 % tokpos := GetTokenNo ()  %
    1542              :                                 
    1543              :                                 % PushAutoOff  %
    1544              :                                 ( PushQualident ( ConstructorOrSimpleDes  | 
    1545              :                                                   
    1546              :                                                   % PopNothing  %
    1547              :                                                    )  | 
    1548              :                                   
    1549              :                                   % BuildTypeForConstructor (tokpos)  %
    1550              :                                   Constructor  ) 
    1551              :                                 % PopAuto  %
    1552              :                                 
    1553              : 
    1554              :    first  symbols:lcbratok, identtok
    1555              :    
    1556              :    cannot reachend
    1557              : */
    1558              : 
    1559              : static void SetOrDesignatorOrFunction (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1560              : 
    1561              : /*
    1562              :    SimpleDes := { SubDesignator  } 
    1563              : 
    1564              :    first  symbols:periodtok, lsbratok, uparrowtok
    1565              :    
    1566              :    reachend
    1567              : */
    1568              : 
    1569              : static void SimpleDes (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1570              : 
    1571              : /*
    1572              :    ActualParameters := '(' [ ExpList  ] ')' 
    1573              : 
    1574              :    first  symbols:lparatok
    1575              :    
    1576              :    cannot reachend
    1577              : */
    1578              : 
    1579              : static void ActualParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1580              : 
    1581              : /*
    1582              :    ExitStatement := 'EXIT' 
    1583              : 
    1584              :    first  symbols:exittok
    1585              :    
    1586              :    cannot reachend
    1587              : */
    1588              : 
    1589              : static void ExitStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1590              : 
    1591              : /*
    1592              :    ReturnStatement := 'RETURN' [ Expression  ] 
    1593              : 
    1594              :    first  symbols:returntok
    1595              :    
    1596              :    cannot reachend
    1597              : */
    1598              : 
    1599              : static void ReturnStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1600              : 
    1601              : /*
    1602              :    Statement := 
    1603              :                 % PushAutoOff  %
    1604              :                 [ AssignmentOrProcedureCall  | 
    1605              :                   IfStatement  | CaseStatement  | 
    1606              :                   WhileStatement  | 
    1607              :                   RepeatStatement  | 
    1608              :                   LoopStatement  | ForStatement  | 
    1609              :                   WithStatement  | AsmStatement  | 
    1610              :                   ExitStatement  | ReturnStatement  | 
    1611              :                   RetryStatement  ] 
    1612              :                 % PopAuto ;  %
    1613              :                 
    1614              : 
    1615              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok
    1616              :    
    1617              :    reachend
    1618              : */
    1619              : 
    1620              : static void Statement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1621              : 
    1622              : /*
    1623              :    RetryStatement := 'RETRY' 
    1624              : 
    1625              :    first  symbols:retrytok
    1626              :    
    1627              :    cannot reachend
    1628              : */
    1629              : 
    1630              : static void RetryStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1631              : 
    1632              : /*
    1633              :    AssignmentOrProcedureCall := 
    1634              :                                 % VAR top: CARDINAL ;  %
    1635              :                                 
    1636              :                                 % top := Top()  %
    1637              :                                 Designator ( ':=' Expression  | 
    1638              :                                              ActualParameters  | 
    1639              :                                              
    1640              :                                              %  epsilon   %
    1641              :                                               ) 
    1642              :                                 % Assert(top=Top())  %
    1643              :                                 
    1644              : 
    1645              :    first  symbols:identtok
    1646              :    
    1647              :    cannot reachend
    1648              : */
    1649              : 
    1650              : static void AssignmentOrProcedureCall (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1651              : 
    1652              : /*
    1653              :    StatementSequence := 
    1654              :                         % VAR top: CARDINAL ;  %
    1655              :                         
    1656              :                         % top := Top()  %
    1657              :                         Statement 
    1658              :                         % Assert(top=Top())  %
    1659              :                         { ';' Statement 
    1660              :                           % Assert(top=Top())  %
    1661              :                            } 
    1662              : 
    1663              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok
    1664              :    
    1665              :    reachend
    1666              : */
    1667              : 
    1668              : static void StatementSequence (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1669              : 
    1670              : /*
    1671              :    IfStatement := 'IF' Expression 'THEN' StatementSequence 
    1672              :                   { 'ELSIF' Expression 'THEN' StatementSequence  } 
    1673              :                   [ 'ELSE' StatementSequence  ] 'END' 
    1674              : 
    1675              :    first  symbols:iftok
    1676              :    
    1677              :    cannot reachend
    1678              : */
    1679              : 
    1680              : static void IfStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1681              : 
    1682              : /*
    1683              :    CaseStatement := 'CASE' Expression 'OF' Case { '|' 
    1684              :                                                   Case  } 
    1685              :                     CaseEndStatement 
    1686              : 
    1687              :    first  symbols:casetok
    1688              :    
    1689              :    cannot reachend
    1690              : */
    1691              : 
    1692              : static void CaseStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1693              : 
    1694              : /*
    1695              :    CaseEndStatement := 'END'  | 'ELSE' StatementSequence 
    1696              :                        'END' 
    1697              : 
    1698              :    first  symbols:elsetok, endtok
    1699              :    
    1700              :    cannot reachend
    1701              : */
    1702              : 
    1703              : static void CaseEndStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1704              : 
    1705              : /*
    1706              :    Case := [ CaseLabelList ':' StatementSequence  ] 
    1707              : 
    1708              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    1709              :    
    1710              :    reachend
    1711              : */
    1712              : 
    1713              : static void Case (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1714              : 
    1715              : /*
    1716              :    CaseLabelList := CaseLabels { ',' CaseLabels  } 
    1717              : 
    1718              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
    1719              :    
    1720              :    cannot reachend
    1721              : */
    1722              : 
    1723              : static void CaseLabelList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1724              : 
    1725              : /*
    1726              :    CaseLabels := ConstExpression [ '..' ConstExpression  ] 
    1727              : 
    1728              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    1729              :    
    1730              :    cannot reachend
    1731              : */
    1732              : 
    1733              : static void CaseLabels (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1734              : 
    1735              : /*
    1736              :    WhileStatement := 'WHILE' Expression 'DO' StatementSequence 
    1737              :                      'END' 
    1738              : 
    1739              :    first  symbols:whiletok
    1740              :    
    1741              :    cannot reachend
    1742              : */
    1743              : 
    1744              : static void WhileStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1745              : 
    1746              : /*
    1747              :    RepeatStatement := 'REPEAT' StatementSequence 'UNTIL' 
    1748              :                       Expression 
    1749              : 
    1750              :    first  symbols:repeattok
    1751              :    
    1752              :    cannot reachend
    1753              : */
    1754              : 
    1755              : static void RepeatStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1756              : 
    1757              : /*
    1758              :    ForStatement := 'FOR' Ident ':=' Expression 'TO' 
    1759              :                    Expression [ 'BY' ConstExpression  ] 
    1760              :                    'DO' StatementSequence 'END' 
    1761              : 
    1762              :    first  symbols:fortok
    1763              :    
    1764              :    cannot reachend
    1765              : */
    1766              : 
    1767              : static void ForStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1768              : 
    1769              : /*
    1770              :    LoopStatement := 'LOOP' StatementSequence 'END' 
    1771              : 
    1772              :    first  symbols:looptok
    1773              :    
    1774              :    cannot reachend
    1775              : */
    1776              : 
    1777              : static void LoopStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1778              : 
    1779              : /*
    1780              :    WithStatement := 'WITH' Designator 'DO' StatementSequence 
    1781              :                     'END' 
    1782              : 
    1783              :    first  symbols:withtok
    1784              :    
    1785              :    cannot reachend
    1786              : */
    1787              : 
    1788              : static void WithStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1789              : 
    1790              : /*
    1791              :    ProcedureDeclaration := 
    1792              :                            % VAR top: CARDINAL ;  %
    1793              :                            
    1794              :                            % top := Top ()  %
    1795              :                            ProcedureHeading ';' PostProcedureHeading 
    1796              :                            
    1797              :                            % Assert (top = Top ())  %
    1798              :                            
    1799              : 
    1800              :    first  symbols:proceduretok
    1801              :    
    1802              :    cannot reachend
    1803              : */
    1804              : 
    1805              : static void ProcedureDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1806              : 
    1807              : /*
    1808              :    PostProcedureHeading := ProperProcedure  | 
    1809              :                            ForwardDeclaration 
    1810              : 
    1811              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok, forwardtok
    1812              :    
    1813              :    cannot reachend
    1814              : */
    1815              : 
    1816              : static void PostProcedureHeading (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1817              : 
    1818              : /*
    1819              :    ForwardDeclaration := 'FORWARD' 
    1820              :                          % PCEndBuildForward  %
    1821              :                          
    1822              : 
    1823              :    first  symbols:forwardtok
    1824              :    
    1825              :    cannot reachend
    1826              : */
    1827              : 
    1828              : static void ForwardDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1829              : 
    1830              : /*
    1831              :    ProperProcedure := ProcedureBlock 
    1832              :                       % PushAutoOn  %
    1833              :                       Ident 
    1834              :                       % PCEndBuildProcedure  %
    1835              :                       
    1836              :                       % PopAuto  %
    1837              :                       
    1838              : 
    1839              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok, begintok, endtok
    1840              :    
    1841              :    cannot reachend
    1842              : */
    1843              : 
    1844              : static void ProperProcedure (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1845              : 
    1846              : /*
    1847              :    DefineBuiltinProcedure := [ '__ATTRIBUTE__' '__BUILTIN__' 
    1848              :                                '(' '(' 
    1849              :                                % PushAutoOff  %
    1850              :                                Ident 
    1851              :                                % PopAuto  %
    1852              :                                ')' ')'  | 
    1853              :                                '__INLINE__'  ] 
    1854              : 
    1855              :    first  symbols:inlinetok, attributetok
    1856              :    
    1857              :    reachend
    1858              : */
    1859              : 
    1860              : static void DefineBuiltinProcedure (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1861              : 
    1862              : /*
    1863              :    ProcedureHeading := 'PROCEDURE' 
    1864              :                        % M2Error.DefaultProcedure  %
    1865              :                        
    1866              :                        % PushAutoOn  %
    1867              :                        DefineBuiltinProcedure ( Ident 
    1868              :                                                 
    1869              :                                                 % PCStartBuildProcedure  %
    1870              :                                                 
    1871              :                                                 % PushAutoOff  %
    1872              :                                                 [ FormalParameters  ] 
    1873              :                                                 AttributeNoReturn 
    1874              :                                                 
    1875              :                                                 % PCBuildProcedureHeading  %
    1876              :                                                 
    1877              :                                                 % PopAuto  %
    1878              :                                                  ) 
    1879              :                        
    1880              :                        % PopAuto  %
    1881              :                        
    1882              : 
    1883              :    first  symbols:proceduretok
    1884              :    
    1885              :    cannot reachend
    1886              : */
    1887              : 
    1888              : static void ProcedureHeading (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1889              : 
    1890              : /*
    1891              :    Builtin := [ '__BUILTIN__'  | '__INLINE__'  ] 
    1892              : 
    1893              :    first  symbols:inlinetok, builtintok
    1894              :    
    1895              :    reachend
    1896              : */
    1897              : 
    1898              : static void Builtin (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1899              : 
    1900              : /*
    1901              :    DefProcedureHeading := 'PROCEDURE' 
    1902              :                           % M2Error.DefaultProcedure  %
    1903              :                           
    1904              :                           % PushAutoOn  %
    1905              :                           Builtin ( Ident 
    1906              :                                     % PCStartBuildProcedure  %
    1907              :                                     
    1908              :                                     % PushAutoOff  %
    1909              :                                     [ DefFormalParameters  ] 
    1910              :                                     AttributeNoReturn 
    1911              :                                     
    1912              :                                     % PCBuildProcedureHeading  %
    1913              :                                     
    1914              :                                     % PopAuto  %
    1915              :                                      ) 
    1916              :                           % PopAuto  %
    1917              :                           
    1918              :                           % M2Error.LeaveErrorScope  %
    1919              :                           
    1920              : 
    1921              :    first  symbols:proceduretok
    1922              :    
    1923              :    cannot reachend
    1924              : */
    1925              : 
    1926              : static void DefProcedureHeading (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1927              : 
    1928              : /*
    1929              :    AttributeNoReturn := [ ''  ] 
    1930              : 
    1931              :    first  symbols:ldirectivetok
    1932              :    
    1933              :    reachend
    1934              : */
    1935              : 
    1936              : static void AttributeNoReturn (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1937              : 
    1938              : /*
    1939              :    AttributeUnused := [ ''  ] 
    1940              : 
    1941              :    first  symbols:ldirectivetok
    1942              :    
    1943              :    reachend
    1944              : */
    1945              : 
    1946              : static void AttributeUnused (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1947              : 
    1948              : /*
    1949              :    ProcedureBlock := 
    1950              :                      % VAR top: CARDINAL ;  %
    1951              :                      
    1952              :                      % top := Top()  %
    1953              :                      { Declaration 
    1954              :                        % Assert(top=Top())  %
    1955              :                         } [ 'BEGIN' ProcedureBlockBody 
    1956              :                             
    1957              :                             % Assert(top=Top())  %
    1958              :                              ] 'END' 
    1959              :                      % Assert(top=Top())  %
    1960              :                      
    1961              : 
    1962              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok
    1963              :    
    1964              :    cannot reachend
    1965              : */
    1966              : 
    1967              : static void ProcedureBlock (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1968              : 
    1969              : /*
    1970              :    Block := 
    1971              :             % VAR top: CARDINAL ;  %
    1972              :             
    1973              :             % top := Top()  %
    1974              :             { Declaration  } InitialBlock FinalBlock 
    1975              :             'END' 
    1976              :             % Assert(top=Top())  %
    1977              :             
    1978              : 
    1979              :    first  symbols:proceduretok, moduletok, finallytok, begintok, consttok, typetok, vartok, endtok
    1980              :    
    1981              :    cannot reachend
    1982              : */
    1983              : 
    1984              : static void Block (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1985              : 
    1986              : /*
    1987              :    InitialBlock := [ 'BEGIN' InitialBlockBody  ] 
    1988              : 
    1989              :    first  symbols:begintok
    1990              :    
    1991              :    reachend
    1992              : */
    1993              : 
    1994              : static void InitialBlock (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    1995              : 
    1996              : /*
    1997              :    FinalBlock := [ 'FINALLY' FinalBlockBody  ] 
    1998              : 
    1999              :    first  symbols:finallytok
    2000              :    
    2001              :    reachend
    2002              : */
    2003              : 
    2004              : static void FinalBlock (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2005              : 
    2006              : /*
    2007              :    InitialBlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    2008              : 
    2009              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    2010              :    
    2011              :    reachend
    2012              : */
    2013              : 
    2014              : static void InitialBlockBody (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2015              : 
    2016              : /*
    2017              :    FinalBlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    2018              : 
    2019              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    2020              :    
    2021              :    reachend
    2022              : */
    2023              : 
    2024              : static void FinalBlockBody (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2025              : 
    2026              : /*
    2027              :    ProcedureBlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    2028              : 
    2029              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    2030              :    
    2031              :    reachend
    2032              : */
    2033              : 
    2034              : static void ProcedureBlockBody (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2035              : 
    2036              : /*
    2037              :    NormalPart := StatementSequence 
    2038              : 
    2039              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    2040              :    
    2041              :    reachend
    2042              : */
    2043              : 
    2044              : static void NormalPart (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2045              : 
    2046              : /*
    2047              :    ExceptionalPart := StatementSequence 
    2048              : 
    2049              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    2050              :    
    2051              :    reachend
    2052              : */
    2053              : 
    2054              : static void ExceptionalPart (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2055              : 
    2056              : /*
    2057              :    Declaration := 'CONST' { ConstantDeclaration ';'  }  | 
    2058              :                   'TYPE' { TypeDeclaration ';'  }  | 
    2059              :                   'VAR' { VariableDeclaration ';'  }  | 
    2060              :                   ProcedureDeclaration ';'  | 
    2061              :                   ModuleDeclaration ';' 
    2062              : 
    2063              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok
    2064              :    
    2065              :    cannot reachend
    2066              : */
    2067              : 
    2068              : static void Declaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2069              : 
    2070              : /*
    2071              :    DefFormalParameters := '(' [ DefMultiFPSection  ] 
    2072              :                           ')' FormalReturn 
    2073              : 
    2074              :    first  symbols:lparatok
    2075              :    
    2076              :    cannot reachend
    2077              : */
    2078              : 
    2079              : static void DefFormalParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2080              : 
    2081              : /*
    2082              :    DefMultiFPSection := DefExtendedFP  | 
    2083              :                         FPSection [ ';' DefMultiFPSection  ] 
    2084              : 
    2085              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    2086              :    
    2087              :    cannot reachend
    2088              : */
    2089              : 
    2090              : static void DefMultiFPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2091              : 
    2092              : /*
    2093              :    FormalParameters := '(' [ MultiFPSection  ] ')' 
    2094              :                        FormalReturn 
    2095              : 
    2096              :    first  symbols:lparatok
    2097              :    
    2098              :    cannot reachend
    2099              : */
    2100              : 
    2101              : static void FormalParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2102              : 
    2103              : /*
    2104              :    MultiFPSection := ExtendedFP  | FPSection [ ';' 
    2105              :                                                MultiFPSection  ] 
    2106              : 
    2107              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    2108              :    
    2109              :    cannot reachend
    2110              : */
    2111              : 
    2112              : static void MultiFPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2113              : 
    2114              : /*
    2115              :    FPSection := NonVarFPSection  | 
    2116              :                 VarFPSection 
    2117              : 
    2118              :    first  symbols:vartok, identtok
    2119              :    
    2120              :    cannot reachend
    2121              : */
    2122              : 
    2123              : static void FPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2124              : 
    2125              : /*
    2126              :    DefExtendedFP := DefOptArg  | '...' 
    2127              : 
    2128              :    first  symbols:lsbratok, periodperiodperiodtok
    2129              :    
    2130              :    cannot reachend
    2131              : */
    2132              : 
    2133              : static void DefExtendedFP (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2134              : 
    2135              : /*
    2136              :    ExtendedFP := OptArg  | '...' 
    2137              : 
    2138              :    first  symbols:lsbratok, periodperiodperiodtok
    2139              :    
    2140              :    cannot reachend
    2141              : */
    2142              : 
    2143              : static void ExtendedFP (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2144              : 
    2145              : /*
    2146              :    VarFPSection := 'VAR' IdentList ':' FormalType [ 
    2147              :    AttributeUnused  ] 
    2148              : 
    2149              :    first  symbols:vartok
    2150              :    
    2151              :    cannot reachend
    2152              : */
    2153              : 
    2154              : static void VarFPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2155              : 
    2156              : /*
    2157              :    NonVarFPSection := IdentList ':' FormalType [ AttributeUnused  ] 
    2158              : 
    2159              :    first  symbols:identtok
    2160              :    
    2161              :    cannot reachend
    2162              : */
    2163              : 
    2164              : static void NonVarFPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2165              : 
    2166              : /*
    2167              :    OptArg := '[' Ident ':' FormalType [ '=' ConstExpression  ] 
    2168              :              ']' 
    2169              : 
    2170              :    first  symbols:lsbratok
    2171              :    
    2172              :    cannot reachend
    2173              : */
    2174              : 
    2175              : static void OptArg (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2176              : 
    2177              : /*
    2178              :    DefOptArg := '[' Ident ':' FormalType '=' ConstExpression 
    2179              :                 ']' 
    2180              : 
    2181              :    first  symbols:lsbratok
    2182              :    
    2183              :    cannot reachend
    2184              : */
    2185              : 
    2186              : static void DefOptArg (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2187              : 
    2188              : /*
    2189              :    FormalType := { 'ARRAY' 'OF'  } Qualident 
    2190              : 
    2191              :    first  symbols:identtok, arraytok
    2192              :    
    2193              :    cannot reachend
    2194              : */
    2195              : 
    2196              : static void FormalType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2197              : 
    2198              : /*
    2199              :    ModuleDeclaration := 'MODULE' 
    2200              :                         % VAR namet: CARDINAL ;  %
    2201              :                         
    2202              :                         % M2Error.DefaultInnerModule  %
    2203              :                         
    2204              :                         % PushAutoOn  %
    2205              :                         Ident 
    2206              :                         % PCStartBuildInnerModule  %
    2207              :                         
    2208              :                         % PushAutoOff  %
    2209              :                         [ Priority  ] ';' { Import 
    2210              :                                             
    2211              :                                             % PCBuildImportInnerModule  %
    2212              :                                              } [ Export  ] 
    2213              :                         Block 
    2214              :                         % PushAutoOn  %
    2215              :                         
    2216              :                         % namet := GetTokenNo ()  %
    2217              :                         Ident 
    2218              :                         % PCEndBuildInnerModule (namet)  %
    2219              :                         
    2220              :                         % PopAuto ; PopAuto ; PopAuto  %
    2221              :                         
    2222              : 
    2223              :    first  symbols:moduletok
    2224              :    
    2225              :    cannot reachend
    2226              : */
    2227              : 
    2228              : static void ModuleDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2229              : 
    2230              : /*
    2231              :    Priority := '[' ConstExpression ']' 
    2232              : 
    2233              :    first  symbols:lsbratok
    2234              :    
    2235              :    cannot reachend
    2236              : */
    2237              : 
    2238              : static void Priority (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2239              : 
    2240              : /*
    2241              :    Export := 'EXPORT' ( 'QUALIFIED' IdentList  | 
    2242              :                         'UNQUALIFIED' IdentList  | 
    2243              :                         IdentList  ) ';' 
    2244              : 
    2245              :    first  symbols:exporttok
    2246              :    
    2247              :    cannot reachend
    2248              : */
    2249              : 
    2250              : static void Export (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2251              : 
    2252              : /*
    2253              :    Import := 
    2254              :              % PushAutoOn  %
    2255              :              ( 'FROM' Ident 'IMPORT' IdentList ';'  | 
    2256              :                'IMPORT' 
    2257              :                % PushT(ImportTok)
    2258              :                                                                                                determines whether Ident or Module   %
    2259              :                IdentList ';'  ) 
    2260              :              % PopAuto  %
    2261              :              
    2262              : 
    2263              :    first  symbols:importtok, fromtok
    2264              :    
    2265              :    cannot reachend
    2266              : */
    2267              : 
    2268              : static void Import (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2269              : 
    2270              : /*
    2271              :    DefinitionModule := 'DEFINITION' 
    2272              :                        % VAR namet: CARDINAL ;  %
    2273              :                        
    2274              :                        % M2Error.DefaultDefinitionModule  %
    2275              :                        'MODULE' 
    2276              :                        % PushAutoOn  %
    2277              :                        [ 'FOR' string  ] Ident 
    2278              :                        % PCStartBuildDefModule ;
    2279              :                          PushAutoOff  %
    2280              :                        ';' { Import 
    2281              :                              % PCBuildImportOuterModule  %
    2282              :                               } [ Export  ] { Definition  } 
    2283              :                        'END' 
    2284              :                        % PushAutoOn  %
    2285              :                        
    2286              :                        % namet := GetTokenNo ()  %
    2287              :                        Ident 
    2288              :                        % PCEndBuildDefModule (namet)  %
    2289              :                        '.' 
    2290              :                        % PopAuto ; PopAuto ; PopAuto  %
    2291              :                        
    2292              : 
    2293              :    first  symbols:definitiontok
    2294              :    
    2295              :    cannot reachend
    2296              : */
    2297              : 
    2298              : static void DefinitionModule (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2299              : 
    2300              : /*
    2301              :    Definition := 'CONST' { ConstantDeclaration ';'  }  | 
    2302              :                  'TYPE' { Ident ( ';'  | '=' Type Alignment 
    2303              :                                   ';'  )  }  | 
    2304              :                  'VAR' { VariableDeclaration ';'  }  | 
    2305              :                  DefProcedureHeading ';' 
    2306              : 
    2307              :    first  symbols:proceduretok, vartok, typetok, consttok
    2308              :    
    2309              :    cannot reachend
    2310              : */
    2311              : 
    2312              : static void Definition (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2313              : 
    2314              : /*
    2315              :    AsmStatement := 'ASM' [ 'VOLATILE'  ] '(' AsmOperands 
    2316              :                    ')' 
    2317              : 
    2318              :    first  symbols:asmtok
    2319              :    
    2320              :    cannot reachend
    2321              : */
    2322              : 
    2323              : static void AsmStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2324              : 
    2325              : /*
    2326              :    NamedOperand := '[' Ident ']' 
    2327              : 
    2328              :    first  symbols:lsbratok
    2329              :    
    2330              :    cannot reachend
    2331              : */
    2332              : 
    2333              : static void NamedOperand (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2334              : 
    2335              : /*
    2336              :    AsmOperandName := [ NamedOperand  ] 
    2337              : 
    2338              :    first  symbols:lsbratok
    2339              :    
    2340              :    reachend
    2341              : */
    2342              : 
    2343              : static void AsmOperandName (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2344              : 
    2345              : /*
    2346              :    AsmOperands := ConstExpression [ ':' AsmList [ ':' 
    2347              :                                                   AsmList 
    2348              :                                                   [ 
    2349              :    ':' TrashList  ]  ]  ] 
    2350              : 
    2351              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    2352              :    
    2353              :    cannot reachend
    2354              : */
    2355              : 
    2356              : static void AsmOperands (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2357              : 
    2358              : /*
    2359              :    AsmList := [ AsmElement  ] { ',' AsmElement  } 
    2360              : 
    2361              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok, lsbratok, commatok
    2362              :    
    2363              :    reachend
    2364              : */
    2365              : 
    2366              : static void AsmList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2367              : 
    2368              : /*
    2369              :    AsmElement := AsmOperandName ConstExpression '(' 
    2370              :                  Expression ')' 
    2371              : 
    2372              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok, lsbratok
    2373              :    
    2374              :    cannot reachend
    2375              : */
    2376              : 
    2377              : static void AsmElement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2378              : 
    2379              : /*
    2380              :    TrashList := [ ConstExpression  ] { ',' ConstExpression  } 
    2381              : 
    2382              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok, commatok
    2383              :    
    2384              :    reachend
    2385              : */
    2386              : 
    2387              : static void TrashList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2);
    2388              : 
    2389            0 : static void ErrorString (DynamicStrings_String s)
    2390              : {
    2391            0 :   M2MetaError_MetaErrorStringT0 (M2LexBuf_GetTokenNo (), s);
    2392            0 :   seenError = true;
    2393            0 : }
    2394              : 
    2395            0 : static void ErrorArray (const char *a_, unsigned int _a_high)
    2396              : {
    2397            0 :   char a[_a_high+1];
    2398              : 
    2399              :   /* make a local copy of each unbounded array.  */
    2400            0 :   memcpy (a, a_, _a_high+1);
    2401              : 
    2402            0 :   ErrorString (DynamicStrings_InitString ((const char *) a, _a_high));
    2403            0 : }
    2404              : 
    2405           18 : static void ErrorArrayAt (const char *a_, unsigned int _a_high, unsigned int tok)
    2406              : {
    2407           18 :   char a[_a_high+1];
    2408              : 
    2409              :   /* make a local copy of each unbounded array.  */
    2410           18 :   memcpy (a, a_, _a_high+1);
    2411              : 
    2412           18 :   M2MetaError_MetaErrorStringT0 (tok, DynamicStrings_InitString ((const char *) a, _a_high));
    2413           18 : }
    2414              : 
    2415              : 
    2416              : /*
    2417              :    DescribeStop - issues a message explaining what tokens were expected
    2418              : */
    2419              : 
    2420            0 : static DynamicStrings_String DescribeStop (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    2421              : {
    2422            0 :   unsigned int n;
    2423            0 :   DynamicStrings_String str;
    2424            0 :   DynamicStrings_String message;
    2425              : 
    2426            0 :   n = 0;
    2427            0 :   message = DynamicStrings_InitString ((const char *) "", 0);
    2428            0 :   if ((((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2429              :     {
    2430            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kstring}", 10)));
    2431            0 :       n += 1;
    2432              :     }
    2433            0 :   if ((((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2434              :     {
    2435            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kreal number}", 15)));
    2436            0 :       n += 1;
    2437              :     }
    2438            0 :   if ((((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2439              :     {
    2440            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kidentifier}", 14)));
    2441            0 :       n += 1;
    2442              :     }
    2443            0 :   if ((((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2444              :     {
    2445            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kinteger number}", 18)));
    2446            0 :       n += 1;
    2447              :     }
    2448            0 :   if ((((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2449              :     {
    2450            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__INLINE__}", 14)));
    2451            0 :       n += 1;
    2452              :     }
    2453            0 :   if ((((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2454              :     {
    2455            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__BUILTIN__}", 15)));
    2456            0 :       n += 1;
    2457              :     }
    2458            0 :   if ((((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2459              :     {
    2460            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__ATTRIBUTE__}", 17)));
    2461            0 :       n += 1;
    2462              :     }
    2463            0 :   if ((((1 << (M2Reserved_filetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2464              :     {
    2465            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__FILE__}", 12)));
    2466            0 :       n += 1;
    2467              :     }
    2468            0 :   if ((((1 << (M2Reserved_linetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2469              :     {
    2470            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__LINE__}", 12)));
    2471            0 :       n += 1;
    2472              :     }
    2473            0 :   if ((((1 << (M2Reserved_datetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2474              :     {
    2475            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__DATE__}", 12)));
    2476            0 :       n += 1;
    2477              :     }
    2478            0 :   if ((((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2479              :     {
    2480            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K...}", 7)));
    2481            0 :       n += 1;
    2482              :     }
    2483            0 :   if ((((1 << (M2Reserved_volatiletok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2484              :     {
    2485            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KVOLATILE}", 12)));
    2486            0 :       n += 1;
    2487              :     }
    2488            0 :   if ((((1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2489              :     {
    2490            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KASM}", 7)));
    2491            0 :       n += 1;
    2492              :     }
    2493            0 :   if ((((1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2494              :     {
    2495            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KWITH}", 8)));
    2496            0 :       n += 1;
    2497              :     }
    2498            0 :   if ((((1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2499              :     {
    2500            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KWHILE}", 9)));
    2501            0 :       n += 1;
    2502              :     }
    2503            0 :   if ((((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2504              :     {
    2505            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KVAR}", 7)));
    2506            0 :       n += 1;
    2507              :     }
    2508            0 :   if ((((1 << (M2Reserved_untiltok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2509              :     {
    2510            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KUNTIL}", 9)));
    2511            0 :       n += 1;
    2512              :     }
    2513            0 :   if ((((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2514              :     {
    2515            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KTYPE}", 8)));
    2516            0 :       n += 1;
    2517              :     }
    2518            0 :   if ((((1 << (M2Reserved_totok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2519              :     {
    2520            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KTO}", 6)));
    2521            0 :       n += 1;
    2522              :     }
    2523            0 :   if ((((1 << (M2Reserved_thentok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2524              :     {
    2525            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KTHEN}", 8)));
    2526            0 :       n += 1;
    2527              :     }
    2528            0 :   if ((((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2529              :     {
    2530            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KSET}", 7)));
    2531            0 :       n += 1;
    2532              :     }
    2533            0 :   if ((((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2534              :     {
    2535            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KRETURN}", 10)));
    2536            0 :       n += 1;
    2537              :     }
    2538            0 :   if ((((1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2539              :     {
    2540            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KRETRY}", 9)));
    2541            0 :       n += 1;
    2542              :     }
    2543            0 :   if ((((1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2544              :     {
    2545            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KREPEAT}", 10)));
    2546            0 :       n += 1;
    2547              :     }
    2548            0 :   if ((((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2549              :     {
    2550            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KREM}", 7)));
    2551            0 :       n += 1;
    2552              :     }
    2553            0 :   if ((((1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2554              :     {
    2555            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KRECORD}", 10)));
    2556            0 :       n += 1;
    2557              :     }
    2558            0 :   if ((((1 << (M2Reserved_unqualifiedtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    2559              :     {
    2560            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KUNQUALIFIED}", 15)));
    2561            0 :       n += 1;
    2562              :     }
    2563            0 :   if ((((1 << (M2Reserved_qualifiedtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2564              :     {
    2565            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KQUALIFIED}", 13)));
    2566            0 :       n += 1;
    2567              :     }
    2568            0 :   if ((((1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2569              :     {
    2570            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KPROCEDURE}", 13)));
    2571            0 :       n += 1;
    2572              :     }
    2573            0 :   if ((((1 << (M2Reserved_pointertok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2574              :     {
    2575            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KPOINTER}", 11)));
    2576            0 :       n += 1;
    2577              :     }
    2578            0 :   if ((((1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2579              :     {
    2580            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KPACKEDSET}", 13)));
    2581            0 :       n += 1;
    2582              :     }
    2583            0 :   if ((((1 << (M2Reserved_ortok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2584              :     {
    2585            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KOR}", 6)));
    2586            0 :       n += 1;
    2587              :     }
    2588            0 :   if ((((1 << (M2Reserved_oftok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2589              :     {
    2590            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KOF}", 6)));
    2591            0 :       n += 1;
    2592              :     }
    2593            0 :   if ((((1 << (M2Reserved_nottok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2594              :     {
    2595            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KNOT}", 7)));
    2596            0 :       n += 1;
    2597              :     }
    2598            0 :   if ((((1 << (M2Reserved_moduletok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2599              :     {
    2600            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KMODULE}", 10)));
    2601            0 :       n += 1;
    2602              :     }
    2603            0 :   if ((((1 << (M2Reserved_modtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2604              :     {
    2605            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KMOD}", 7)));
    2606            0 :       n += 1;
    2607              :     }
    2608            0 :   if ((((1 << (M2Reserved_looptok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2609              :     {
    2610            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KLOOP}", 8)));
    2611            0 :       n += 1;
    2612              :     }
    2613            0 :   if ((((1 << (M2Reserved_intok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2614              :     {
    2615            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIN}", 6)));
    2616            0 :       n += 1;
    2617              :     }
    2618            0 :   if ((((1 << (M2Reserved_importtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2619              :     {
    2620            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIMPORT}", 10)));
    2621            0 :       n += 1;
    2622              :     }
    2623            0 :   if ((((1 << (M2Reserved_implementationtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2624              :     {
    2625            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIMPLEMENTATION}", 18)));
    2626            0 :       n += 1;
    2627              :     }
    2628            0 :   if ((((1 << (M2Reserved_iftok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2629              :     {
    2630            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIF}", 6)));
    2631            0 :       n += 1;
    2632              :     }
    2633            0 :   if ((((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2634              :     {
    2635            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFROM}", 8)));
    2636            0 :       n += 1;
    2637              :     }
    2638            0 :   if ((((1 << (M2Reserved_forwardtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2639              :     {
    2640            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFORWARD}", 11)));
    2641            0 :       n += 1;
    2642              :     }
    2643            0 :   if ((((1 << (M2Reserved_fortok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2644              :     {
    2645            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFOR}", 7)));
    2646            0 :       n += 1;
    2647              :     }
    2648            0 :   if ((((1 << (M2Reserved_finallytok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2649              :     {
    2650            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFINALLY}", 11)));
    2651            0 :       n += 1;
    2652              :     }
    2653            0 :   if ((((1 << (M2Reserved_exporttok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2654              :     {
    2655            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEXPORT}", 10)));
    2656            0 :       n += 1;
    2657              :     }
    2658            0 :   if ((((1 << (M2Reserved_exittok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2659              :     {
    2660            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEXIT}", 8)));
    2661            0 :       n += 1;
    2662              :     }
    2663            0 :   if ((((1 << (M2Reserved_excepttok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2664              :     {
    2665            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEXCEPT}", 10)));
    2666            0 :       n += 1;
    2667              :     }
    2668            0 :   if ((((1 << (M2Reserved_endtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2669              :     {
    2670            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEND}", 7)));
    2671            0 :       n += 1;
    2672              :     }
    2673            0 :   if ((((1 << (M2Reserved_elsiftok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2674              :     {
    2675            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KELSIF}", 9)));
    2676            0 :       n += 1;
    2677              :     }
    2678            0 :   if ((((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2679              :     {
    2680            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KELSE}", 8)));
    2681            0 :       n += 1;
    2682              :     }
    2683            0 :   if ((((1 << (M2Reserved_dotok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2684              :     {
    2685            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KDO}", 6)));
    2686            0 :       n += 1;
    2687              :     }
    2688            0 :   if ((((1 << (M2Reserved_divtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2689              :     {
    2690            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KDIV}", 7)));
    2691            0 :       n += 1;
    2692              :     }
    2693            0 :   if ((((1 << (M2Reserved_definitiontok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2694              :     {
    2695            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KDEFINITION}", 14)));
    2696            0 :       n += 1;
    2697              :     }
    2698            0 :   if ((((1 << (M2Reserved_consttok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2699              :     {
    2700            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KCONST}", 9)));
    2701            0 :       n += 1;
    2702              :     }
    2703            0 :   if ((((1 << (M2Reserved_casetok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2704              :     {
    2705            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KCASE}", 8)));
    2706            0 :       n += 1;
    2707              :     }
    2708            0 :   if ((((1 << (M2Reserved_bytok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2709              :     {
    2710            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KBY}", 6)));
    2711            0 :       n += 1;
    2712              :     }
    2713            0 :   if ((((1 << (M2Reserved_begintok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2714              :     {
    2715            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KBEGIN}", 9)));
    2716            0 :       n += 1;
    2717              :     }
    2718            0 :   if ((((1 << (M2Reserved_arraytok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2719              :     {
    2720            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KARRAY}", 9)));
    2721            0 :       n += 1;
    2722              :     }
    2723            0 :   if ((((1 << (M2Reserved_andtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2724              :     {
    2725            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KAND}", 7)));
    2726            0 :       n += 1;
    2727              :     }
    2728            0 :   if ((((1 << (M2Reserved_colontok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2729              :     {
    2730            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K:}", 5)));
    2731            0 :       n += 1;
    2732              :     }
    2733            0 :   if ((((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2734              :     {
    2735            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K..}", 6)));
    2736            0 :       n += 1;
    2737              :     }
    2738            0 :   if ((((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2739              :     {
    2740            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K*>}", 6)));
    2741            0 :       n += 1;
    2742              :     }
    2743            0 :   if ((((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2744              :     {
    2745            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<*}", 6)));
    2746            0 :       n += 1;
    2747              :     }
    2748            0 :   if ((((1 << (M2Reserved_greaterequaltok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2749              :     {
    2750            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K>=}", 6)));
    2751            0 :       n += 1;
    2752              :     }
    2753            0 :   if ((((1 << (M2Reserved_lessequaltok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2754              :     {
    2755            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<=}", 6)));
    2756            0 :       n += 1;
    2757              :     }
    2758            0 :   if ((((1 << (M2Reserved_lessgreatertok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2759              :     {
    2760            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<>}", 6)));
    2761            0 :       n += 1;
    2762              :     }
    2763            0 :   if ((((1 << (M2Reserved_hashtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2764              :     {
    2765            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K#}", 5)));
    2766            0 :       n += 1;
    2767              :     }
    2768            0 :   if ((((1 << (M2Reserved_equaltok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2769              :     {
    2770            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K=}", 5)));
    2771            0 :       n += 1;
    2772              :     }
    2773            0 :   if ((((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2774              :     {
    2775            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K^}", 5)));
    2776            0 :       n += 1;
    2777              :     }
    2778            0 :   if ((((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2779              :     {
    2780            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K;}", 5)));
    2781            0 :       n += 1;
    2782              :     }
    2783            0 :   if ((((1 << (M2Reserved_commatok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2784              :     {
    2785            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K,}", 5)));
    2786            0 :       n += 1;
    2787              :     }
    2788            0 :   if ((((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2789              :     {
    2790            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K.}", 5)));
    2791            0 :       n += 1;
    2792              :     }
    2793            0 :   if ((((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2794              :     {
    2795            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K&}", 5)));
    2796            0 :       n += 1;
    2797              :     }
    2798            0 :   if ((((1 << (M2Reserved_dividetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2799              :     {
    2800            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K/}", 5)));
    2801            0 :       n += 1;
    2802              :     }
    2803            0 :   if ((((1 << (M2Reserved_timestok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2804              :     {
    2805            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K*}", 5)));
    2806            0 :       n += 1;
    2807              :     }
    2808            0 :   if ((((1 << (M2Reserved_minustok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2809              :     {
    2810            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K-}", 5)));
    2811            0 :       n += 1;
    2812              :     }
    2813            0 :   if ((((1 << (M2Reserved_plustok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2814              :     {
    2815            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K+}", 5)));
    2816            0 :       n += 1;
    2817              :     }
    2818            0 :   if ((((1 << (M2Reserved_doublequotestok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2819              :     {
    2820            0 :       message = DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (message, ' '), '`'), '"'), '\''), ',');
    2821            0 :       n += 1;
    2822              :     }
    2823            0 :   if ((((1 << (M2Reserved_singlequotetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2824              :     {
    2825            0 :       message = DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (message, ' '), '"'), '\''), '"'), ',');
    2826            0 :       n += 1;
    2827              :     }
    2828            0 :   if ((((1 << (M2Reserved_greatertok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2829              :     {
    2830            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K>}", 5)));
    2831            0 :       n += 1;
    2832              :     }
    2833            0 :   if ((((1 << (M2Reserved_lesstok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2834              :     {
    2835            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<}", 5)));
    2836            0 :       n += 1;
    2837              :     }
    2838            0 :   if ((((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2839              :     {
    2840            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K)}", 5)));
    2841            0 :       n += 1;
    2842              :     }
    2843            0 :   if ((((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2844              :     {
    2845            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K(}", 5)));
    2846            0 :       n += 1;
    2847              :     }
    2848            0 :   if ((((1 << (M2Reserved_rcbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2849              :     {
    2850            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K%}}", 6)));
    2851            0 :       n += 1;
    2852              :     }
    2853            0 :   if ((((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2854              :     {
    2855            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K%{}", 6)));
    2856            0 :       n += 1;
    2857              :     }
    2858            0 :   if ((((1 << (M2Reserved_rsbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2859              :     {
    2860            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K]}", 5)));
    2861            0 :       n += 1;
    2862              :     }
    2863            0 :   if ((((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2864              :     {
    2865            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K[}", 5)));
    2866            0 :       n += 1;
    2867              :     }
    2868            0 :   if ((((1 << (M2Reserved_bartok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2869              :     {
    2870            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K|}", 5)));
    2871            0 :       n += 1;
    2872              :     }
    2873            0 :   if ((((1 << (M2Reserved_becomestok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2874              :     {
    2875            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K:=}", 6)));
    2876            0 :       n += 1;
    2877              :     }
    2878            0 :   if ((((1 << (M2Reserved_eoftok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2879              :     {}  /* empty.  */
    2880              :   /* eoftok has no token name (needed to generate error messages)  */
    2881            0 :   if (n == 0)
    2882              :     {
    2883            0 :       str = DynamicStrings_InitString ((const char *) " syntax error", 13);
    2884            0 :       message = DynamicStrings_KillString (message);
    2885              :     }
    2886            0 :   else if (n == 1)
    2887              :     {
    2888              :       /* avoid dangling else.  */
    2889            0 :       str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) " missing ", 9)));
    2890              :     }
    2891              :   else
    2892              :     {
    2893              :       /* avoid dangling else.  */
    2894            0 :       str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) " expecting one of", 17), message);
    2895            0 :       message = DynamicStrings_KillString (message);
    2896              :     }
    2897            0 :   return str;
    2898              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    2899              :   __builtin_unreachable ();
    2900              : }
    2901              : 
    2902              : 
    2903              : /*
    2904              :    DescribeError - issues a message explaining what tokens were expected
    2905              : */
    2906              : 
    2907            0 : static void DescribeError (void)
    2908              : {
    2909            0 :   DynamicStrings_String str;
    2910              : 
    2911            0 :   str = DynamicStrings_InitString ((const char *) "", 0);
    2912            0 :   switch (M2LexBuf_currenttoken)
    2913              :     {
    2914            0 :       case M2Reserved_stringtok:
    2915            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kstring}", 30), DynamicStrings_Mark (str));
    2916            0 :         break;
    2917              : 
    2918            0 :       case M2Reserved_realtok:
    2919            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kreal number}", 35), DynamicStrings_Mark (str));
    2920            0 :         break;
    2921              : 
    2922            0 :       case M2Reserved_identtok:
    2923            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kidentifier}", 34), DynamicStrings_Mark (str));
    2924            0 :         break;
    2925              : 
    2926            0 :       case M2Reserved_integertok:
    2927            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kinteger number}", 38), DynamicStrings_Mark (str));
    2928            0 :         break;
    2929              : 
    2930            0 :       case M2Reserved_inlinetok:
    2931            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__INLINE__}", 34), DynamicStrings_Mark (str));
    2932            0 :         break;
    2933              : 
    2934            0 :       case M2Reserved_builtintok:
    2935            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__BUILTIN__}", 35), DynamicStrings_Mark (str));
    2936            0 :         break;
    2937              : 
    2938            0 :       case M2Reserved_attributetok:
    2939            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__ATTRIBUTE__}", 37), DynamicStrings_Mark (str));
    2940            0 :         break;
    2941              : 
    2942            0 :       case M2Reserved_filetok:
    2943            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__FILE__}", 32), DynamicStrings_Mark (str));
    2944            0 :         break;
    2945              : 
    2946            0 :       case M2Reserved_linetok:
    2947            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__LINE__}", 32), DynamicStrings_Mark (str));
    2948            0 :         break;
    2949              : 
    2950            0 :       case M2Reserved_datetok:
    2951            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__DATE__}", 32), DynamicStrings_Mark (str));
    2952            0 :         break;
    2953              : 
    2954            0 :       case M2Reserved_periodperiodperiodtok:
    2955            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K...}", 27), DynamicStrings_Mark (str));
    2956            0 :         break;
    2957              : 
    2958            0 :       case M2Reserved_volatiletok:
    2959            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KVOLATILE}", 32), DynamicStrings_Mark (str));
    2960            0 :         break;
    2961              : 
    2962            0 :       case M2Reserved_asmtok:
    2963            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KASM}", 27), DynamicStrings_Mark (str));
    2964            0 :         break;
    2965              : 
    2966            0 :       case M2Reserved_withtok:
    2967            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KWITH}", 28), DynamicStrings_Mark (str));
    2968            0 :         break;
    2969              : 
    2970            0 :       case M2Reserved_whiletok:
    2971            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KWHILE}", 29), DynamicStrings_Mark (str));
    2972            0 :         break;
    2973              : 
    2974            0 :       case M2Reserved_vartok:
    2975            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KVAR}", 27), DynamicStrings_Mark (str));
    2976            0 :         break;
    2977              : 
    2978            0 :       case M2Reserved_untiltok:
    2979            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KUNTIL}", 29), DynamicStrings_Mark (str));
    2980            0 :         break;
    2981              : 
    2982            0 :       case M2Reserved_typetok:
    2983            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KTYPE}", 28), DynamicStrings_Mark (str));
    2984            0 :         break;
    2985              : 
    2986            0 :       case M2Reserved_totok:
    2987            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KTO}", 26), DynamicStrings_Mark (str));
    2988            0 :         break;
    2989              : 
    2990            0 :       case M2Reserved_thentok:
    2991            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KTHEN}", 28), DynamicStrings_Mark (str));
    2992            0 :         break;
    2993              : 
    2994            0 :       case M2Reserved_settok:
    2995            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KSET}", 27), DynamicStrings_Mark (str));
    2996            0 :         break;
    2997              : 
    2998            0 :       case M2Reserved_returntok:
    2999            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KRETURN}", 30), DynamicStrings_Mark (str));
    3000            0 :         break;
    3001              : 
    3002            0 :       case M2Reserved_retrytok:
    3003            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KRETRY}", 29), DynamicStrings_Mark (str));
    3004            0 :         break;
    3005              : 
    3006            0 :       case M2Reserved_repeattok:
    3007            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KREPEAT}", 30), DynamicStrings_Mark (str));
    3008            0 :         break;
    3009              : 
    3010            0 :       case M2Reserved_remtok:
    3011            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KREM}", 27), DynamicStrings_Mark (str));
    3012            0 :         break;
    3013              : 
    3014            0 :       case M2Reserved_recordtok:
    3015            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KRECORD}", 30), DynamicStrings_Mark (str));
    3016            0 :         break;
    3017              : 
    3018            0 :       case M2Reserved_unqualifiedtok:
    3019            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KUNQUALIFIED}", 35), DynamicStrings_Mark (str));
    3020            0 :         break;
    3021              : 
    3022            0 :       case M2Reserved_qualifiedtok:
    3023            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KQUALIFIED}", 33), DynamicStrings_Mark (str));
    3024            0 :         break;
    3025              : 
    3026            0 :       case M2Reserved_proceduretok:
    3027            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KPROCEDURE}", 33), DynamicStrings_Mark (str));
    3028            0 :         break;
    3029              : 
    3030            0 :       case M2Reserved_pointertok:
    3031            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KPOINTER}", 31), DynamicStrings_Mark (str));
    3032            0 :         break;
    3033              : 
    3034            0 :       case M2Reserved_packedsettok:
    3035            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KPACKEDSET}", 33), DynamicStrings_Mark (str));
    3036            0 :         break;
    3037              : 
    3038            0 :       case M2Reserved_ortok:
    3039            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KOR}", 26), DynamicStrings_Mark (str));
    3040            0 :         break;
    3041              : 
    3042            0 :       case M2Reserved_oftok:
    3043            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KOF}", 26), DynamicStrings_Mark (str));
    3044            0 :         break;
    3045              : 
    3046            0 :       case M2Reserved_nottok:
    3047            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KNOT}", 27), DynamicStrings_Mark (str));
    3048            0 :         break;
    3049              : 
    3050            0 :       case M2Reserved_moduletok:
    3051            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KMODULE}", 30), DynamicStrings_Mark (str));
    3052            0 :         break;
    3053              : 
    3054            0 :       case M2Reserved_modtok:
    3055            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KMOD}", 27), DynamicStrings_Mark (str));
    3056            0 :         break;
    3057              : 
    3058            0 :       case M2Reserved_looptok:
    3059            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KLOOP}", 28), DynamicStrings_Mark (str));
    3060            0 :         break;
    3061              : 
    3062            0 :       case M2Reserved_intok:
    3063            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIN}", 26), DynamicStrings_Mark (str));
    3064            0 :         break;
    3065              : 
    3066            0 :       case M2Reserved_importtok:
    3067            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIMPORT}", 30), DynamicStrings_Mark (str));
    3068            0 :         break;
    3069              : 
    3070            0 :       case M2Reserved_implementationtok:
    3071            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIMPLEMENTATION}", 38), DynamicStrings_Mark (str));
    3072            0 :         break;
    3073              : 
    3074            0 :       case M2Reserved_iftok:
    3075            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIF}", 26), DynamicStrings_Mark (str));
    3076            0 :         break;
    3077              : 
    3078            0 :       case M2Reserved_fromtok:
    3079            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFROM}", 28), DynamicStrings_Mark (str));
    3080            0 :         break;
    3081              : 
    3082            0 :       case M2Reserved_forwardtok:
    3083            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFORWARD}", 31), DynamicStrings_Mark (str));
    3084            0 :         break;
    3085              : 
    3086            0 :       case M2Reserved_fortok:
    3087            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFOR}", 27), DynamicStrings_Mark (str));
    3088            0 :         break;
    3089              : 
    3090            0 :       case M2Reserved_finallytok:
    3091            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFINALLY}", 31), DynamicStrings_Mark (str));
    3092            0 :         break;
    3093              : 
    3094            0 :       case M2Reserved_exporttok:
    3095            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEXPORT}", 30), DynamicStrings_Mark (str));
    3096            0 :         break;
    3097              : 
    3098            0 :       case M2Reserved_exittok:
    3099            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEXIT}", 28), DynamicStrings_Mark (str));
    3100            0 :         break;
    3101              : 
    3102            0 :       case M2Reserved_excepttok:
    3103            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEXCEPT}", 30), DynamicStrings_Mark (str));
    3104            0 :         break;
    3105              : 
    3106            0 :       case M2Reserved_endtok:
    3107            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEND}", 27), DynamicStrings_Mark (str));
    3108            0 :         break;
    3109              : 
    3110            0 :       case M2Reserved_elsiftok:
    3111            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KELSIF}", 29), DynamicStrings_Mark (str));
    3112            0 :         break;
    3113              : 
    3114            0 :       case M2Reserved_elsetok:
    3115            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KELSE}", 28), DynamicStrings_Mark (str));
    3116            0 :         break;
    3117              : 
    3118            0 :       case M2Reserved_dotok:
    3119            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KDO}", 26), DynamicStrings_Mark (str));
    3120            0 :         break;
    3121              : 
    3122            0 :       case M2Reserved_divtok:
    3123            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KDIV}", 27), DynamicStrings_Mark (str));
    3124            0 :         break;
    3125              : 
    3126            0 :       case M2Reserved_definitiontok:
    3127            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KDEFINITION}", 34), DynamicStrings_Mark (str));
    3128            0 :         break;
    3129              : 
    3130            0 :       case M2Reserved_consttok:
    3131            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KCONST}", 29), DynamicStrings_Mark (str));
    3132            0 :         break;
    3133              : 
    3134            0 :       case M2Reserved_casetok:
    3135            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KCASE}", 28), DynamicStrings_Mark (str));
    3136            0 :         break;
    3137              : 
    3138            0 :       case M2Reserved_bytok:
    3139            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KBY}", 26), DynamicStrings_Mark (str));
    3140            0 :         break;
    3141              : 
    3142            0 :       case M2Reserved_begintok:
    3143            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KBEGIN}", 29), DynamicStrings_Mark (str));
    3144            0 :         break;
    3145              : 
    3146            0 :       case M2Reserved_arraytok:
    3147            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KARRAY}", 29), DynamicStrings_Mark (str));
    3148            0 :         break;
    3149              : 
    3150            0 :       case M2Reserved_andtok:
    3151            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KAND}", 27), DynamicStrings_Mark (str));
    3152            0 :         break;
    3153              : 
    3154            0 :       case M2Reserved_colontok:
    3155            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K:}", 25), DynamicStrings_Mark (str));
    3156            0 :         break;
    3157              : 
    3158            0 :       case M2Reserved_periodperiodtok:
    3159            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K..}", 26), DynamicStrings_Mark (str));
    3160            0 :         break;
    3161              : 
    3162            0 :       case M2Reserved_rdirectivetok:
    3163            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K*>}", 26), DynamicStrings_Mark (str));
    3164            0 :         break;
    3165              : 
    3166            0 :       case M2Reserved_ldirectivetok:
    3167            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<*}", 26), DynamicStrings_Mark (str));
    3168            0 :         break;
    3169              : 
    3170            0 :       case M2Reserved_greaterequaltok:
    3171            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K>=}", 26), DynamicStrings_Mark (str));
    3172            0 :         break;
    3173              : 
    3174            0 :       case M2Reserved_lessequaltok:
    3175            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<=}", 26), DynamicStrings_Mark (str));
    3176            0 :         break;
    3177              : 
    3178            0 :       case M2Reserved_lessgreatertok:
    3179            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<>}", 26), DynamicStrings_Mark (str));
    3180            0 :         break;
    3181              : 
    3182            0 :       case M2Reserved_hashtok:
    3183            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K#}", 25), DynamicStrings_Mark (str));
    3184            0 :         break;
    3185              : 
    3186            0 :       case M2Reserved_equaltok:
    3187            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K=}", 25), DynamicStrings_Mark (str));
    3188            0 :         break;
    3189              : 
    3190            0 :       case M2Reserved_uparrowtok:
    3191            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K^}", 25), DynamicStrings_Mark (str));
    3192            0 :         break;
    3193              : 
    3194            0 :       case M2Reserved_semicolontok:
    3195            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K;}", 25), DynamicStrings_Mark (str));
    3196            0 :         break;
    3197              : 
    3198            0 :       case M2Reserved_commatok:
    3199            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K,}", 25), DynamicStrings_Mark (str));
    3200            0 :         break;
    3201              : 
    3202            0 :       case M2Reserved_periodtok:
    3203            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K.}", 25), DynamicStrings_Mark (str));
    3204            0 :         break;
    3205              : 
    3206            0 :       case M2Reserved_ambersandtok:
    3207            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K&}", 25), DynamicStrings_Mark (str));
    3208            0 :         break;
    3209              : 
    3210            0 :       case M2Reserved_dividetok:
    3211            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K/}", 25), DynamicStrings_Mark (str));
    3212            0 :         break;
    3213              : 
    3214            0 :       case M2Reserved_timestok:
    3215            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K*}", 25), DynamicStrings_Mark (str));
    3216            0 :         break;
    3217              : 
    3218            0 :       case M2Reserved_minustok:
    3219            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K-}", 25), DynamicStrings_Mark (str));
    3220            0 :         break;
    3221              : 
    3222            0 :       case M2Reserved_plustok:
    3223            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K+}", 25), DynamicStrings_Mark (str));
    3224            0 :         break;
    3225              : 
    3226            0 :       case M2Reserved_doublequotestok:
    3227            0 :         str = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_InitString ((const char *) "syntax error, found '", 21), '"'), '\''), DynamicStrings_Mark (str));
    3228            0 :         break;
    3229              : 
    3230            0 :       case M2Reserved_singlequotetok:
    3231            0 :         str = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_InitString ((const char *) "syntax error, found \"", 21), '\''), '"'), DynamicStrings_Mark (str));
    3232            0 :         break;
    3233              : 
    3234            0 :       case M2Reserved_greatertok:
    3235            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K>}", 25), DynamicStrings_Mark (str));
    3236            0 :         break;
    3237              : 
    3238            0 :       case M2Reserved_lesstok:
    3239            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<}", 25), DynamicStrings_Mark (str));
    3240            0 :         break;
    3241              : 
    3242            0 :       case M2Reserved_rparatok:
    3243            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K)}", 25), DynamicStrings_Mark (str));
    3244            0 :         break;
    3245              : 
    3246            0 :       case M2Reserved_lparatok:
    3247            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K(}", 25), DynamicStrings_Mark (str));
    3248            0 :         break;
    3249              : 
    3250            0 :       case M2Reserved_rcbratok:
    3251            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K%}}", 26), DynamicStrings_Mark (str));
    3252            0 :         break;
    3253              : 
    3254            0 :       case M2Reserved_lcbratok:
    3255            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K%{}", 26), DynamicStrings_Mark (str));
    3256            0 :         break;
    3257              : 
    3258            0 :       case M2Reserved_rsbratok:
    3259            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K]}", 25), DynamicStrings_Mark (str));
    3260            0 :         break;
    3261              : 
    3262            0 :       case M2Reserved_lsbratok:
    3263            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K[}", 25), DynamicStrings_Mark (str));
    3264            0 :         break;
    3265              : 
    3266            0 :       case M2Reserved_bartok:
    3267            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K|}", 25), DynamicStrings_Mark (str));
    3268            0 :         break;
    3269              : 
    3270            0 :       case M2Reserved_becomestok:
    3271            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K:=}", 26), DynamicStrings_Mark (str));
    3272            0 :         break;
    3273              : 
    3274            0 :       case M2Reserved_eoftok:
    3275            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K}", 24), DynamicStrings_Mark (str));
    3276            0 :         break;
    3277              : 
    3278              : 
    3279              :       default:
    3280              :         break;
    3281              :     }
    3282            0 :   ErrorString (str);
    3283            0 : }
    3284              : 
    3285              : 
    3286              : /*
    3287              :    SyntaxError - after a syntax error we skip all tokens up until we reach
    3288              :                  a stop symbol.
    3289              : */
    3290              : 
    3291            0 : static void SyntaxError (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3292              : {
    3293            0 :   DescribeError ();
    3294            0 :   if (Debugging)
    3295              :     {
    3296              :       M2Printf_printf0 ((const char *) "\\nskipping token *** ", 21);
    3297              :     }
    3298              :   /* --fixme-- this assumes a 32 bit word size.  */
    3299            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)))))
    3300              :     {
    3301            0 :       M2LexBuf_GetToken ();
    3302              :     }
    3303            0 :   if (Debugging)
    3304              :     {
    3305              :       M2Printf_printf0 ((const char *) " ***\\n", 6);
    3306              :     }
    3307            0 : }
    3308              : 
    3309              : 
    3310              : /*
    3311              :    SyntaxCheck -
    3312              : */
    3313              : 
    3314    191178955 : static void SyntaxCheck (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3315              : {
    3316              :   /* --fixme-- this assumes a 32 bit word size.  */
    3317    191178955 :   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)))))
    3318              :     {
    3319            0 :       SyntaxError (stopset0, stopset1, stopset2);
    3320              :     }
    3321    191178955 : }
    3322              : 
    3323              : 
    3324              : /*
    3325              :    WarnMissingToken - generates a warning message about a missing token, t.
    3326              : */
    3327              : 
    3328            0 : static void WarnMissingToken (M2Reserved_toktype t)
    3329              : {
    3330            0 :   PCBuild_SetOfStop0 s0;
    3331            0 :   PCBuild_SetOfStop1 s1;
    3332            0 :   PCBuild_SetOfStop2 s2;
    3333            0 :   DynamicStrings_String str;
    3334              : 
    3335            0 :   s0 = (PCBuild_SetOfStop0) 0;
    3336            0 :   s1 = (PCBuild_SetOfStop1) 0;
    3337            0 :   s2 = (PCBuild_SetOfStop2) 0;
    3338            0 :   if ( ((unsigned int) (t)) < 32)
    3339              :     {
    3340            0 :       s0 = (PCBuild_SetOfStop0) ((1 << (t-M2Reserved_eoftok)));
    3341              :     }
    3342            0 :   else if ( ((unsigned int) (t)) < 64)
    3343              :     {
    3344              :       /* avoid dangling else.  */
    3345            0 :       s1 = (PCBuild_SetOfStop1) ((1 << (t-M2Reserved_arraytok)));
    3346              :     }
    3347              :   else
    3348              :     {
    3349              :       /* avoid dangling else.  */
    3350            0 :       s2 = (PCBuild_SetOfStop2) ((1 << (t-M2Reserved_unqualifiedtok)));
    3351              :     }
    3352            0 :   str = DescribeStop (s0, s1, s2);
    3353            0 :   str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error,", 13), DynamicStrings_Mark (str));
    3354            0 :   M2MetaError_MetaErrorStringT0 (M2LexBuf_GetTokenNo (), str);
    3355            0 : }
    3356              : 
    3357              : 
    3358              : /*
    3359              :    MissingToken - generates a warning message about a missing token, t.
    3360              : */
    3361              : 
    3362            0 : static void MissingToken (M2Reserved_toktype t)
    3363              : {
    3364            0 :   WarnMissingToken (t);
    3365            0 :   if ((((t != M2Reserved_identtok) && (t != M2Reserved_integertok)) && (t != M2Reserved_realtok)) && (t != M2Reserved_stringtok))
    3366              :     {
    3367            0 :       if (Debugging)
    3368              :         {
    3369              :           M2Printf_printf0 ((const char *) "inserting token\\n", 17);
    3370              :         }
    3371            0 :       M2LexBuf_InsertToken (t);
    3372              :     }
    3373            0 : }
    3374              : 
    3375              : 
    3376              : /*
    3377              :    CheckAndInsert -
    3378              : */
    3379              : 
    3380            0 : static bool CheckAndInsert (M2Reserved_toktype t, PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3381              : {
    3382            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))))
    3383              :     {
    3384            0 :       WarnMissingToken (t);
    3385            0 :       M2LexBuf_InsertTokenAndRewind (t);
    3386            0 :       return true;
    3387              :     }
    3388              :   else
    3389              :     {
    3390              :       return false;
    3391              :     }
    3392              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    3393              :   __builtin_unreachable ();
    3394              : }
    3395              : 
    3396              : 
    3397              : /*
    3398              :    InStopSet
    3399              : */
    3400              : 
    3401            0 : static bool InStopSet (M2Reserved_toktype t, PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3402              : {
    3403            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))))
    3404              :     {
    3405              :       return true;
    3406              :     }
    3407              :   else
    3408              :     {
    3409            0 :       return false;
    3410              :     }
    3411              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    3412              :   __builtin_unreachable ();
    3413              : }
    3414              : 
    3415              : 
    3416              : /*
    3417              :    PeepToken - peep token checks to see whether the stopset is satisfied by currenttoken
    3418              :                If it is not then it will insert a token providing the token
    3419              :                is one of ; ] ) } . OF END ,
    3420              : 
    3421              :                if the stopset contains <identtok> then we do not insert a token
    3422              : */
    3423              : 
    3424            0 : static void PeepToken (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3425              : {
    3426              :   /* and again (see above re: ORD)
    3427              :   */
    3428            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))))
    3429              :     {
    3430              :       /* SyntaxCheck would fail since currentoken is not part of the stopset
    3431              :          we check to see whether any of currenttoken might be a commonly omitted token  */
    3432            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)))
    3433              :         {}  /* empty.  */
    3434              :     }
    3435            0 : }
    3436              : 
    3437              : 
    3438              : /*
    3439              :    Expect -
    3440              : */
    3441              : 
    3442    191178955 : static void Expect (M2Reserved_toktype t, PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3443              : {
    3444    191178955 :   if (M2LexBuf_currenttoken == t)
    3445              :     {
    3446              :       /* avoid dangling else.  */
    3447    191178955 :       M2LexBuf_GetToken ();
    3448    191178955 :       if (Pass1)
    3449              :         {
    3450              :           PeepToken (stopset0, stopset1, stopset2);
    3451              :         }
    3452              :     }
    3453              :   else
    3454              :     {
    3455            0 :       MissingToken (t);
    3456              :     }
    3457    191178955 :   SyntaxCheck (stopset0, stopset1, stopset2);
    3458    191178955 : }
    3459              : 
    3460              : 
    3461              : /*
    3462              :    Ident - error checking varient of Ident
    3463              : */
    3464              : 
    3465     70127899 : static void Ident (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3466              : {
    3467     70127899 :   if (M2Quads_IsAutoPushOn ())
    3468              :     {
    3469     31729026 :       M2Quads_PushTFtok (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_identtok), M2LexBuf_GetTokenNo ());
    3470              :     }
    3471     70127899 :   Expect (M2Reserved_identtok, stopset0, stopset1, stopset2);
    3472     70127899 : }
    3473              : 
    3474              : 
    3475              : /*
    3476              :    string -
    3477              : */
    3478              : 
    3479      1696026 : static void string (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3480              : {
    3481      1696026 :   if (M2Quads_IsAutoPushOn ())
    3482              :     {
    3483        63639 :       M2Quads_PushTF (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_stringtok));
    3484        63639 :       P2SymBuild_BuildString ();
    3485              :     }
    3486      1696026 :   Expect (M2Reserved_stringtok, stopset0, stopset1, stopset2);
    3487      1696026 : }
    3488              : 
    3489              : 
    3490              : /*
    3491              :    Integer -
    3492              : */
    3493              : 
    3494      2731478 : static void Integer (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3495              : {
    3496      2731478 :   if (M2Quads_IsAutoPushOn ())
    3497              :     {
    3498       367160 :       M2Quads_PushTFtok (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_integertok), M2LexBuf_GetTokenNo ());
    3499       367160 :       P2SymBuild_BuildNumber ();
    3500              :     }
    3501      2731478 :   Expect (M2Reserved_integertok, stopset0, stopset1, stopset2);
    3502      2731478 : }
    3503              : 
    3504              : 
    3505              : /*
    3506              :    Real -
    3507              : */
    3508              : 
    3509        28940 : static void Real (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3510              : {
    3511        28940 :   if (M2Quads_IsAutoPushOn ())
    3512              :     {
    3513         2772 :       M2Quads_PushTFtok (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_realtok), M2LexBuf_GetTokenNo ());
    3514         2772 :       P2SymBuild_BuildNumber ();
    3515              :     }
    3516        28940 :   Expect (M2Reserved_realtok, stopset0, stopset1, stopset2);
    3517        28940 : }
    3518              : 
    3519              : 
    3520              : /*
    3521              :    PushTFQualident - push the result of the Qualident
    3522              :                      to the stack.  It checks to see if init
    3523              :                      is a procedure or proc type and if so
    3524              :                      it does not push the return type.
    3525              : */
    3526              : 
    3527          360 : static void PushTFQualident (unsigned int tok, unsigned int tokstart, unsigned int init)
    3528              : {
    3529          360 :   if (tok != tokstart)
    3530              :     {
    3531            0 :       tok = M2LexBuf_MakeVirtualTok (tokstart, tokstart, tok);
    3532              :     }
    3533          360 :   if ((SymbolTable_IsProcedure (init)) || (SymbolTable_IsProcType (init)))
    3534              :     {
    3535            0 :       M2Quads_PushTtok (init, tok);
    3536            0 :       M2Quads_Annotate ((const char *) "%1s(%1d)||qualident procedure/proctype", 38);
    3537              :     }
    3538              :   else
    3539              :     {
    3540          360 :       M2Quads_Annotate ((const char *) "%1s(%1d)|%1s(%1d)||qualident|type", 33);
    3541          360 :       M2Quads_PushTFtok (init, SymbolTable_GetType (init), tok);
    3542              :     }
    3543          360 : }
    3544              : 
    3545              : 
    3546              : /*
    3547              :    CheckModuleQualident - check to see if the beginning ident of the qualident is an
    3548              :                           imported module.
    3549              : */
    3550              : 
    3551          360 : static void CheckModuleQualident (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3552              : {
    3553          360 :   NameKey_Name name;
    3554          360 :   unsigned int init;
    3555          360 :   unsigned int nextLevel;
    3556          360 :   unsigned int tok;
    3557          360 :   unsigned int tokstart;
    3558              : 
    3559          360 :   M2Quads_PopTtok (&name, &tokstart);
    3560          360 :   tok = tokstart;
    3561          360 :   init = SymbolTable_RequestSym (tok, name);
    3562          360 :   if ((SymbolTable_IsImported (SymbolTable_GetCurrentModule (), init)) && ((SymbolTable_IsDefImp (init)) || (SymbolTable_IsModule (init))))
    3563              :     {
    3564            0 :       while ((SymbolTable_IsDefImp (init)) || (SymbolTable_IsModule (init)))
    3565              :         {
    3566            0 :           Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3567            0 :           SymbolTable_StartScope (init);
    3568            0 :           Ident (stopset0, stopset1, stopset2);
    3569            0 :           M2Quads_PopTtok (&name, &tok);
    3570            0 :           nextLevel = SymbolTable_RequestSym (tok, name);
    3571            0 :           SymbolTable_EndScope ();
    3572            0 :           P3SymBuild_CheckCanBeImported (init, nextLevel);
    3573            0 :           init = nextLevel;
    3574              :         }
    3575            0 :       PushTFQualident (tok, tokstart, init);
    3576            0 :       SymbolTable_PutIncluded (init);
    3577              :     }
    3578              :   else
    3579              :     {
    3580          360 :       PushTFQualident (tok, tokstart, init);
    3581              :     }
    3582          360 : }
    3583              : 
    3584              : 
    3585              : /*
    3586              :    FileUnit := 
    3587              :                % PushAutoOff  %
    3588              :                ( DefinitionModule  | 
    3589              :                  ImplementationOrProgramModule  ) 
    3590              :                % PopAuto  %
    3591              :                
    3592              : 
    3593              :    first  symbols:implementationtok, moduletok, definitiontok
    3594              :    
    3595              :    cannot reachend
    3596              : */
    3597              : 
    3598       243200 : static void FileUnit (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3599              : {
    3600       243200 :   M2Quads_PushAutoOff ();
    3601       243200 :   if (M2LexBuf_currenttoken == M2Reserved_definitiontok)
    3602              :     {
    3603       160778 :       DefinitionModule (stopset0, stopset1, stopset2);
    3604              :     }
    3605        82422 :   else if (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_implementationtok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))))) != 0)))
    3606              :     {
    3607              :       /* avoid dangling else.  */
    3608        82422 :       ImplementationOrProgramModule (stopset0, stopset1, stopset2);
    3609              :     }
    3610              :   else
    3611              :     {
    3612              :       /* avoid dangling else.  */
    3613            0 :       ErrorArray ((const char *) "expecting one of: {%KIMPLEMENTATION} {%KMODULE} {%KDEFINITION}", 62);
    3614              :     }
    3615       243176 :   M2Quads_PopAuto ();
    3616       243176 : }
    3617              : 
    3618              : 
    3619              : /*
    3620              :    ProgramModule := 'MODULE' 
    3621              :                     % VAR namet: CARDINAL ;  %
    3622              :                     
    3623              :                     % M2Error.DefaultProgramModule  %
    3624              :                     
    3625              :                     % PushAutoOn  %
    3626              :                     Ident 
    3627              :                     % PCStartBuildProgModule  %
    3628              :                     
    3629              :                     % PushAutoOff  %
    3630              :                     [ Priority  ] ';' { Import 
    3631              :                                         % PCBuildImportOuterModule  %
    3632              :                                          } Block 
    3633              :                     % PushAutoOn  %
    3634              :                     
    3635              :                     % namet := GetTokenNo ()  %
    3636              :                     Ident 
    3637              :                     % PCEndBuildProgModule (namet)  %
    3638              :                     '.' 
    3639              :                     % PopAuto ; PopAuto  %
    3640              :                     
    3641              : 
    3642              :    first  symbols:moduletok
    3643              :    
    3644              :    cannot reachend
    3645              : */
    3646              : 
    3647        11685 : static void ProgramModule (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3648              : {
    3649        11685 :   unsigned int namet;
    3650              : 
    3651        11685 :   Expect (M2Reserved_moduletok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3652        11685 :   M2Error_DefaultProgramModule ();
    3653        11685 :   M2Quads_PushAutoOn ();
    3654        11685 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3655        11685 :   PCSymBuild_PCStartBuildProgModule ();
    3656        11685 :   M2Quads_PushAutoOff ();
    3657        11685 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3658              :     {
    3659           12 :       Priority (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    3660              :     }
    3661        11685 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    3662        37562 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    3663              :     {
    3664        14192 :       Import (stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    3665        14192 :       PCSymBuild_PCBuildImportOuterModule ();
    3666              :     }
    3667              :    /* while  */
    3668        11685 :   Block (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3669        11673 :   M2Quads_PushAutoOn ();
    3670        11673 :   namet = M2LexBuf_GetTokenNo ();
    3671        11673 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3672        11673 :   PCSymBuild_PCEndBuildProgModule (namet);
    3673        11673 :   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2);
    3674        11673 :   M2Quads_PopAuto ();
    3675        11673 :   M2Quads_PopAuto ();
    3676        11673 : }
    3677              : 
    3678              : 
    3679              : /*
    3680              :    ImplementationModule := 'IMPLEMENTATION' 
    3681              :                            % VAR namet: CARDINAL ;  %
    3682              :                            
    3683              :                            % M2Error.DefaultImplementationModule  %
    3684              :                            'MODULE' 
    3685              :                            % PushAutoOn  %
    3686              :                            Ident 
    3687              :                            % PCStartBuildImpModule  %
    3688              :                            
    3689              :                            % PushAutoOff  %
    3690              :                            [ Priority  ] ';' { Import 
    3691              :                                                
    3692              :                                                % PCBuildImportOuterModule  %
    3693              :                                                 } Block 
    3694              :                            
    3695              :                            % PushAutoOn  %
    3696              :                            
    3697              :                            % namet := GetTokenNo ()  %
    3698              :                            Ident 
    3699              :                            % PCEndBuildImpModule (namet)  %
    3700              :                            '.' 
    3701              :                            % PopAuto ; PopAuto ; PopAuto  %
    3702              :                            
    3703              : 
    3704              :    first  symbols:implementationtok
    3705              :    
    3706              :    cannot reachend
    3707              : */
    3708              : 
    3709        70737 : static void ImplementationModule (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3710              : {
    3711        70737 :   unsigned int namet;
    3712              : 
    3713        70737 :   Expect (M2Reserved_implementationtok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2);
    3714        70737 :   M2Error_DefaultImplementationModule ();
    3715        70737 :   Expect (M2Reserved_moduletok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3716        70737 :   M2Quads_PushAutoOn ();
    3717        70737 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3718        70737 :   PCSymBuild_PCStartBuildImpModule ();
    3719        70737 :   M2Quads_PushAutoOff ();
    3720        70737 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3721              :     {
    3722           26 :       Priority (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    3723              :     }
    3724        70737 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    3725       418310 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    3726              :     {
    3727       276836 :       Import (stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    3728       276836 :       PCSymBuild_PCBuildImportOuterModule ();
    3729              :     }
    3730              :    /* while  */
    3731        70737 :   Block (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3732        70725 :   M2Quads_PushAutoOn ();
    3733        70725 :   namet = M2LexBuf_GetTokenNo ();
    3734        70725 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3735        70725 :   PCSymBuild_PCEndBuildImpModule (namet);
    3736        70725 :   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2);
    3737        70725 :   M2Quads_PopAuto ();
    3738        70725 :   M2Quads_PopAuto ();
    3739        70725 :   M2Quads_PopAuto ();
    3740        70725 : }
    3741              : 
    3742              : 
    3743              : /*
    3744              :    ImplementationOrProgramModule := 
    3745              :                                     % PushAutoOff  %
    3746              :                                     ( ImplementationModule  | 
    3747              :                                       ProgramModule  ) 
    3748              :                                     
    3749              :                                     % PopAuto  %
    3750              :                                     
    3751              : 
    3752              :    first  symbols:moduletok, implementationtok
    3753              :    
    3754              :    cannot reachend
    3755              : */
    3756              : 
    3757        82422 : static void ImplementationOrProgramModule (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3758              : {
    3759        82422 :   M2Quads_PushAutoOff ();
    3760        82422 :   if (M2LexBuf_currenttoken == M2Reserved_implementationtok)
    3761              :     {
    3762        70737 :       ImplementationModule (stopset0, stopset1, stopset2);
    3763              :     }
    3764        11685 :   else if (M2LexBuf_currenttoken == M2Reserved_moduletok)
    3765              :     {
    3766              :       /* avoid dangling else.  */
    3767        11685 :       ProgramModule (stopset0, stopset1, stopset2);
    3768              :     }
    3769              :   else
    3770              :     {
    3771              :       /* avoid dangling else.  */
    3772            0 :       ErrorArray ((const char *) "expecting one of: {%KMODULE} {%KIMPLEMENTATION}", 47);
    3773              :     }
    3774        82398 :   M2Quads_PopAuto ();
    3775        82398 : }
    3776              : 
    3777              : 
    3778              : /*
    3779              :    Number := Integer  | Real 
    3780              : 
    3781              :    first  symbols:realtok, integertok
    3782              :    
    3783              :    cannot reachend
    3784              : */
    3785              : 
    3786      2390486 : static void Number (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3787              : {
    3788      2390486 :   if (M2LexBuf_currenttoken == M2Reserved_integertok)
    3789              :     {
    3790      2364318 :       Integer (stopset0, stopset1, stopset2);
    3791              :     }
    3792        26168 :   else if (M2LexBuf_currenttoken == M2Reserved_realtok)
    3793              :     {
    3794              :       /* avoid dangling else.  */
    3795        26168 :       Real (stopset0, stopset1, stopset2);
    3796              :     }
    3797              :   else
    3798              :     {
    3799              :       /* avoid dangling else.  */
    3800            0 :       ErrorArray ((const char *) "expecting one of: {%Kreal number} {%Kinteger number}", 52);
    3801              :     }
    3802      2390486 : }
    3803              : 
    3804              : 
    3805              : /*
    3806              :    Qualident := Ident 
    3807              :                 % IF IsAutoPushOn()
    3808              :                   THEN
    3809              :                                                                                                 CheckModuleQualident (stopset0, stopset1, stopset2)
    3810              :                   ELSE  just parse qualident   %
    3811              :                 { '.' Ident  } 
    3812              :                 % END  %
    3813              :                 
    3814              : 
    3815              :    first  symbols:identtok
    3816              :    
    3817              :    cannot reachend
    3818              : */
    3819              : 
    3820     20174122 : static void Qualident (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3821              : {
    3822     20174122 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3823     20174122 :   if (M2Quads_IsAutoPushOn ())
    3824              :     {
    3825          360 :       CheckModuleQualident (stopset0, stopset1, stopset2);  /* just parse qualident  */
    3826              :     }
    3827              :   else
    3828              :     {
    3829     20491263 :       while (M2LexBuf_currenttoken == M2Reserved_periodtok)  /* just parse qualident  */
    3830              :         {
    3831       317501 :           Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3832       317501 :           Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3833              :         }
    3834              :        /* while  */
    3835              :     }
    3836     20174122 : }
    3837              : 
    3838              : 
    3839              : /*
    3840              :    ConstantDeclaration := 
    3841              :                           % VAR top: CARDINAL ;  %
    3842              :                           
    3843              :                           % InclConst (BlockState)  %
    3844              :                           
    3845              :                           % top := Top()  %
    3846              :                           
    3847              :                           % PushAutoOn  %
    3848              :                           ( Ident '=' 
    3849              :                             % StartDesConst  %
    3850              :                             
    3851              :                             % PushAutoOff  %
    3852              :                             ConstExpression 
    3853              :                             % PopAuto  %
    3854              :                              ) 
    3855              :                           % EndDesConst  %
    3856              :                           
    3857              :                           % PopAuto  %
    3858              :                           
    3859              :                           % Assert(top=Top())  %
    3860              :                           
    3861              :                           % ExclConst (BlockState)  %
    3862              :                           
    3863              : 
    3864              :    first  symbols:identtok
    3865              :    
    3866              :    cannot reachend
    3867              : */
    3868              : 
    3869       291714 : static void ConstantDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3870              : {
    3871       291714 :   unsigned int top;
    3872              : 
    3873       291714 :   M2StateCheck_InclConst (BlockState);
    3874       291714 :   top = M2Quads_Top ();
    3875       291714 :   M2Quads_PushAutoOn ();
    3876       291714 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    3877       291714 :   Expect (M2Reserved_equaltok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    3878       291714 :   PCSymBuild_StartDesConst ();
    3879       291714 :   M2Quads_PushAutoOff ();
    3880       291714 :   ConstExpression (stopset0, stopset1, stopset2);
    3881       291690 :   M2Quads_PopAuto ();
    3882       291690 :   PCSymBuild_EndDesConst ();
    3883       291690 :   M2Quads_PopAuto ();
    3884       291690 :   M2Debug_Assert (top == (M2Quads_Top ()));
    3885       291690 :   M2StateCheck_ExclConst (BlockState);
    3886       291690 : }
    3887              : 
    3888              : 
    3889              : /*
    3890              :    ConstExpression := 
    3891              :                       % VAR top: CARDINAL ;  %
    3892              :                       
    3893              :                       % top := Top()  %
    3894              :                       
    3895              :                       % PushInConstExpression  %
    3896              :                       
    3897              :                       % PushAutoOff  %
    3898              :                       SimpleConstExpr [ Relation SimpleConstExpr 
    3899              :                                         
    3900              :                                         % BuildRelationConst  %
    3901              :                                          ] 
    3902              :                       % PopAuto  %
    3903              :                       
    3904              :                       % PopInConstExpression  %
    3905              :                       
    3906              :                       % Assert(top=Top())  %
    3907              :                       
    3908              : 
    3909              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
    3910              :    
    3911              :    cannot reachend
    3912              : */
    3913              : 
    3914       669223 : static void ConstExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3915              : {
    3916       669223 :   unsigned int top;
    3917              : 
    3918       669223 :   top = M2Quads_Top ();
    3919       669223 :   M2Quads_PushInConstExpression ();
    3920       669223 :   M2Quads_PushAutoOff ();
    3921       669223 :   SimpleConstExpr (stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_intok-M2Reserved_arraytok))), stopset2);
    3922       669199 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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))
    3923              :     {
    3924          150 :       Relation (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    3925          150 :       SimpleConstExpr (stopset0, stopset1, stopset2);
    3926          150 :       PCSymBuild_BuildRelationConst ();
    3927              :     }
    3928       669199 :   M2Quads_PopAuto ();
    3929       669199 :   M2Quads_PopInConstExpression ();
    3930       669199 :   M2Debug_Assert (top == (M2Quads_Top ()));
    3931       669199 : }
    3932              : 
    3933              : 
    3934              : /*
    3935              :    Relation := '=' 
    3936              :                % PushT(EqualTok)  %
    3937              :                 | '#' 
    3938              :                % PushT(HashTok)  %
    3939              :                 | '<>' 
    3940              :                % PushT(LessGreaterTok)  %
    3941              :                 | '<' 
    3942              :                % PushT(LessTok)  %
    3943              :                 | '<=' 
    3944              :                % PushT(LessEqualTok)  %
    3945              :                 | '>' 
    3946              :                % PushT(GreaterTok)  %
    3947              :                 | '>=' 
    3948              :                % PushT(GreaterEqualTok)  %
    3949              :                 | 'IN' 
    3950              :                % PushT(InTok)  %
    3951              :                
    3952              : 
    3953              :    first  symbols:intok, greaterequaltok, greatertok, lessequaltok, lesstok, lessgreatertok, hashtok, equaltok
    3954              :    
    3955              :    cannot reachend
    3956              : */
    3957              : 
    3958          150 : static void Relation (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    3959              : {
    3960          150 :   if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    3961              :     {
    3962           48 :       Expect (M2Reserved_equaltok, stopset0, stopset1, stopset2);
    3963           48 :       M2Quads_PushT (M2Reserved_EqualTok);
    3964              :     }
    3965              :   else if (M2LexBuf_currenttoken == M2Reserved_hashtok)
    3966              :     {
    3967              :       /* avoid dangling else.  */
    3968           12 :       Expect (M2Reserved_hashtok, stopset0, stopset1, stopset2);
    3969           12 :       M2Quads_PushT (M2Reserved_HashTok);
    3970              :     }
    3971              :   else if (M2LexBuf_currenttoken == M2Reserved_lessgreatertok)
    3972              :     {
    3973              :       /* avoid dangling else.  */
    3974            0 :       Expect (M2Reserved_lessgreatertok, stopset0, stopset1, stopset2);
    3975            0 :       M2Quads_PushT (M2Reserved_LessGreaterTok);
    3976              :     }
    3977              :   else if (M2LexBuf_currenttoken == M2Reserved_lesstok)
    3978              :     {
    3979              :       /* avoid dangling else.  */
    3980            0 :       Expect (M2Reserved_lesstok, stopset0, stopset1, stopset2);
    3981            0 :       M2Quads_PushT (M2Reserved_LessTok);
    3982              :     }
    3983              :   else if (M2LexBuf_currenttoken == M2Reserved_lessequaltok)
    3984              :     {
    3985              :       /* avoid dangling else.  */
    3986           42 :       Expect (M2Reserved_lessequaltok, stopset0, stopset1, stopset2);
    3987           42 :       M2Quads_PushT (M2Reserved_LessEqualTok);
    3988              :     }
    3989              :   else if (M2LexBuf_currenttoken == M2Reserved_greatertok)
    3990              :     {
    3991              :       /* avoid dangling else.  */
    3992           48 :       Expect (M2Reserved_greatertok, stopset0, stopset1, stopset2);
    3993           48 :       M2Quads_PushT (M2Reserved_GreaterTok);
    3994              :     }
    3995              :   else if (M2LexBuf_currenttoken == M2Reserved_greaterequaltok)
    3996              :     {
    3997              :       /* avoid dangling else.  */
    3998            0 :       Expect (M2Reserved_greaterequaltok, stopset0, stopset1, stopset2);
    3999            0 :       M2Quads_PushT (M2Reserved_GreaterEqualTok);
    4000              :     }
    4001              :   else if (M2LexBuf_currenttoken == M2Reserved_intok)
    4002              :     {
    4003              :       /* avoid dangling else.  */
    4004            0 :       Expect (M2Reserved_intok, stopset0, stopset1, stopset2);
    4005            0 :       M2Quads_PushT (M2Reserved_InTok);
    4006              :     }
    4007              :   else
    4008              :     {
    4009              :       /* avoid dangling else.  */
    4010            0 :       ErrorArray ((const char *) "expecting one of: {%KIN} {%K>=} {%K>} {%K<=} {%K<} {%K<>} {%K#} {%K=}", 69);
    4011              :     }
    4012          150 : }
    4013              : 
    4014              : 
    4015              : /*
    4016              :    SimpleConstExpr := 
    4017              :                       % VAR top: CARDINAL ;  %
    4018              :                       
    4019              :                       % top := Top()  %
    4020              :                       UnaryOrConstTerm { ConstAddOperator 
    4021              :                                          ConstTerm 
    4022              :                                          
    4023              :                                          % BuildBinaryConst  %
    4024              :                                           } 
    4025              :                       % Assert(top=Top())  %
    4026              :                       
    4027              : 
    4028              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    4029              :    
    4030              :    cannot reachend
    4031              : */
    4032              : 
    4033       669373 : static void SimpleConstExpr (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4034              : {
    4035       669373 :   unsigned int top;
    4036              : 
    4037       669373 :   top = M2Quads_Top ();
    4038       669373 :   UnaryOrConstTerm (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    4039      1348802 :   while (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_ortok))
    4040              :     {
    4041        10080 :       ConstAddOperator (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4042        10080 :       ConstTerm (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    4043        10080 :       PCSymBuild_BuildBinaryConst ();
    4044              :     }
    4045              :    /* while  */
    4046       669349 :   M2Debug_Assert (top == (M2Quads_Top ()));
    4047       669349 : }
    4048              : 
    4049              : 
    4050              : /*
    4051              :    UnaryOrConstTerm := '+' 
    4052              :                        % PushT(PlusTok)  %
    4053              :                        ConstTerm 
    4054              :                        % BuildUnaryConst  %
    4055              :                         | '-' 
    4056              :                        % PushT(MinusTok)  %
    4057              :                        ConstTerm 
    4058              :                        % BuildUnaryConst  %
    4059              :                         | ConstTerm 
    4060              : 
    4061              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
    4062              :    
    4063              :    cannot reachend
    4064              : */
    4065              : 
    4066       669373 : static void UnaryOrConstTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4067              : {
    4068       669373 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    4069              :     {
    4070           12 :       Expect (M2Reserved_plustok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4071           12 :       M2Quads_PushT (M2Reserved_PlusTok);
    4072           12 :       ConstTerm (stopset0, stopset1, stopset2);
    4073           12 :       PCSymBuild_BuildUnaryConst ();
    4074              :     }
    4075       669361 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    4076              :     {
    4077              :       /* avoid dangling else.  */
    4078        18462 :       Expect (M2Reserved_minustok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4079        18462 :       M2Quads_PushT (M2Reserved_MinusTok);
    4080        18462 :       ConstTerm (stopset0, stopset1, stopset2);
    4081        18462 :       PCSymBuild_BuildUnaryConst ();
    4082              :     }
    4083       650899 :   else if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    4084              :     {
    4085              :       /* avoid dangling else.  */
    4086       650899 :       ConstTerm (stopset0, stopset1, stopset2);
    4087              :     }
    4088              :   else
    4089              :     {
    4090              :       /* avoid dangling else.  */
    4091            0 :       ErrorArray ((const char *) "expecting one of: {%KNOT} {%K(} {%K__ATTRIBUTE__} {%K%{} {%Kstring} {%Kinteger number} {%Kreal number} {%Kidentifier} {%K-} {%K+}", 129);
    4092              :     }
    4093       669349 : }
    4094              : 
    4095              : 
    4096              : /*
    4097              :    ConstAddOperator := '+' 
    4098              :                        % PushT(PlusTok)  %
    4099              :                         | '-' 
    4100              :                        % PushT(MinusTok)  %
    4101              :                         | 'OR' 
    4102              :                        % PushT(OrTok)  %
    4103              :                        
    4104              : 
    4105              :    first  symbols:ortok, minustok, plustok
    4106              :    
    4107              :    cannot reachend
    4108              : */
    4109              : 
    4110        10080 : static void ConstAddOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4111              : {
    4112        10080 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    4113              :     {
    4114          618 :       Expect (M2Reserved_plustok, stopset0, stopset1, stopset2);
    4115          618 :       M2Quads_PushT (M2Reserved_PlusTok);
    4116              :     }
    4117         9462 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    4118              :     {
    4119              :       /* avoid dangling else.  */
    4120         9462 :       Expect (M2Reserved_minustok, stopset0, stopset1, stopset2);
    4121         9462 :       M2Quads_PushT (M2Reserved_MinusTok);
    4122              :     }
    4123            0 :   else if (M2LexBuf_currenttoken == M2Reserved_ortok)
    4124              :     {
    4125              :       /* avoid dangling else.  */
    4126            0 :       Expect (M2Reserved_ortok, stopset0, stopset1, stopset2);
    4127            0 :       M2Quads_PushT (M2Reserved_OrTok);
    4128              :     }
    4129              :   else
    4130              :     {
    4131              :       /* avoid dangling else.  */
    4132            0 :       ErrorArray ((const char *) "expecting one of: {%KOR} {%K-} {%K+}", 36);
    4133              :     }
    4134        10080 : }
    4135              : 
    4136              : 
    4137              : /*
    4138              :    AddOperator := '+'  | '-'  | 'OR' 
    4139              : 
    4140              :    first  symbols:ortok, minustok, plustok
    4141              :    
    4142              :    cannot reachend
    4143              : */
    4144              : 
    4145       846907 : static void AddOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4146              : {
    4147       846907 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    4148              :     {
    4149       435971 :       Expect (M2Reserved_plustok, stopset0, stopset1, stopset2);
    4150              :     }
    4151       410936 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    4152              :     {
    4153              :       /* avoid dangling else.  */
    4154       260722 :       Expect (M2Reserved_minustok, stopset0, stopset1, stopset2);
    4155              :     }
    4156       150214 :   else if (M2LexBuf_currenttoken == M2Reserved_ortok)
    4157              :     {
    4158              :       /* avoid dangling else.  */
    4159       150214 :       Expect (M2Reserved_ortok, stopset0, stopset1, stopset2);
    4160              :     }
    4161              :   else
    4162              :     {
    4163              :       /* avoid dangling else.  */
    4164            0 :       ErrorArray ((const char *) "expecting one of: {%KOR} {%K-} {%K+}", 36);
    4165              :     }
    4166       846907 : }
    4167              : 
    4168              : 
    4169              : /*
    4170              :    ConstTerm := 
    4171              :                 % VAR top: CARDINAL ;  %
    4172              :                 
    4173              :                 % top := Top()  %
    4174              :                 ConstFactor 
    4175              :                 % Assert(top=Top())  %
    4176              :                 { ConstMulOperator ConstFactor 
    4177              :                   % BuildBinaryConst  %
    4178              :                   
    4179              :                   % Assert(top=Top())  %
    4180              :                    } 
    4181              :                 % Assert(top=Top())  %
    4182              :                 
    4183              : 
    4184              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok
    4185              :    
    4186              :    cannot reachend
    4187              : */
    4188              : 
    4189       679453 : static void ConstTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4190              : {
    4191       679453 :   unsigned int top;
    4192              : 
    4193       679453 :   top = M2Quads_Top ();
    4194       679453 :   ConstFactor (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_timestok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_modtok-M2Reserved_arraytok)) | (1 << (M2Reserved_divtok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    4195       679429 :   M2Debug_Assert (top == (M2Quads_Top ()));
    4196      1378050 :   while ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))))) != 0)))) || (M2LexBuf_currenttoken == M2Reserved_remtok))
    4197              :     {
    4198        19192 :       ConstMulOperator (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4199        19192 :       ConstFactor (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_timestok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_ambersandtok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    4200        19192 :       PCSymBuild_BuildBinaryConst ();
    4201        19192 :       M2Debug_Assert (top == (M2Quads_Top ()));
    4202              :     }
    4203              :    /* while  */
    4204       679429 :   M2Debug_Assert (top == (M2Quads_Top ()));
    4205       679429 : }
    4206              : 
    4207              : 
    4208              : /*
    4209              :    ConstMulOperator := '*' 
    4210              :                        % PushT(TimesTok)  %
    4211              :                         | '/' 
    4212              :                        % PushT(DivideTok)  %
    4213              :                         | 'DIV' 
    4214              :                        % PushT(DivTok)  %
    4215              :                         | 'MOD' 
    4216              :                        % PushT(ModTok)  %
    4217              :                         | 'REM' 
    4218              :                        % PushT(RemTok)  %
    4219              :                         | 'AND' 
    4220              :                        % PushT(AndTok)  %
    4221              :                         | '&' 
    4222              :                        % PushT(AmbersandTok)  %
    4223              :                        
    4224              : 
    4225              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
    4226              :    
    4227              :    cannot reachend
    4228              : */
    4229              : 
    4230        19192 : static void ConstMulOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4231              : {
    4232        19192 :   if (M2LexBuf_currenttoken == M2Reserved_timestok)
    4233              :     {
    4234        14738 :       Expect (M2Reserved_timestok, stopset0, stopset1, stopset2);
    4235        14738 :       M2Quads_PushT (M2Reserved_TimesTok);
    4236              :     }
    4237              :   else if (M2LexBuf_currenttoken == M2Reserved_dividetok)
    4238              :     {
    4239              :       /* avoid dangling else.  */
    4240           12 :       Expect (M2Reserved_dividetok, stopset0, stopset1, stopset2);
    4241           12 :       M2Quads_PushT (M2Reserved_DivideTok);
    4242              :     }
    4243              :   else if (M2LexBuf_currenttoken == M2Reserved_divtok)
    4244              :     {
    4245              :       /* avoid dangling else.  */
    4246         4436 :       Expect (M2Reserved_divtok, stopset0, stopset1, stopset2);
    4247         4436 :       M2Quads_PushT (M2Reserved_DivTok);
    4248              :     }
    4249              :   else if (M2LexBuf_currenttoken == M2Reserved_modtok)
    4250              :     {
    4251              :       /* avoid dangling else.  */
    4252            0 :       Expect (M2Reserved_modtok, stopset0, stopset1, stopset2);
    4253            0 :       M2Quads_PushT (M2Reserved_ModTok);
    4254              :     }
    4255              :   else if (M2LexBuf_currenttoken == M2Reserved_remtok)
    4256              :     {
    4257              :       /* avoid dangling else.  */
    4258            0 :       Expect (M2Reserved_remtok, stopset0, stopset1, stopset2);
    4259            0 :       M2Quads_PushT (M2Reserved_RemTok);
    4260              :     }
    4261              :   else if (M2LexBuf_currenttoken == M2Reserved_andtok)
    4262              :     {
    4263              :       /* avoid dangling else.  */
    4264            6 :       Expect (M2Reserved_andtok, stopset0, stopset1, stopset2);
    4265            6 :       M2Quads_PushT (M2Reserved_AndTok);
    4266              :     }
    4267              :   else if (M2LexBuf_currenttoken == M2Reserved_ambersandtok)
    4268              :     {
    4269              :       /* avoid dangling else.  */
    4270            0 :       Expect (M2Reserved_ambersandtok, stopset0, stopset1, stopset2);
    4271            0 :       M2Quads_PushT (M2Reserved_AmbersandTok);
    4272              :     }
    4273              :   else
    4274              :     {
    4275              :       /* avoid dangling else.  */
    4276            0 :       ErrorArray ((const char *) "expecting one of: {%K&} {%KAND} {%KREM} {%KMOD} {%KDIV} {%K/} {%K*}", 67);
    4277              :     }
    4278        19192 : }
    4279              : 
    4280              : 
    4281              : /*
    4282              :    MulOperator := '*'  | '/'  | 'DIV'  | 'MOD'  | 
    4283              :                   'REM'  | 'AND'  | '&' 
    4284              : 
    4285              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
    4286              :    
    4287              :    cannot reachend
    4288              : */
    4289              : 
    4290       785652 : static void MulOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4291              : {
    4292       785652 :   if (M2LexBuf_currenttoken == M2Reserved_timestok)
    4293              :     {
    4294       108590 :       Expect (M2Reserved_timestok, stopset0, stopset1, stopset2);
    4295              :     }
    4296              :   else if (M2LexBuf_currenttoken == M2Reserved_dividetok)
    4297              :     {
    4298              :       /* avoid dangling else.  */
    4299        14200 :       Expect (M2Reserved_dividetok, stopset0, stopset1, stopset2);
    4300              :     }
    4301              :   else if (M2LexBuf_currenttoken == M2Reserved_divtok)
    4302              :     {
    4303              :       /* avoid dangling else.  */
    4304        81050 :       Expect (M2Reserved_divtok, stopset0, stopset1, stopset2);
    4305              :     }
    4306              :   else if (M2LexBuf_currenttoken == M2Reserved_modtok)
    4307              :     {
    4308              :       /* avoid dangling else.  */
    4309       132454 :       Expect (M2Reserved_modtok, stopset0, stopset1, stopset2);
    4310              :     }
    4311              :   else if (M2LexBuf_currenttoken == M2Reserved_remtok)
    4312              :     {
    4313              :       /* avoid dangling else.  */
    4314           96 :       Expect (M2Reserved_remtok, stopset0, stopset1, stopset2);
    4315              :     }
    4316              :   else if (M2LexBuf_currenttoken == M2Reserved_andtok)
    4317              :     {
    4318              :       /* avoid dangling else.  */
    4319       449262 :       Expect (M2Reserved_andtok, stopset0, stopset1, stopset2);
    4320              :     }
    4321              :   else if (M2LexBuf_currenttoken == M2Reserved_ambersandtok)
    4322              :     {
    4323              :       /* avoid dangling else.  */
    4324            0 :       Expect (M2Reserved_ambersandtok, stopset0, stopset1, stopset2);
    4325              :     }
    4326              :   else
    4327              :     {
    4328              :       /* avoid dangling else.  */
    4329            0 :       ErrorArray ((const char *) "expecting one of: {%K&} {%KAND} {%KREM} {%KMOD} {%KDIV} {%K/} {%K*}", 67);
    4330              :     }
    4331       785652 : }
    4332              : 
    4333              : 
    4334              : /*
    4335              :    ConstFactor := ConstNumber  | ConstString  | 
    4336              :                   ConstSetOrQualidentOrFunction  | 
    4337              :                   '(' ConstExpression ')'  | 
    4338              :                   'NOT' ConstFactor  | 
    4339              :                   ConstAttribute 
    4340              : 
    4341              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok
    4342              :    
    4343              :    cannot reachend
    4344              : */
    4345              : 
    4346       698645 : static void ConstFactor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4347              : {
    4348       698645 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok))))) != 0)))
    4349              :     {
    4350       369932 :       ConstNumber (stopset0, stopset1, stopset2);
    4351              :     }
    4352       328713 :   else if (M2LexBuf_currenttoken == M2Reserved_stringtok)
    4353              :     {
    4354              :       /* avoid dangling else.  */
    4355        50551 :       ConstString (stopset0, stopset1, stopset2);
    4356              :     }
    4357              :   else if ((M2LexBuf_currenttoken == M2Reserved_lcbratok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    4358              :     {
    4359              :       /* avoid dangling else.  */
    4360       248708 :       ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
    4361              :     }
    4362              :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4363              :     {
    4364              :       /* avoid dangling else.  */
    4365           78 :       Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4366           78 :       ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4367           78 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4368              :     }
    4369              :   else if (M2LexBuf_currenttoken == M2Reserved_nottok)
    4370              :     {
    4371              :       /* avoid dangling else.  */
    4372            0 :       Expect (M2Reserved_nottok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4373            0 :       ConstFactor (stopset0, stopset1, stopset2);
    4374              :     }
    4375              :   else if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    4376              :     {
    4377              :       /* avoid dangling else.  */
    4378        29376 :       ConstAttribute (stopset0, stopset1, stopset2);
    4379              :     }
    4380              :   else
    4381              :     {
    4382              :       /* avoid dangling else.  */
    4383            0 :       ErrorArray ((const char *) "expecting one of: {%K__ATTRIBUTE__} {%KNOT} {%K(} {%K%{} {%Kidentifier} {%Kstring} {%Kinteger number} {%Kreal number}", 117);
    4384              :     }
    4385       698621 : }
    4386              : 
    4387              : 
    4388              : /*
    4389              :    ConstNumber := 
    4390              :                   % PushAutoOn  %
    4391              :                   ( Integer 
    4392              :                     % PushIntegerType  %
    4393              :                      | Real 
    4394              :                     % PushRType  %
    4395              :                      ) 
    4396              :                   % PopAuto  %
    4397              :                   
    4398              : 
    4399              :    first  symbols:realtok, integertok
    4400              :    
    4401              :    cannot reachend
    4402              : */
    4403              : 
    4404       369932 : static void ConstNumber (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4405              : {
    4406       369932 :   M2Quads_PushAutoOn ();
    4407       369932 :   if (M2LexBuf_currenttoken == M2Reserved_integertok)
    4408              :     {
    4409       367160 :       Integer (stopset0, stopset1, stopset2);
    4410       367160 :       PCSymBuild_PushIntegerType ();
    4411              :     }
    4412         2772 :   else if (M2LexBuf_currenttoken == M2Reserved_realtok)
    4413              :     {
    4414              :       /* avoid dangling else.  */
    4415         2772 :       Real (stopset0, stopset1, stopset2);
    4416         2772 :       PCSymBuild_PushRType ();
    4417              :     }
    4418              :   else
    4419              :     {
    4420              :       /* avoid dangling else.  */
    4421            0 :       ErrorArray ((const char *) "expecting one of: {%Kreal number} {%Kinteger number}", 52);
    4422              :     }
    4423       369932 :   M2Quads_PopAuto ();
    4424       369932 : }
    4425              : 
    4426              : 
    4427              : /*
    4428              :    ConstString := 
    4429              :                   % PushAutoOn  %
    4430              :                   string 
    4431              :                   % PushStringType  %
    4432              :                   
    4433              :                   % PopAuto  %
    4434              :                   
    4435              : 
    4436              :    first  symbols:stringtok
    4437              :    
    4438              :    cannot reachend
    4439              : */
    4440              : 
    4441        50551 : static void ConstString (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4442              : {
    4443        50551 :   M2Quads_PushAutoOn ();
    4444        50551 :   string (stopset0, stopset1, stopset2);
    4445        50551 :   PCSymBuild_PushStringType ();
    4446        50551 :   M2Quads_PopAuto ();
    4447        50551 : }
    4448              : 
    4449              : 
    4450              : /*
    4451              :    ComponentElement := ConstExpression [ '..' ConstExpression  ] 
    4452              : 
    4453              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    4454              :    
    4455              :    cannot reachend
    4456              : */
    4457              : 
    4458        29382 : static void ComponentElement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4459              : {
    4460        29382 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4461        29382 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    4462              :     {
    4463          362 :       Expect (M2Reserved_periodperiodtok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4464          362 :       ConstExpression (stopset0, stopset1, stopset2);
    4465              :     }
    4466        29382 : }
    4467              : 
    4468              : 
    4469              : /*
    4470              :    ComponentValue := ComponentElement [ 'BY' ConstExpression  ] 
    4471              : 
    4472              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
    4473              :    
    4474              :    cannot reachend
    4475              : */
    4476              : 
    4477        29382 : static void ComponentValue (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4478              : {
    4479        29382 :   ComponentElement (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_bytok-M2Reserved_arraytok))), stopset2);
    4480        29382 :   if (M2LexBuf_currenttoken == M2Reserved_bytok)
    4481              :     {
    4482           30 :       Expect (M2Reserved_bytok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4483           30 :       ConstExpression (stopset0, stopset1, stopset2);
    4484              :     }
    4485        29382 : }
    4486              : 
    4487              : 
    4488              : /*
    4489              :    ArraySetRecordValue := ComponentValue { ',' 
    4490              :                                            % NextConstructorField  %
    4491              :                                            ComponentValue  } 
    4492              : 
    4493              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    4494              :    
    4495              :    cannot reachend
    4496              : */
    4497              : 
    4498        10392 : static void ArraySetRecordValue (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4499              : {
    4500        10392 :   ComponentValue (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4501        39774 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4502              :     {
    4503        18990 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4504        18990 :       M2Quads_NextConstructorField ();
    4505        18990 :       ComponentValue (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4506              :     }
    4507              :    /* while  */
    4508        10392 : }
    4509              : 
    4510              : 
    4511              : /*
    4512              :    Constructor := '{' 
    4513              :                   % InclConstructor (BlockState)  %
    4514              :                   
    4515              :                   % CheckQualident (OperandTok (1), BlockState, OperandT (1))  %
    4516              :                   
    4517              :                   % PushConstructorCastType  %
    4518              :                   
    4519              :                   % PushInConstructor  %
    4520              :                   
    4521              :                   % BuildConstructor (GetTokenNo ()-1)  %
    4522              :                   [ ArraySetRecordValue  ] 
    4523              :                   % PopConstructor  %
    4524              :                   '}' 
    4525              :                   % PopInConstructor  %
    4526              :                   
    4527              :                   % ExclConstructor (BlockState)  %
    4528              :                   
    4529              : 
    4530              :    first  symbols:lcbratok
    4531              :    
    4532              :    cannot reachend
    4533              : */
    4534              : 
    4535        36470 : static void Constructor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4536              : {
    4537        36470 :   Expect (M2Reserved_lcbratok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4538        36470 :   M2StateCheck_InclConstructor (BlockState);
    4539        36470 :   M2StateCheck_CheckQualident (M2Quads_OperandTok (1), BlockState, M2Quads_OperandT (1));
    4540        36470 :   PCSymBuild_PushConstructorCastType ();
    4541        36470 :   PCSymBuild_PushInConstructor ();
    4542        36470 :   M2Quads_BuildConstructor ((M2LexBuf_GetTokenNo ())-1);
    4543        36470 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    4544              :     {
    4545        10392 :       ArraySetRecordValue (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rcbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4546              :     }
    4547        36470 :   M2Quads_PopConstructor ();
    4548        36470 :   Expect (M2Reserved_rcbratok, stopset0, stopset1, stopset2);
    4549        36470 :   PCSymBuild_PopInConstructor ();
    4550        36470 :   M2StateCheck_ExclConstructor (BlockState);
    4551        36470 : }
    4552              : 
    4553              : 
    4554              : /*
    4555              :    ConstructorOrConstActualParameters := Constructor  | 
    4556              :                                          ConstActualParameters 
    4557              :                                          
    4558              :                                          % PushConstFunctionType  %
    4559              :                                          
    4560              :                                          % PopNothing  pop function   %
    4561              :                                          
    4562              : 
    4563              :    first  symbols:lparatok, lcbratok
    4564              :    
    4565              :    cannot reachend
    4566              : */
    4567              : 
    4568        13202 : static void ConstructorOrConstActualParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4569              : {
    4570        13202 :   if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    4571              :     {
    4572         5870 :       Constructor (stopset0, stopset1, stopset2);
    4573              :     }
    4574         7332 :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4575              :     {
    4576              :       /* avoid dangling else.  */
    4577         7332 :       ConstActualParameters (stopset0, stopset1, stopset2);
    4578         7332 :       PCSymBuild_PushConstFunctionType ();
    4579         7332 :       M2Quads_PopNothing ();  /* pop function  */
    4580              :     }
    4581              :   else
    4582              :     {
    4583              :       /* avoid dangling else.  */
    4584            0 :       ErrorArray ((const char *) "expecting one of: {%K(} {%K%{}", 30);
    4585              :     }
    4586        13202 : }
    4587              : 
    4588              : 
    4589              : /*
    4590              :    ConstSetOrQualidentOrFunction := 
    4591              :                                     % PushAutoOff  %
    4592              :                                     
    4593              :                                     % VAR tokpos: CARDINAL ;  %
    4594              :                                     
    4595              :                                     % tokpos := GetTokenNo ()  %
    4596              :                                     ( PushQualident 
    4597              :                                       ( ConstructorOrConstActualParameters  | 
    4598              :                                         
    4599              :                                         % CheckQualident (OperandTok (1), BlockState, OperandT (1))  %
    4600              :                                         
    4601              :                                         % PushConstType  %
    4602              :                                         
    4603              :                                         % PopNothing  %
    4604              :                                          )  | 
    4605              :                                       
    4606              :                                       % BuildTypeForConstructor (tokpos)  %
    4607              :                                       Constructor  ) 
    4608              :                                     
    4609              :                                     % PopAuto  %
    4610              :                                     
    4611              : 
    4612              :    first  symbols:identtok, lcbratok
    4613              :    
    4614              :    cannot reachend
    4615              : */
    4616              : 
    4617       248708 : static void ConstSetOrQualidentOrFunction (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4618              : {
    4619       248708 :   unsigned int tokpos;
    4620              : 
    4621       248708 :   M2Quads_PushAutoOff ();
    4622       248708 :   tokpos = M2LexBuf_GetTokenNo ();
    4623       248708 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4624              :     {
    4625       248156 :       PushQualident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4626       248156 :       if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_SetOfStop0) ((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))))) != 0)))
    4627              :         {
    4628        13202 :           ConstructorOrConstActualParameters (stopset0, stopset1, stopset2);
    4629              :         }
    4630              :       else
    4631              :         {
    4632       234954 :           M2StateCheck_CheckQualident (M2Quads_OperandTok (1), BlockState, M2Quads_OperandT (1));
    4633       234942 :           PCSymBuild_PushConstType ();
    4634       234930 :           M2Quads_PopNothing ();
    4635              :         }
    4636              :     }
    4637              :   else
    4638              :     {
    4639          552 :       M2Quads_BuildTypeForConstructor (tokpos);
    4640          552 :       Constructor (stopset0, stopset1, stopset2);
    4641              :     }
    4642       248684 :   M2Quads_PopAuto ();
    4643       248684 : }
    4644              : 
    4645              : 
    4646              : /*
    4647              :    ConstActualParameters := 
    4648              :                             % PushState (BlockState)  %
    4649              :                             
    4650              :                             % InclConstFunc (BlockState)  %
    4651              :                             
    4652              :                             % CheckQualident (OperandTok (1), BlockState, OperandT (1))  %
    4653              :                             
    4654              :                             % PushT(0)  %
    4655              :                             '(' [ ConstExpList  ] ')' 
    4656              :                             
    4657              :                             % PopState (BlockState)  %
    4658              :                             
    4659              : 
    4660              :    first  symbols:lparatok
    4661              :    
    4662              :    cannot reachend
    4663              : */
    4664              : 
    4665         7332 : static void ConstActualParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4666              : {
    4667         7332 :   M2StateCheck_PushState (&BlockState);
    4668         7332 :   M2StateCheck_InclConstFunc (BlockState);
    4669         7332 :   M2StateCheck_CheckQualident (M2Quads_OperandTok (1), BlockState, M2Quads_OperandT (1));
    4670         7332 :   M2Quads_PushT (static_cast<unsigned int> (0));
    4671         7332 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4672         7332 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    4673              :     {
    4674         7332 :       ConstExpList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4675              :     }
    4676         7332 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4677         7332 :   M2StateCheck_PopState (&BlockState);
    4678         7332 : }
    4679              : 
    4680              : 
    4681              : /*
    4682              :    ConstExpList := 
    4683              :                    % VAR n: CARDINAL ;  %
    4684              :                    ConstExpression 
    4685              :                    % PopT(n)  %
    4686              :                    
    4687              :                    % INC(n)  %
    4688              :                    
    4689              :                    % Assert(n=1)  %
    4690              :                    
    4691              :                    % PushT(n)  %
    4692              :                    { ',' ConstExpression 
    4693              :                      % PopT(n)  %
    4694              :                      
    4695              :                      % INC(n)  %
    4696              :                      
    4697              :                      % PushT(n)  %
    4698              :                       } 
    4699              : 
    4700              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    4701              :    
    4702              :    cannot reachend
    4703              : */
    4704              : 
    4705         7332 : static void ConstExpList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4706              : {
    4707         7332 :   unsigned int n;
    4708              : 
    4709         7332 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4710         7332 :   M2Quads_PopT (&n);
    4711         7332 :   n += 1;
    4712         7332 :   M2Debug_Assert (n == 1);
    4713         7332 :   M2Quads_PushT (n);
    4714        15042 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4715              :     {
    4716          378 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    4717          378 :       ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4718          378 :       M2Quads_PopT (&n);
    4719          378 :       n += 1;
    4720          378 :       M2Quads_PushT (n);
    4721              :     }
    4722              :    /* while  */
    4723         7332 : }
    4724              : 
    4725              : 
    4726              : /*
    4727              :    ConstAttribute := 
    4728              :                      % VAR top: CARDINAL ;  %
    4729              :                      
    4730              :                      % top := Top()  %
    4731              :                      '__ATTRIBUTE__' '__BUILTIN__' 
    4732              :                      '(' '(' 
    4733              :                      % PushAutoOn  %
    4734              :                      ConstAttributeExpression 
    4735              :                      % PopAuto  %
    4736              :                      ')' ')' 
    4737              :                      % Assert(top=Top())  %
    4738              :                      
    4739              : 
    4740              :    first  symbols:attributetok
    4741              :    
    4742              :    cannot reachend
    4743              : */
    4744              : 
    4745        29376 : static void ConstAttribute (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4746              : {
    4747        29376 :   unsigned int top;
    4748              : 
    4749        29376 :   top = M2Quads_Top ();
    4750        29376 :   Expect (M2Reserved_attributetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok))));
    4751        29376 :   Expect (M2Reserved_builtintok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4752        29376 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4753        29376 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lesstok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4754        29376 :   M2Quads_PushAutoOn ();
    4755        29376 :   ConstAttributeExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4756        29376 :   M2Quads_PopAuto ();
    4757        29376 :   Expect (M2Reserved_rparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4758        29376 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4759        29376 :   M2Debug_Assert (top == (M2Quads_Top ()));
    4760        29376 : }
    4761              : 
    4762              : 
    4763              : /*
    4764              :    ConstAttributeExpression := Ident 
    4765              :                                % PushConstAttributeType  %
    4766              :                                
    4767              :                                % PopNothing  %
    4768              :                                 | '<' Qualident ',' 
    4769              :                                Ident '>' 
    4770              :                                % PushConstAttributePairType  %
    4771              :                                
    4772              :                                % PopNothing ; PopNothing  %
    4773              :                                
    4774              : 
    4775              :    first  symbols:lesstok, identtok
    4776              :    
    4777              :    cannot reachend
    4778              : */
    4779              : 
    4780        29376 : static void ConstAttributeExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4781              : {
    4782        29376 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4783              :     {
    4784        29016 :       Ident (stopset0, stopset1, stopset2);
    4785        29016 :       PCSymBuild_PushConstAttributeType ();
    4786        29016 :       M2Quads_PopNothing ();
    4787              :     }
    4788          360 :   else if (M2LexBuf_currenttoken == M2Reserved_lesstok)
    4789              :     {
    4790              :       /* avoid dangling else.  */
    4791          360 :       Expect (M2Reserved_lesstok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4792          360 :       Qualident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4793          360 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4794          360 :       Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_greatertok-M2Reserved_eoftok))), stopset1, stopset2);
    4795          360 :       Expect (M2Reserved_greatertok, stopset0, stopset1, stopset2);
    4796          360 :       PCSymBuild_PushConstAttributePairType ();
    4797          360 :       M2Quads_PopNothing ();
    4798          360 :       M2Quads_PopNothing ();
    4799              :     }
    4800              :   else
    4801              :     {
    4802              :       /* avoid dangling else.  */
    4803            0 :       ErrorArray ((const char *) "expecting one of: {%K<} {%Kidentifier}", 38);
    4804              :     }
    4805        29376 : }
    4806              : 
    4807              : 
    4808              : /*
    4809              :    ByteAlignment := '' 
    4810              : 
    4811              :    first  symbols:ldirectivetok
    4812              :    
    4813              :    cannot reachend
    4814              : */
    4815              : 
    4816           72 : static void ByteAlignment (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4817              : {
    4818           72 :   Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4819           72 :   AttributeExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    4820           72 :   Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    4821           72 : }
    4822              : 
    4823              : 
    4824              : /*
    4825              :    Alignment := [ ByteAlignment  ] 
    4826              : 
    4827              :    first  symbols:ldirectivetok
    4828              :    
    4829              :    reachend
    4830              : */
    4831              : 
    4832      1411373 : static void Alignment (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4833              : {
    4834            0 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    4835              :     {
    4836           72 :       ByteAlignment (stopset0, stopset1, stopset2);
    4837              :     }
    4838            0 : }
    4839              : 
    4840              : 
    4841              : /*
    4842              :    TypeDeclaration := Ident '=' Type Alignment 
    4843              : 
    4844              :    first  symbols:identtok
    4845              :    
    4846              :    cannot reachend
    4847              : */
    4848              : 
    4849       117232 : static void TypeDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4850              : {
    4851       117232 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    4852       117232 :   Expect (M2Reserved_equaltok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4853       117232 :   Type (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    4854       117232 :   Alignment (stopset0, stopset1, stopset2);
    4855       117232 : }
    4856              : 
    4857              : 
    4858              : /*
    4859              :    Type := 
    4860              :            % PushAutoOff  %
    4861              :            ( SimpleType  | ArrayType  | RecordType  | 
    4862              :              SetType  | PointerType  | 
    4863              :              ProcedureType  ) 
    4864              :            % PopAuto  %
    4865              :            
    4866              : 
    4867              :    first  symbols:lparatok, lsbratok, proceduretok, pointertok, settok, packedsettok, oftok, recordtok, arraytok, identtok
    4868              :    
    4869              :    cannot reachend
    4870              : */
    4871              : 
    4872      1911192 : static void Type (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4873              : {
    4874      1911192 :   M2Quads_PushAutoOff ();
    4875      1911192 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    4876              :     {
    4877      1574962 :       SimpleType (stopset0, stopset1, stopset2);
    4878              :     }
    4879       336230 :   else if (M2LexBuf_currenttoken == M2Reserved_arraytok)
    4880              :     {
    4881              :       /* avoid dangling else.  */
    4882        99984 :       ArrayType (stopset0, stopset1, stopset2);
    4883              :     }
    4884       236246 :   else if (M2LexBuf_currenttoken == M2Reserved_recordtok)
    4885              :     {
    4886              :       /* avoid dangling else.  */
    4887        71479 :       RecordType (stopset0, stopset1, stopset2);
    4888              :     }
    4889       164767 :   else if ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) | (1 << (M2Reserved_oftok-M2Reserved_arraytok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_settok))
    4890              :     {
    4891              :       /* avoid dangling else.  */
    4892         4742 :       SetType (stopset0, stopset1, stopset2);
    4893              :     }
    4894       160025 :   else if (M2LexBuf_currenttoken == M2Reserved_pointertok)
    4895              :     {
    4896              :       /* avoid dangling else.  */
    4897       100907 :       PointerType (stopset0, stopset1, stopset2);
    4898              :     }
    4899        59118 :   else if (M2LexBuf_currenttoken == M2Reserved_proceduretok)
    4900              :     {
    4901              :       /* avoid dangling else.  */
    4902        59118 :       ProcedureType (stopset0, stopset1, stopset2);
    4903              :     }
    4904              :   else
    4905              :     {
    4906              :       /* avoid dangling else.  */
    4907            0 :       ErrorArray ((const char *) "expecting one of: {%KPROCEDURE} {%KPOINTER} {%KSET} {%KPACKEDSET} {%KOF} {%KRECORD} {%KARRAY} {%Kidentifier} {%K(} {%K[}", 120);
    4908              :     }
    4909      1911192 :   M2Quads_PopAuto ();
    4910      1911192 : }
    4911              : 
    4912              : 
    4913              : /*
    4914              :    SimpleType := Qualident [ SubrangeType  ]  | 
    4915              :                  Enumeration  | SubrangeType 
    4916              : 
    4917              :    first  symbols:lsbratok, lparatok, identtok
    4918              :    
    4919              :    cannot reachend
    4920              : */
    4921              : 
    4922      1679826 : static void SimpleType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4923              : {
    4924      1679826 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4925              :     {
    4926              :       /* avoid dangling else.  */
    4927      1543843 :       Qualident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4928      1543843 :       if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    4929              :         {
    4930           18 :           SubrangeType (stopset0, stopset1, stopset2);
    4931              :         }
    4932              :     }
    4933       135983 :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4934              :     {
    4935              :       /* avoid dangling else.  */
    4936        34139 :       Enumeration (stopset0, stopset1, stopset2);
    4937              :     }
    4938       101844 :   else if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    4939              :     {
    4940              :       /* avoid dangling else.  */
    4941       101844 :       SubrangeType (stopset0, stopset1, stopset2);
    4942              :     }
    4943              :   else
    4944              :     {
    4945              :       /* avoid dangling else.  */
    4946            0 :       ErrorArray ((const char *) "expecting one of: {%K[} {%K(} {%Kidentifier}", 44);
    4947              :     }
    4948      1679826 : }
    4949              : 
    4950              : 
    4951              : /*
    4952              :    Enumeration := '(' IdentList ')' 
    4953              : 
    4954              :    first  symbols:lparatok
    4955              :    
    4956              :    cannot reachend
    4957              : */
    4958              : 
    4959        34139 : static void Enumeration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4960              : {
    4961        34139 :   Expect (M2Reserved_lparatok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4962        34139 :   IdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4963        34139 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4964        34139 : }
    4965              : 
    4966              : 
    4967              : /*
    4968              :    IdentList := Ident 
    4969              :                 % VAR
    4970              :                                                                                                   on: BOOLEAN ;
    4971              :                                                                                                   n : CARDINAL ;  %
    4972              :                 
    4973              :                 % on := IsAutoPushOn() ;
    4974              :                   IF on
    4975              :                   THEN
    4976              :                      n := 1
    4977              :                   END  %
    4978              :                 { ',' Ident 
    4979              :                   % IF on
    4980              :                     THEN
    4981              :                        INC(n)
    4982              :                     END  %
    4983              :                    } 
    4984              :                 % IF on
    4985              :                   THEN
    4986              :                      PushT(n)
    4987              :                   END  %
    4988              :                 
    4989              : 
    4990              :    first  symbols:identtok
    4991              :    
    4992              :    cannot reachend
    4993              : */
    4994              : 
    4995      9134438 : static void IdentList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    4996              : {
    4997      9134438 :   bool on;
    4998      9134438 :   unsigned int n;
    4999              : 
    5000      9134438 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5001      9134438 :   on = M2Quads_IsAutoPushOn ();
    5002      9134438 :   if (on)
    5003              :     {
    5004      9134438 :       n = 1;
    5005              :     }
    5006     14464943 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    5007              :     {
    5008      5330505 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5009      5330505 :       Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5010      5330505 :       if (on)
    5011              :         {
    5012       511846 :           n += 1;
    5013              :         }
    5014              :     }
    5015              :    /* while  */
    5016      9134438 :   if (on)
    5017              :     {
    5018       400301 :       M2Quads_PushT (n);
    5019              :     }
    5020      9134438 : }
    5021              : 
    5022              : 
    5023              : /*
    5024              :    SubrangeType := '[' ConstExpression '..' ConstExpression 
    5025              :                    ']' 
    5026              : 
    5027              :    first  symbols:lsbratok
    5028              :    
    5029              :    cannot reachend
    5030              : */
    5031              : 
    5032       101862 : static void SubrangeType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5033              : {
    5034       101862 :   Expect (M2Reserved_lsbratok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5035       101862 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    5036       101862 :   Expect (M2Reserved_periodperiodtok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5037       101862 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    5038       101862 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    5039       101862 : }
    5040              : 
    5041              : 
    5042              : /*
    5043              :    ArrayType := 'ARRAY' SimpleType { ',' SimpleType  } 
    5044              :                 'OF' Type 
    5045              : 
    5046              :    first  symbols:arraytok
    5047              :    
    5048              :    cannot reachend
    5049              : */
    5050              : 
    5051        99984 : static void ArrayType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5052              : {
    5053        99984 :   Expect (M2Reserved_arraytok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5054        99984 :   SimpleType (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    5055       200106 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    5056              :     {
    5057          138 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5058          138 :       SimpleType (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    5059              :     }
    5060              :    /* while  */
    5061        99984 :   Expect (M2Reserved_oftok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5062        99984 :   Type (stopset0, stopset1, stopset2);
    5063        99984 : }
    5064              : 
    5065              : 
    5066              : /*
    5067              :    RecordType := 'RECORD' [ DefaultRecordAttributes  ] 
    5068              :                  FieldListSequence 'END' 
    5069              : 
    5070              :    first  symbols:recordtok
    5071              :    
    5072              :    cannot reachend
    5073              : */
    5074              : 
    5075        71479 : static void RecordType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5076              : {
    5077        71479 :   Expect (M2Reserved_recordtok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5078        71479 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    5079              :     {
    5080           36 :       DefaultRecordAttributes (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5081              :     }
    5082        71479 :   FieldListSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5083        71479 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5084        71479 : }
    5085              : 
    5086              : 
    5087              : /*
    5088              :    DefaultRecordAttributes := '' 
    5089              : 
    5090              :    first  symbols:ldirectivetok
    5091              :    
    5092              :    cannot reachend
    5093              : */
    5094              : 
    5095           36 : static void DefaultRecordAttributes (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5096              : {
    5097           36 :   Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5098           36 :   AttributeExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5099           36 :   Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    5100           36 : }
    5101              : 
    5102              : 
    5103              : /*
    5104              :    RecordFieldPragma := [ ''  ] 
    5105              : 
    5106              :    first  symbols:ldirectivetok
    5107              :    
    5108              :    reachend
    5109              : */
    5110              : 
    5111       298928 : static void RecordFieldPragma (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5112              : {
    5113       298928 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    5114              :     {
    5115           12 :       Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5116           12 :       FieldPragmaExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok)) | (1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5117           24 :       while (M2LexBuf_currenttoken == M2Reserved_commatok)
    5118              :         {
    5119            0 :           Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5120            0 :           FieldPragmaExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5121              :         }
    5122              :        /* while  */
    5123           12 :       Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    5124              :     }
    5125       298928 : }
    5126              : 
    5127              : 
    5128              : /*
    5129              :    FieldPragmaExpression := 
    5130              :                             % PushAutoOff  %
    5131              :                             Ident [ '(' ConstExpression 
    5132              :                                     ')'  ] 
    5133              :                             % PopAuto  %
    5134              :                             
    5135              : 
    5136              :    first  symbols:identtok
    5137              :    
    5138              :    cannot reachend
    5139              : */
    5140              : 
    5141           12 : static void FieldPragmaExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5142              : {
    5143           12 :   M2Quads_PushAutoOff ();
    5144           12 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5145           12 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5146              :     {
    5147           12 :       Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5148           12 :       ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5149           12 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    5150              :     }
    5151           12 :   M2Quads_PopAuto ();
    5152           12 : }
    5153              : 
    5154              : 
    5155              : /*
    5156              :    AttributeExpression := 
    5157              :                           % PushAutoOff  %
    5158              :                           Ident '(' ConstExpression 
    5159              :                           ')' 
    5160              :                           % PopAuto  %
    5161              :                           
    5162              : 
    5163              :    first  symbols:identtok
    5164              :    
    5165              :    cannot reachend
    5166              : */
    5167              : 
    5168          108 : static void AttributeExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5169              : {
    5170          108 :   M2Quads_PushAutoOff ();
    5171          108 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5172          108 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5173          108 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5174          108 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    5175          108 :   M2Quads_PopAuto ();
    5176          108 : }
    5177              : 
    5178              : 
    5179              : /*
    5180              :    FieldListSequence := FieldListStatement { ';' FieldListStatement  } 
    5181              : 
    5182              :    first  symbols:casetok, identtok, semicolontok
    5183              :    
    5184              :    reachend
    5185              : */
    5186              : 
    5187        77569 : static void FieldListSequence (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5188              : {
    5189        77569 :   FieldListStatement (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5190       445346 :   while (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    5191              :     {
    5192       290208 :       Expect (M2Reserved_semicolontok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5193       290208 :       FieldListStatement (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5194              :     }
    5195              :    /* while  */
    5196        77569 : }
    5197              : 
    5198              : 
    5199              : /*
    5200              :    FieldListStatement := [ FieldList  ] 
    5201              : 
    5202              :    first  symbols:identtok, casetok
    5203              :    
    5204              :    reachend
    5205              : */
    5206              : 
    5207       367777 : static void FieldListStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5208              : {
    5209       367777 :   if ((M2LexBuf_currenttoken == M2Reserved_casetok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    5210              :     {
    5211       301916 :       FieldList (stopset0, stopset1, stopset2);
    5212              :     }
    5213       367777 : }
    5214              : 
    5215              : 
    5216              : /*
    5217              :    FieldList := IdentList ':' Type RecordFieldPragma  | 
    5218              :                 'CASE' CaseTag 'OF' Varient { '|' Varient  } 
    5219              :                 [ 'ELSE' FieldListSequence  ] 'END' 
    5220              : 
    5221              :    first  symbols:casetok, identtok
    5222              :    
    5223              :    cannot reachend
    5224              : */
    5225              : 
    5226       301916 : static void FieldList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5227              : {
    5228       301916 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    5229              :     {
    5230       298928 :       IdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5231       298928 :       Expect (M2Reserved_colontok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5232       298928 :       Type (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5233       298928 :       RecordFieldPragma (stopset0, stopset1, stopset2);
    5234              :     }
    5235         2988 :   else if (M2LexBuf_currenttoken == M2Reserved_casetok)
    5236              :     {
    5237              :       /* avoid dangling else.  */
    5238         2988 :       Expect (M2Reserved_casetok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5239         2988 :       CaseTag (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    5240         2988 :       Expect (M2Reserved_oftok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5241         2988 :       Varient (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5242         9324 :       while (M2LexBuf_currenttoken == M2Reserved_bartok)
    5243              :         {
    5244         3348 :           Expect (M2Reserved_bartok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5245         3348 :           Varient (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok))), stopset2);
    5246              :         }
    5247              :        /* while  */
    5248         2988 :       if (M2LexBuf_currenttoken == M2Reserved_elsetok)
    5249              :         {
    5250          114 :           Expect (M2Reserved_elsetok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5251          114 :           FieldListSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5252              :         }
    5253         2988 :       Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5254              :     }
    5255              :   else
    5256              :     {
    5257              :       /* avoid dangling else.  */
    5258            0 :       ErrorArray ((const char *) "expecting one of: {%KCASE} {%Kidentifier}", 41);
    5259              :     }
    5260       301916 : }
    5261              : 
    5262              : 
    5263              : /*
    5264              :    TagIdent := [ Ident  ] 
    5265              : 
    5266              :    first  symbols:identtok
    5267              :    
    5268              :    reachend
    5269              : */
    5270              : 
    5271         2988 : static void TagIdent (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5272              : {
    5273            0 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    5274              :     {
    5275         2946 :       Ident (stopset0, stopset1, stopset2);
    5276              :     }
    5277            0 : }
    5278              : 
    5279              : 
    5280              : /*
    5281              :    CaseTag := TagIdent [ ':' Qualident  ] 
    5282              : 
    5283              :    first  symbols:colontok, identtok
    5284              :    
    5285              :    reachend
    5286              : */
    5287              : 
    5288         2988 : static void CaseTag (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5289              : {
    5290         2988 :   TagIdent (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5291         2988 :   if (M2LexBuf_currenttoken == M2Reserved_colontok)
    5292              :     {
    5293         2976 :       Expect (M2Reserved_colontok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5294         2976 :       Qualident (stopset0, stopset1, stopset2);
    5295              :     }
    5296         2988 : }
    5297              : 
    5298              : 
    5299              : /*
    5300              :    Varient := [ VarientCaseLabelList ':' FieldListSequence  ] 
    5301              : 
    5302              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    5303              :    
    5304              :    reachend
    5305              : */
    5306              : 
    5307         6336 : static void Varient (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5308              : {
    5309         6336 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    5310              :     {
    5311         5976 :       VarientCaseLabelList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5312         5976 :       Expect (M2Reserved_colontok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5313         5976 :       FieldListSequence (stopset0, stopset1, stopset2);
    5314              :     }
    5315         6336 : }
    5316              : 
    5317              : 
    5318              : /*
    5319              :    VarientCaseLabelList := VarientCaseLabels { ',' 
    5320              :                                                VarientCaseLabels  } 
    5321              : 
    5322              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
    5323              :    
    5324              :    cannot reachend
    5325              : */
    5326              : 
    5327         5976 : static void VarientCaseLabelList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5328              : {
    5329         5976 :   VarientCaseLabels (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5330        11994 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    5331              :     {
    5332           42 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5333           42 :       VarientCaseLabels (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5334              :     }
    5335              :    /* while  */
    5336         5976 : }
    5337              : 
    5338              : 
    5339              : /*
    5340              :    VarientCaseLabels := ConstExpression ( '..' ConstExpression  | 
    5341              :                                           
    5342              :                                           %  epsilon   %
    5343              :                                            ) 
    5344              : 
    5345              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    5346              :    
    5347              :    cannot reachend
    5348              : */
    5349              : 
    5350         6018 : static void VarientCaseLabels (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5351              : {
    5352         6018 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    5353         6018 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    5354              :     {
    5355            0 :       Expect (M2Reserved_periodperiodtok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5356            0 :       ConstExpression (stopset0, stopset1, stopset2);
    5357              :     }
    5358              :   /* epsilon  */
    5359         6018 : }
    5360              : 
    5361              : 
    5362              : /*
    5363              :    SilentConstExpression := 
    5364              :                             % PushAutoOff  %
    5365              :                             SilentSimpleConstExpr [ 
    5366              :    SilentRelation SilentSimpleConstExpr  ] 
    5367              :                             % PopAuto  %
    5368              :                             
    5369              : 
    5370              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    5371              :    
    5372              :    cannot reachend
    5373              : */
    5374              : 
    5375            0 : static void SilentConstExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5376              : {
    5377            0 :   M2Quads_PushAutoOff ();
    5378            0 :   SilentSimpleConstExpr (stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_intok-M2Reserved_arraytok))), stopset2);
    5379            0 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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))
    5380              :     {
    5381            0 :       SilentRelation (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5382            0 :       SilentSimpleConstExpr (stopset0, stopset1, stopset2);
    5383              :     }
    5384            0 :   M2Quads_PopAuto ();
    5385            0 : }
    5386              : 
    5387              : 
    5388              : /*
    5389              :    SilentRelation := '='  | '#'  | '<>'  | '<'  | 
    5390              :                      '<='  | '>'  | '>='  | 'IN' 
    5391              : 
    5392              :    first  symbols:intok, greaterequaltok, greatertok, lessequaltok, lesstok, lessgreatertok, hashtok, equaltok
    5393              :    
    5394              :    cannot reachend
    5395              : */
    5396              : 
    5397      2498152 : static void SilentRelation (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5398              : {
    5399      2498152 :   if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    5400              :     {
    5401       800310 :       Expect (M2Reserved_equaltok, stopset0, stopset1, stopset2);
    5402              :     }
    5403              :   else if (M2LexBuf_currenttoken == M2Reserved_hashtok)
    5404              :     {
    5405              :       /* avoid dangling else.  */
    5406       569534 :       Expect (M2Reserved_hashtok, stopset0, stopset1, stopset2);
    5407              :     }
    5408              :   else if (M2LexBuf_currenttoken == M2Reserved_lessgreatertok)
    5409              :     {
    5410              :       /* avoid dangling else.  */
    5411           84 :       Expect (M2Reserved_lessgreatertok, stopset0, stopset1, stopset2);
    5412              :     }
    5413              :   else if (M2LexBuf_currenttoken == M2Reserved_lesstok)
    5414              :     {
    5415              :       /* avoid dangling else.  */
    5416       429864 :       Expect (M2Reserved_lesstok, stopset0, stopset1, stopset2);
    5417              :     }
    5418              :   else if (M2LexBuf_currenttoken == M2Reserved_lessequaltok)
    5419              :     {
    5420              :       /* avoid dangling else.  */
    5421       225408 :       Expect (M2Reserved_lessequaltok, stopset0, stopset1, stopset2);
    5422              :     }
    5423              :   else if (M2LexBuf_currenttoken == M2Reserved_greatertok)
    5424              :     {
    5425              :       /* avoid dangling else.  */
    5426       277064 :       Expect (M2Reserved_greatertok, stopset0, stopset1, stopset2);
    5427              :     }
    5428              :   else if (M2LexBuf_currenttoken == M2Reserved_greaterequaltok)
    5429              :     {
    5430              :       /* avoid dangling else.  */
    5431       112850 :       Expect (M2Reserved_greaterequaltok, stopset0, stopset1, stopset2);
    5432              :     }
    5433              :   else if (M2LexBuf_currenttoken == M2Reserved_intok)
    5434              :     {
    5435              :       /* avoid dangling else.  */
    5436        83038 :       Expect (M2Reserved_intok, stopset0, stopset1, stopset2);
    5437              :     }
    5438              :   else
    5439              :     {
    5440              :       /* avoid dangling else.  */
    5441            0 :       ErrorArray ((const char *) "expecting one of: {%KIN} {%K>=} {%K>} {%K<=} {%K<} {%K<>} {%K#} {%K=}", 69);
    5442              :     }
    5443      2498152 : }
    5444              : 
    5445              : 
    5446              : /*
    5447              :    SilentSimpleConstExpr := SilentUnaryOrConstTerm 
    5448              :                             { SilentAddOperator SilentConstTerm  } 
    5449              : 
    5450              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    5451              :    
    5452              :    cannot reachend
    5453              : */
    5454              : 
    5455            0 : static void SilentSimpleConstExpr (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5456              : {
    5457            0 :   SilentUnaryOrConstTerm (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    5458            0 :   while (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_ortok))
    5459              :     {
    5460            0 :       SilentAddOperator (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5461            0 :       SilentConstTerm (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    5462              :     }
    5463              :    /* while  */
    5464            0 : }
    5465              : 
    5466              : 
    5467              : /*
    5468              :    SilentUnaryOrConstTerm := '+' SilentConstTerm  | 
    5469              :                              '-' SilentConstTerm  | 
    5470              :                              SilentConstTerm 
    5471              : 
    5472              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    5473              :    
    5474              :    cannot reachend
    5475              : */
    5476              : 
    5477            0 : static void SilentUnaryOrConstTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5478              : {
    5479            0 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    5480              :     {
    5481            0 :       Expect (M2Reserved_plustok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5482            0 :       SilentConstTerm (stopset0, stopset1, stopset2);
    5483              :     }
    5484            0 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    5485              :     {
    5486              :       /* avoid dangling else.  */
    5487            0 :       Expect (M2Reserved_minustok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5488            0 :       SilentConstTerm (stopset0, stopset1, stopset2);
    5489              :     }
    5490            0 :   else if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    5491              :     {
    5492              :       /* avoid dangling else.  */
    5493            0 :       SilentConstTerm (stopset0, stopset1, stopset2);
    5494              :     }
    5495              :   else
    5496              :     {
    5497              :       /* avoid dangling else.  */
    5498            0 :       ErrorArray ((const char *) "expecting one of: {%KNOT} {%K(} {%Kinteger number} {%Kreal number} {%K__ATTRIBUTE__} {%K%{} {%Kidentifier} {%Kstring} {%K-} {%K+}", 129);
    5499              :     }
    5500            0 : }
    5501              : 
    5502              : 
    5503              : /*
    5504              :    SilentAddOperator := '+'  | '-'  | 'OR' 
    5505              : 
    5506              :    first  symbols:ortok, minustok, plustok
    5507              :    
    5508              :    cannot reachend
    5509              : */
    5510              : 
    5511            0 : static void SilentAddOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5512              : {
    5513            0 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    5514              :     {
    5515            0 :       Expect (M2Reserved_plustok, stopset0, stopset1, stopset2);
    5516              :     }
    5517            0 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    5518              :     {
    5519              :       /* avoid dangling else.  */
    5520            0 :       Expect (M2Reserved_minustok, stopset0, stopset1, stopset2);
    5521              :     }
    5522            0 :   else if (M2LexBuf_currenttoken == M2Reserved_ortok)
    5523              :     {
    5524              :       /* avoid dangling else.  */
    5525            0 :       Expect (M2Reserved_ortok, stopset0, stopset1, stopset2);
    5526              :     }
    5527              :   else
    5528              :     {
    5529              :       /* avoid dangling else.  */
    5530            0 :       ErrorArray ((const char *) "expecting one of: {%KOR} {%K-} {%K+}", 36);
    5531              :     }
    5532            0 : }
    5533              : 
    5534              : 
    5535              : /*
    5536              :    SilentConstTerm := SilentConstFactor { SilentMulOperator 
    5537              :                                           SilentConstFactor  } 
    5538              : 
    5539              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok
    5540              :    
    5541              :    cannot reachend
    5542              : */
    5543              : 
    5544            0 : static void SilentConstTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5545              : {
    5546            0 :   SilentConstFactor (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_timestok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_modtok-M2Reserved_arraytok)) | (1 << (M2Reserved_divtok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    5547            0 :   while ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))))) != 0)))) || (M2LexBuf_currenttoken == M2Reserved_remtok))
    5548              :     {
    5549            0 :       SilentMulOperator (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5550            0 :       SilentConstFactor (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_timestok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_ambersandtok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    5551              :     }
    5552              :    /* while  */
    5553            0 : }
    5554              : 
    5555              : 
    5556              : /*
    5557              :    SilentMulOperator := '*'  | '/'  | 'DIV'  | 
    5558              :                         'MOD'  | 'REM'  | 'AND'  | 
    5559              :                         '&' 
    5560              : 
    5561              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
    5562              :    
    5563              :    cannot reachend
    5564              : */
    5565              : 
    5566            0 : static void SilentMulOperator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5567              : {
    5568            0 :   if (M2LexBuf_currenttoken == M2Reserved_timestok)
    5569              :     {
    5570            0 :       Expect (M2Reserved_timestok, stopset0, stopset1, stopset2);
    5571              :     }
    5572              :   else if (M2LexBuf_currenttoken == M2Reserved_dividetok)
    5573              :     {
    5574              :       /* avoid dangling else.  */
    5575            0 :       Expect (M2Reserved_dividetok, stopset0, stopset1, stopset2);
    5576              :     }
    5577              :   else if (M2LexBuf_currenttoken == M2Reserved_divtok)
    5578              :     {
    5579              :       /* avoid dangling else.  */
    5580            0 :       Expect (M2Reserved_divtok, stopset0, stopset1, stopset2);
    5581              :     }
    5582              :   else if (M2LexBuf_currenttoken == M2Reserved_modtok)
    5583              :     {
    5584              :       /* avoid dangling else.  */
    5585            0 :       Expect (M2Reserved_modtok, stopset0, stopset1, stopset2);
    5586              :     }
    5587              :   else if (M2LexBuf_currenttoken == M2Reserved_remtok)
    5588              :     {
    5589              :       /* avoid dangling else.  */
    5590            0 :       Expect (M2Reserved_remtok, stopset0, stopset1, stopset2);
    5591              :     }
    5592              :   else if (M2LexBuf_currenttoken == M2Reserved_andtok)
    5593              :     {
    5594              :       /* avoid dangling else.  */
    5595            0 :       Expect (M2Reserved_andtok, stopset0, stopset1, stopset2);
    5596              :     }
    5597              :   else if (M2LexBuf_currenttoken == M2Reserved_ambersandtok)
    5598              :     {
    5599              :       /* avoid dangling else.  */
    5600            0 :       Expect (M2Reserved_ambersandtok, stopset0, stopset1, stopset2);
    5601              :     }
    5602              :   else
    5603              :     {
    5604              :       /* avoid dangling else.  */
    5605            0 :       ErrorArray ((const char *) "expecting one of: {%K&} {%KAND} {%KREM} {%KMOD} {%KDIV} {%K/} {%K*}", 67);
    5606              :     }
    5607            0 : }
    5608              : 
    5609              : 
    5610              : /*
    5611              :    SilentConstFactor := Number  | SilentConstString  | 
    5612              :                         SilentConstSetOrQualidentOrFunction  | 
    5613              :                         '(' SilentConstExpression ')'  | 
    5614              :                         'NOT' SilentConstFactor  | 
    5615              :                         SilentConstAttribute 
    5616              : 
    5617              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok
    5618              :    
    5619              :    cannot reachend
    5620              : */
    5621              : 
    5622            0 : static void SilentConstFactor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5623              : {
    5624            0 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok))))) != 0)))
    5625              :     {
    5626            0 :       Number (stopset0, stopset1, stopset2);
    5627              :     }
    5628            0 :   else if (M2LexBuf_currenttoken == M2Reserved_stringtok)
    5629              :     {
    5630              :       /* avoid dangling else.  */
    5631            0 :       SilentConstString (stopset0, stopset1, stopset2);
    5632              :     }
    5633              :   else if ((M2LexBuf_currenttoken == M2Reserved_lcbratok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    5634              :     {
    5635              :       /* avoid dangling else.  */
    5636            0 :       SilentConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
    5637              :     }
    5638              :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5639              :     {
    5640              :       /* avoid dangling else.  */
    5641            0 :       Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5642            0 :       SilentConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5643            0 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    5644              :     }
    5645              :   else if (M2LexBuf_currenttoken == M2Reserved_nottok)
    5646              :     {
    5647              :       /* avoid dangling else.  */
    5648            0 :       Expect (M2Reserved_nottok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5649            0 :       SilentConstFactor (stopset0, stopset1, stopset2);
    5650              :     }
    5651              :   else if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    5652              :     {
    5653              :       /* avoid dangling else.  */
    5654            0 :       SilentConstAttribute (stopset0, stopset1, stopset2);
    5655              :     }
    5656              :   else
    5657              :     {
    5658              :       /* avoid dangling else.  */
    5659            0 :       ErrorArray ((const char *) "expecting one of: {%K__ATTRIBUTE__} {%KNOT} {%K(} {%K%{} {%Kidentifier} {%Kstring} {%Kinteger number} {%Kreal number}", 117);
    5660              :     }
    5661            0 : }
    5662              : 
    5663              : 
    5664              : /*
    5665              :    SilentConstString := string 
    5666              : 
    5667              :    first  symbols:stringtok
    5668              :    
    5669              :    cannot reachend
    5670              : */
    5671              : 
    5672            0 : static void SilentConstString (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5673              : {
    5674            0 :   string (stopset0, stopset1, stopset2);
    5675            0 : }
    5676              : 
    5677              : 
    5678              : /*
    5679              :    SilentConstAttribute := '__ATTRIBUTE__' '__BUILTIN__' 
    5680              :                            '(' '(' SilentConstAttributeExpression 
    5681              :                            ')' ')' 
    5682              : 
    5683              :    first  symbols:attributetok
    5684              :    
    5685              :    cannot reachend
    5686              : */
    5687              : 
    5688            0 : static void SilentConstAttribute (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5689              : {
    5690            0 :   Expect (M2Reserved_attributetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok))));
    5691            0 :   Expect (M2Reserved_builtintok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5692            0 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5693            0 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lesstok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5694            0 :   SilentConstAttributeExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5695            0 :   Expect (M2Reserved_rparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5696            0 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    5697            0 : }
    5698              : 
    5699              : 
    5700              : /*
    5701              :    SilentConstAttributeExpression := Ident  | 
    5702              :                                      '<' Ident ',' 
    5703              :                                      SilentConstString 
    5704              :                                      '>' 
    5705              : 
    5706              :    first  symbols:lesstok, identtok
    5707              :    
    5708              :    cannot reachend
    5709              : */
    5710              : 
    5711            0 : static void SilentConstAttributeExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5712              : {
    5713            0 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    5714              :     {
    5715            0 :       Ident (stopset0, stopset1, stopset2);
    5716              :     }
    5717            0 :   else if (M2LexBuf_currenttoken == M2Reserved_lesstok)
    5718              :     {
    5719              :       /* avoid dangling else.  */
    5720            0 :       Expect (M2Reserved_lesstok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5721            0 :       Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5722            0 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    5723            0 :       SilentConstString (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_greatertok-M2Reserved_eoftok))), stopset1, stopset2);
    5724            0 :       Expect (M2Reserved_greatertok, stopset0, stopset1, stopset2);
    5725              :     }
    5726              :   else
    5727              :     {
    5728              :       /* avoid dangling else.  */
    5729            0 :       ErrorArray ((const char *) "expecting one of: {%K<} {%Kidentifier}", 38);
    5730              :     }
    5731            0 : }
    5732              : 
    5733              : 
    5734              : /*
    5735              :    SilentComponentElement := SilentConstExpression 
    5736              :                              [ '..' SilentConstExpression  ] 
    5737              : 
    5738              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    5739              :    
    5740              :    cannot reachend
    5741              : */
    5742              : 
    5743            0 : static void SilentComponentElement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5744              : {
    5745            0 :   SilentConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    5746            0 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    5747              :     {
    5748            0 :       Expect (M2Reserved_periodperiodtok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5749            0 :       SilentConstExpression (stopset0, stopset1, stopset2);
    5750              :     }
    5751            0 : }
    5752              : 
    5753              : 
    5754              : /*
    5755              :    SilentComponentValue := SilentComponentElement [ 
    5756              :    'BY' SilentConstExpression  ] 
    5757              : 
    5758              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    5759              :    
    5760              :    cannot reachend
    5761              : */
    5762              : 
    5763            0 : static void SilentComponentValue (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5764              : {
    5765            0 :   SilentComponentElement (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_bytok-M2Reserved_arraytok))), stopset2);
    5766            0 :   if (M2LexBuf_currenttoken == M2Reserved_bytok)
    5767              :     {
    5768            0 :       Expect (M2Reserved_bytok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5769            0 :       SilentConstExpression (stopset0, stopset1, stopset2);
    5770              :     }
    5771            0 : }
    5772              : 
    5773              : 
    5774              : /*
    5775              :    SilentArraySetRecordValue := SilentComponentValue 
    5776              :                                 { ',' SilentComponentValue  } 
    5777              : 
    5778              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    5779              :    
    5780              :    cannot reachend
    5781              : */
    5782              : 
    5783            0 : static void SilentArraySetRecordValue (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5784              : {
    5785            0 :   SilentComponentValue (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5786            0 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    5787              :     {
    5788            0 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5789            0 :       SilentComponentValue (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5790              :     }
    5791              :    /* while  */
    5792            0 : }
    5793              : 
    5794              : 
    5795              : /*
    5796              :    SilentConstructor := '{' 
    5797              :                         % SilentBuildConstructor  %
    5798              :                         [ SilentArraySetRecordValue  ] 
    5799              :                         '}' 
    5800              : 
    5801              :    first  symbols:lcbratok
    5802              :    
    5803              :    cannot reachend
    5804              : */
    5805              : 
    5806            0 : static void SilentConstructor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5807              : {
    5808            0 :   Expect (M2Reserved_lcbratok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5809            0 :   M2Quads_SilentBuildConstructor ();
    5810            0 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    5811              :     {
    5812            0 :       SilentArraySetRecordValue (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rcbratok-M2Reserved_eoftok))), stopset1, stopset2);
    5813              :     }
    5814            0 :   Expect (M2Reserved_rcbratok, stopset0, stopset1, stopset2);
    5815            0 : }
    5816              : 
    5817              : 
    5818              : /*
    5819              :    SilentConstSetOrQualidentOrFunction := SilentConstructor  | 
    5820              :                                           Qualident 
    5821              :                                           [ SilentConstructor  | 
    5822              :                                             SilentActualParameters  ] 
    5823              : 
    5824              :    first  symbols:identtok, lcbratok
    5825              :    
    5826              :    cannot reachend
    5827              : */
    5828              : 
    5829            0 : static void SilentConstSetOrQualidentOrFunction (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5830              : {
    5831            0 :   if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    5832              :     {
    5833            0 :       SilentConstructor (stopset0, stopset1, stopset2);
    5834              :     }
    5835            0 :   else if (M2LexBuf_currenttoken == M2Reserved_identtok)
    5836              :     {
    5837              :       /* avoid dangling else.  */
    5838            0 :       Qualident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5839            0 :       if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0)))
    5840              :         {
    5841              :           /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    5842              :           /* seen optional [ | ] expression  */
    5843            0 :           if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    5844              :             {
    5845            0 :               SilentConstructor (stopset0, stopset1, stopset2);
    5846              :             }
    5847            0 :           else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5848              :             {
    5849              :               /* avoid dangling else.  */
    5850            0 :               SilentActualParameters (stopset0, stopset1, stopset2);
    5851              :             }
    5852              :           else
    5853              :             {
    5854              :               /* avoid dangling else.  */
    5855            0 :               ErrorArray ((const char *) "expecting one of: {%K(} {%K%{}", 30);
    5856              :             }
    5857              :         }
    5858              :       /* end of optional [ | ] expression  */
    5859              :     }
    5860              :   else
    5861              :     {
    5862              :       /* avoid dangling else.  */
    5863            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%K%{}", 39);
    5864              :     }
    5865            0 : }
    5866              : 
    5867              : 
    5868              : /*
    5869              :    SilentActualParameters := '(' [ SilentExpList  ] 
    5870              :                              ')' 
    5871              : 
    5872              :    first  symbols:lparatok
    5873              :    
    5874              :    cannot reachend
    5875              : */
    5876              : 
    5877            0 : static void SilentActualParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5878              : {
    5879            0 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5880            0 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    5881              :     {
    5882            0 :       SilentExpList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5883              :     }
    5884            0 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    5885            0 : }
    5886              : 
    5887              : 
    5888              : /*
    5889              :    SilentExpList := SilentConstExpression { ',' SilentConstExpression  } 
    5890              : 
    5891              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    5892              :    
    5893              :    cannot reachend
    5894              : */
    5895              : 
    5896            0 : static void SilentExpList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5897              : {
    5898            0 :   SilentConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5899            0 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    5900              :     {
    5901            0 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    5902            0 :       SilentConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    5903              :     }
    5904              :    /* while  */
    5905            0 : }
    5906              : 
    5907              : 
    5908              : /*
    5909              :    SetType := ( 'SET'  | 'PACKEDSET'  ) 'OF' SimpleType 
    5910              : 
    5911              :    first  symbols:oftok, packedsettok, settok
    5912              :    
    5913              :    cannot reachend
    5914              : */
    5915              : 
    5916         4742 : static void SetType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5917              : {
    5918         4742 :   if (M2LexBuf_currenttoken == M2Reserved_settok)
    5919              :     {
    5920         1916 :       Expect (M2Reserved_settok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    5921              :     }
    5922         2826 :   else if (M2LexBuf_currenttoken == M2Reserved_packedsettok)
    5923              :     {
    5924              :       /* avoid dangling else.  */
    5925         2826 :       Expect (M2Reserved_packedsettok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    5926              :     }
    5927              :   else
    5928              :     {
    5929              :       /* avoid dangling else.  */
    5930            0 :       ErrorArray ((const char *) "expecting one of: {%KPACKEDSET} {%KSET}", 39);
    5931              :     }
    5932         4742 :   Expect (M2Reserved_oftok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5933         4742 :   SimpleType (stopset0, stopset1, stopset2);
    5934         4742 : }
    5935              : 
    5936              : 
    5937              : /*
    5938              :    PointerType := 'POINTER' 'TO' Type 
    5939              : 
    5940              :    first  symbols:pointertok
    5941              :    
    5942              :    cannot reachend
    5943              : */
    5944              : 
    5945       100907 : static void PointerType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5946              : {
    5947       100907 :   Expect (M2Reserved_pointertok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_totok-M2Reserved_unqualifiedtok))));
    5948       100907 :   Expect (M2Reserved_totok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5949       100907 :   Type (stopset0, stopset1, stopset2);
    5950       100907 : }
    5951              : 
    5952              : 
    5953              : /*
    5954              :    ProcedureType := 'PROCEDURE' [ FormalTypeList  ] 
    5955              : 
    5956              :    first  symbols:proceduretok
    5957              :    
    5958              :    cannot reachend
    5959              : */
    5960              : 
    5961        59118 : static void ProcedureType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5962              : {
    5963        59118 :   Expect (M2Reserved_proceduretok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5964        59118 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5965              :     {
    5966        44436 :       FormalTypeList (stopset0, stopset1, stopset2);
    5967              :     }
    5968        59118 : }
    5969              : 
    5970              : 
    5971              : /*
    5972              :    FormalTypeList := '(' ( ')' FormalReturn  | 
    5973              :                            ProcedureParameters ')' 
    5974              :                            FormalReturn  ) 
    5975              : 
    5976              :    first  symbols:lparatok
    5977              :    
    5978              :    cannot reachend
    5979              : */
    5980              : 
    5981        44436 : static void FormalTypeList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    5982              : {
    5983        44436 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5984        44436 :   if (M2LexBuf_currenttoken == M2Reserved_rparatok)
    5985              :     {
    5986         5676 :       Expect (M2Reserved_rparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5987         5676 :       FormalReturn (stopset0, stopset1, stopset2);
    5988              :     }
    5989        38760 :   else if ((M2LexBuf_currenttoken == M2Reserved_arraytok) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    5990              :     {
    5991              :       /* avoid dangling else.  */
    5992        38760 :       ProcedureParameters (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5993        38760 :       Expect (M2Reserved_rparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5994        38760 :       FormalReturn (stopset0, stopset1, stopset2);
    5995              :     }
    5996              :   else
    5997              :     {
    5998              :       /* avoid dangling else.  */
    5999            0 :       ErrorArray ((const char *) "expecting one of: {%KVAR} {%K...} {%KARRAY} {%Kidentifier} {%K)}", 64);
    6000              :     }
    6001        44436 : }
    6002              : 
    6003              : 
    6004              : /*
    6005              :    FormalReturn := [ ':' OptReturnType  ] 
    6006              : 
    6007              :    first  symbols:colontok
    6008              :    
    6009              :    reachend
    6010              : */
    6011              : 
    6012      4985624 : static void FormalReturn (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6013              : {
    6014      4985624 :   if (M2LexBuf_currenttoken == M2Reserved_colontok)
    6015              :     {
    6016      3139249 :       Expect (M2Reserved_colontok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6017      3139249 :       OptReturnType (stopset0, stopset1, stopset2);
    6018              :     }
    6019      4985624 : }
    6020              : 
    6021              : 
    6022              : /*
    6023              :    OptReturnType := '[' Qualident ']'  | 
    6024              :                     Qualident 
    6025              : 
    6026              :    first  symbols:identtok, lsbratok
    6027              :    
    6028              :    cannot reachend
    6029              : */
    6030              : 
    6031      3139249 : static void OptReturnType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6032              : {
    6033      3139249 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    6034              :     {
    6035       133804 :       Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6036       133804 :       Qualident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6037       133804 :       Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    6038              :     }
    6039      3005445 :   else if (M2LexBuf_currenttoken == M2Reserved_identtok)
    6040              :     {
    6041              :       /* avoid dangling else.  */
    6042      3005445 :       Qualident (stopset0, stopset1, stopset2);
    6043              :     }
    6044              :   else
    6045              :     {
    6046              :       /* avoid dangling else.  */
    6047            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%K[}", 38);
    6048              :     }
    6049      3139249 : }
    6050              : 
    6051              : 
    6052              : /*
    6053              :    ProcedureParameters := ProcedureParameter { ',' 
    6054              :                                                ProcedureParameter  } 
    6055              : 
    6056              :    first  symbols:identtok, arraytok, periodperiodperiodtok, vartok
    6057              :    
    6058              :    cannot reachend
    6059              : */
    6060              : 
    6061        38760 : static void ProcedureParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6062              : {
    6063        38760 :   ProcedureParameter (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6064       122130 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    6065              :     {
    6066        44610 :       Expect (M2Reserved_commatok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6067        44610 :       ProcedureParameter (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6068              :     }
    6069              :    /* while  */
    6070        38760 : }
    6071              : 
    6072              : 
    6073              : /*
    6074              :    ProcedureParameter := '...'  | 'VAR' FormalType  | 
    6075              :                          FormalType 
    6076              : 
    6077              :    first  symbols:arraytok, identtok, vartok, periodperiodperiodtok
    6078              :    
    6079              :    cannot reachend
    6080              : */
    6081              : 
    6082        83370 : static void ProcedureParameter (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6083              : {
    6084        83370 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok)
    6085              :     {
    6086            0 :       Expect (M2Reserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
    6087              :     }
    6088        83370 :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    6089              :     {
    6090              :       /* avoid dangling else.  */
    6091         6498 :       Expect (M2Reserved_vartok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6092         6498 :       FormalType (stopset0, stopset1, stopset2);
    6093              :     }
    6094        76872 :   else if ((M2LexBuf_currenttoken == M2Reserved_arraytok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    6095              :     {
    6096              :       /* avoid dangling else.  */
    6097        76872 :       FormalType (stopset0, stopset1, stopset2);
    6098              :     }
    6099              :   else
    6100              :     {
    6101              :       /* avoid dangling else.  */
    6102            0 :       ErrorArray ((const char *) "expecting one of: {%KARRAY} {%Kidentifier} {%KVAR} {%K...}", 58);
    6103              :     }
    6104        83370 : }
    6105              : 
    6106              : 
    6107              : /*
    6108              :    VarIdent := Ident [ '[' ConstExpression ']'  ] 
    6109              : 
    6110              :    first  symbols:identtok
    6111              :    
    6112              :    cannot reachend
    6113              : */
    6114              : 
    6115      1694884 : static void VarIdent (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6116              : {
    6117      1694884 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6118      1694884 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    6119              :     {
    6120           54 :       Expect (M2Reserved_lsbratok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    6121           54 :       ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6122           54 :       Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    6123              :     }
    6124      1694884 : }
    6125              : 
    6126              : 
    6127              : /*
    6128              :    VarIdentList := VarIdent { ',' VarIdent  } 
    6129              : 
    6130              :    first  symbols:identtok
    6131              :    
    6132              :    cannot reachend
    6133              : */
    6134              : 
    6135      1175442 : static void VarIdentList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6136              : {
    6137      1175442 :   VarIdent (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6138      2870326 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    6139              :     {
    6140       519442 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6141       519442 :       VarIdent (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6142              :     }
    6143              :    /* while  */
    6144      1175442 : }
    6145              : 
    6146              : 
    6147              : /*
    6148              :    VariableDeclaration := VarIdentList ':' Type Alignment 
    6149              : 
    6150              :    first  symbols:identtok
    6151              :    
    6152              :    cannot reachend
    6153              : */
    6154              : 
    6155      1175442 : static void VariableDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6156              : {
    6157      1175442 :   VarIdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6158      1175442 :   Expect (M2Reserved_colontok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6159      1175442 :   Type (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    6160      1175442 :   Alignment (stopset0, stopset1, stopset2);
    6161      1175442 : }
    6162              : 
    6163              : 
    6164              : /*
    6165              :    Designator := Qualident { SubDesignator  } 
    6166              : 
    6167              :    first  symbols:identtok
    6168              :    
    6169              :    cannot reachend
    6170              : */
    6171              : 
    6172      7071110 : static void Designator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6173              : {
    6174      7071110 :   Qualident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    6175     15231613 :   while ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))))) != 0)))
    6176              :     {
    6177      1089393 :       SubDesignator (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))), stopset1, stopset2);
    6178              :     }
    6179              :    /* while  */
    6180      7071110 : }
    6181              : 
    6182              : 
    6183              : /*
    6184              :    SubDesignator := '.' Ident  | '[' ArrayExpList ']'  | 
    6185              :                     '^' 
    6186              : 
    6187              :    first  symbols:uparrowtok, lsbratok, periodtok
    6188              :    
    6189              :    cannot reachend
    6190              : */
    6191              : 
    6192      3661743 : static void SubDesignator (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6193              : {
    6194      3661743 :   if (M2LexBuf_currenttoken == M2Reserved_periodtok)
    6195              :     {
    6196      1425731 :       Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6197      1425731 :       Ident (stopset0, stopset1, stopset2);
    6198              :     }
    6199      2236012 :   else if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    6200              :     {
    6201              :       /* avoid dangling else.  */
    6202       878816 :       Expect (M2Reserved_lsbratok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6203       878816 :       ArrayExpList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6204       878816 :       Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    6205              :     }
    6206      1357196 :   else if (M2LexBuf_currenttoken == M2Reserved_uparrowtok)
    6207              :     {
    6208              :       /* avoid dangling else.  */
    6209      1357196 :       Expect (M2Reserved_uparrowtok, stopset0, stopset1, stopset2);
    6210              :     }
    6211              :   else
    6212              :     {
    6213              :       /* avoid dangling else.  */
    6214            0 :       ErrorArray ((const char *) "expecting one of: {%K^} {%K[} {%K.}", 35);
    6215              :     }
    6216      3661743 : }
    6217              : 
    6218              : 
    6219              : /*
    6220              :    ArrayExpList := Expression { ',' Expression  } 
    6221              : 
    6222              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, plustok, minustok
    6223              :    
    6224              :    cannot reachend
    6225              : */
    6226              : 
    6227       878816 : static void ArrayExpList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6228              : {
    6229       878816 :   Expression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6230      1758082 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    6231              :     {
    6232          450 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6233          450 :       Expression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6234              :     }
    6235              :    /* while  */
    6236       878816 : }
    6237              : 
    6238              : 
    6239              : /*
    6240              :    ExpList := Expression { ',' Expression  } 
    6241              : 
    6242              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, plustok, minustok
    6243              :    
    6244              :    cannot reachend
    6245              : */
    6246              : 
    6247      7289439 : static void ExpList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6248              : {
    6249      7289439 :   Expression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6250     20183519 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    6251              :     {
    6252      5604641 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6253      5604641 :       Expression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6254              :     }
    6255              :    /* while  */
    6256      7289439 : }
    6257              : 
    6258              : 
    6259              : /*
    6260              :    Expression := SimpleExpression [ SilentRelation 
    6261              :                                     SimpleExpression  ] 
    6262              : 
    6263              :    first  symbols:identtok, lcbratok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    6264              :    
    6265              :    cannot reachend
    6266              : */
    6267              : 
    6268     23178261 : static void Expression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6269              : {
    6270     23178261 :   SimpleExpression (stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_intok-M2Reserved_arraytok))), stopset2);
    6271     23178261 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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))
    6272              :     {
    6273      2498152 :       SilentRelation (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6274      2498152 :       SimpleExpression (stopset0, stopset1, stopset2);
    6275              :     }
    6276     23178261 : }
    6277              : 
    6278              : 
    6279              : /*
    6280              :    SimpleExpression := UnaryOrTerm { AddOperator Term  } 
    6281              : 
    6282              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, plustok, minustok
    6283              :    
    6284              :    cannot reachend
    6285              : */
    6286              : 
    6287     25676413 : static void SimpleExpression (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6288              : {
    6289     25676413 :   UnaryOrTerm (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    6290     52199733 :   while (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_ortok))
    6291              :     {
    6292       846907 :       AddOperator (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6293       846907 :       Term (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    6294              :     }
    6295              :    /* while  */
    6296     25676413 : }
    6297              : 
    6298              : 
    6299              : /*
    6300              :    UnaryOrTerm := '+' Term  | '-' Term  | 
    6301              :                   Term 
    6302              : 
    6303              :    first  symbols:identtok, lcbratok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    6304              :    
    6305              :    cannot reachend
    6306              : */
    6307              : 
    6308     25676413 : static void UnaryOrTerm (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6309              : {
    6310     25676413 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    6311              :     {
    6312          144 :       Expect (M2Reserved_plustok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6313          144 :       Term (stopset0, stopset1, stopset2);
    6314              :     }
    6315     25676269 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    6316              :     {
    6317              :       /* avoid dangling else.  */
    6318       127695 :       Expect (M2Reserved_minustok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6319       127695 :       Term (stopset0, stopset1, stopset2);
    6320              :     }
    6321     25548574 :   else if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    6322              :     {
    6323              :       /* avoid dangling else.  */
    6324     25548574 :       Term (stopset0, stopset1, stopset2);
    6325              :     }
    6326              :   else
    6327              :     {
    6328              :       /* avoid dangling else.  */
    6329            0 :       ErrorArray ((const char *) "expecting one of: {%KNOT} {%K(} {%Kstring} {%Kinteger number} {%Kreal number} {%Kidentifier} {%K%{} {%K-} {%K+}", 111);
    6330              :     }
    6331     25676413 : }
    6332              : 
    6333              : 
    6334              : /*
    6335              :    Term := Factor { MulOperator Factor  } 
    6336              : 
    6337              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok
    6338              :    
    6339              :    cannot reachend
    6340              : */
    6341              : 
    6342     26523320 : static void Term (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6343              : {
    6344     26523320 :   Factor (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_timestok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_modtok-M2Reserved_arraytok)) | (1 << (M2Reserved_divtok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    6345     53832292 :   while ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))))) != 0)))) || (M2LexBuf_currenttoken == M2Reserved_remtok))
    6346              :     {
    6347       785652 :       MulOperator (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6348       785652 :       Factor (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_timestok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_ambersandtok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    6349              :     }
    6350              :    /* while  */
    6351     26523320 : }
    6352              : 
    6353              : 
    6354              : /*
    6355              :    Factor := Number  | string  | SetOrDesignatorOrFunction  | 
    6356              :              '(' Expression ')'  | 
    6357              :              'NOT' ( Factor  | ConstAttribute  ) 
    6358              : 
    6359              :    first  symbols:identtok, lcbratok, nottok, lparatok, stringtok, integertok, realtok
    6360              :    
    6361              :    cannot reachend
    6362              : */
    6363              : 
    6364     27308972 : static void Factor (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6365              : {
    6366     27444482 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok))))) != 0)))
    6367              :     {
    6368      2390486 :       Number (stopset0, stopset1, stopset2);
    6369              :     }
    6370     25053996 :   else if (M2LexBuf_currenttoken == M2Reserved_stringtok)
    6371              :     {
    6372              :       /* avoid dangling else.  */
    6373      1632387 :       string (stopset0, stopset1, stopset2);
    6374              :     }
    6375     23421609 :   else if ((M2LexBuf_currenttoken == M2Reserved_lcbratok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    6376              :     {
    6377              :       /* avoid dangling else.  */
    6378     21733162 :       SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
    6379              :     }
    6380      1688447 :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    6381              :     {
    6382              :       /* avoid dangling else.  */
    6383      1552937 :       Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6384      1552937 :       Expression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6385      1552937 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    6386              :     }
    6387       135510 :   else if (M2LexBuf_currenttoken == M2Reserved_nottok)
    6388              :     {
    6389              :       /* avoid dangling else.  */
    6390       135510 :       Expect (M2Reserved_nottok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6391       135510 :       if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    6392              :         {
    6393              :           Factor (stopset0, stopset1, stopset2);
    6394              :         }
    6395            0 :       else if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    6396              :         {
    6397              :           /* avoid dangling else.  */
    6398            0 :           ConstAttribute (stopset0, stopset1, stopset2);
    6399              :         }
    6400              :       else
    6401              :         {
    6402              :           /* avoid dangling else.  */
    6403            0 :           ErrorArray ((const char *) "expecting one of: {%K__ATTRIBUTE__} {%Kreal number} {%Kinteger number} {%Kstring} {%K(} {%KNOT} {%K%{} {%Kidentifier}", 117);
    6404              :         }
    6405              :     }
    6406              :   else
    6407              :     {
    6408              :       /* avoid dangling else.  */
    6409            0 :       ErrorArray ((const char *) "expecting one of: {%KNOT} {%K(} {%Kidentifier} {%K%{} {%Kstring} {%Kinteger number} {%Kreal number}", 99);
    6410              :     }
    6411     27308972 : }
    6412              : 
    6413              : 
    6414              : /*
    6415              :    PushQualident := 
    6416              :                     % VAR name         : Name ;
    6417              :                           init, ip1    : CARDINAL ;
    6418              :                           tok, tokstart: CARDINAL ;  %
    6419              :                     
    6420              :                     % PushAutoOn  %
    6421              :                     Ident 
    6422              :                     % IF IsAutoPushOn()
    6423              :                       THEN
    6424              :                          PopTtok (name, tokstart) ;
    6425              :                          tok := tokstart ;
    6426              :                          init := GetSym (name) ;
    6427              :                          IF init=NulSym
    6428              :                          THEN
    6429              :                             PushTFntok (NulSym, NulSym, name, tok)
    6430              :                          ELSE
    6431              :                             WHILE IsDefImp (init) OR IsModule (init) DO
    6432              :                                IF currenttoken # periodtok
    6433              :                                THEN
    6434              :                                   ErrorArrayAt ("expecting '.' after module in the construction of a qualident", tok) ;
    6435              :                                   IF tok#tokstart
    6436              :                                   THEN
    6437              :                                      tok := MakeVirtualTok (tokstart, tokstart, tok)
    6438              :                                   END ;
    6439              :                                   PushTtok (init, tok) ;
    6440              :                                   PopAuto ;
    6441              :                                   RETURN
    6442              :                                ELSE
    6443              :                                   Expect (periodtok, stopset0, stopset1, stopset2 + SetOfStop2{identtok}) ;
    6444              :                                   StartScope (init) ;
    6445              :                                   Ident (stopset0, stopset1, stopset2) ;
    6446              :                                   PopTtok (name, tok) ;
    6447              :                                   ip1 := GetSym (name) ;
    6448              :                                   IF ip1 = NulSym
    6449              :                                   THEN
    6450              :                                      ErrorArrayAt ("unknown ident in the construction of a qualident", tok) ;
    6451              :                                      EndScope ;
    6452              :                                      IF tok#tokstart
    6453              :                                      THEN
    6454              :                                         tok := MakeVirtualTok (tokstart, tokstart, tok)
    6455              :                                      END ;
    6456              :                                      PushTFntok (NulSym, NulSym, name, tok) ;
    6457              :                                      PopAuto ;
    6458              :                                      RETURN
    6459              :                                   ELSE
    6460              :                                      PutIncluded (ip1)
    6461              :                                   END ;
    6462              :                                   EndScope ;
    6463              :                                   CheckCanBeImported (init, ip1) ;
    6464              :                                   init := ip1
    6465              :                                END
    6466              :                             END ;
    6467              :                             IF tok#tokstart
    6468              :                             THEN
    6469              :                                tok := MakeVirtualTok (tokstart, tokstart, tok)
    6470              :                             END ;
    6471              :                             IF IsProcedure (init) OR IsProcType (init)
    6472              :                             THEN
    6473              :                                PushTtok (init, tok)
    6474              :                             ELSE
    6475              :                                PushTFtok (init, GetType(init), tok)
    6476              :                             END
    6477              :                          END
    6478              :                       ELSE  %
    6479              :                     { '.' Ident  } 
    6480              :                     % END  %
    6481              :                     
    6482              :                     % PopAuto  %
    6483              :                     
    6484              : 
    6485              :    first  symbols:identtok
    6486              :    
    6487              :    cannot reachend
    6488              : */
    6489              : 
    6490     21981020 : static void PushQualident (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6491              : {
    6492     21981020 :   NameKey_Name name;
    6493     21981020 :   unsigned int init;
    6494     21981020 :   unsigned int ip1;
    6495     21981020 :   unsigned int tok;
    6496     21981020 :   unsigned int tokstart;
    6497              : 
    6498     21981020 :   M2Quads_PushAutoOn ();
    6499     21981020 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    6500     21981020 :   if (M2Quads_IsAutoPushOn ())
    6501              :     {
    6502     21981020 :       M2Quads_PopTtok (&name, &tokstart);
    6503     21981020 :       tok = tokstart;
    6504     21981020 :       init = SymbolTable_GetSym (name);
    6505     21981020 :       if (init == SymbolTable_NulSym)
    6506              :         {
    6507       651189 :           M2Quads_PushTFntok (static_cast<unsigned int> (SymbolTable_NulSym), static_cast<unsigned int> (SymbolTable_NulSym), name, tok);
    6508              :         }
    6509              :       else
    6510              :         {
    6511     21973313 :           while ((SymbolTable_IsDefImp (init)) || (SymbolTable_IsModule (init)))
    6512              :             {
    6513       643500 :               if (M2LexBuf_currenttoken != M2Reserved_periodtok)
    6514              :                 {
    6515            0 :                   ErrorArrayAt ((const char *) "expecting '.' after module in the construction of a qualident", 61, tok);
    6516            0 :                   if (tok != tokstart)
    6517              :                     {
    6518            0 :                       tok = M2LexBuf_MakeVirtualTok (tokstart, tokstart, tok);
    6519              :                     }
    6520            0 :                   M2Quads_PushTtok (init, tok);
    6521            0 :                   M2Quads_PopAuto ();
    6522           18 :                   return;
    6523              :                 }
    6524              :               else
    6525              :                 {
    6526       643500 :                   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6527       643500 :                   SymbolTable_StartScope (init);
    6528       643500 :                   Ident (stopset0, stopset1, stopset2);
    6529       643500 :                   M2Quads_PopTtok (&name, &tok);
    6530       643500 :                   ip1 = SymbolTable_GetSym (name);
    6531       643500 :                   if (ip1 == SymbolTable_NulSym)
    6532              :                     {
    6533           18 :                       ErrorArrayAt ((const char *) "unknown ident in the construction of a qualident", 48, tok);
    6534           18 :                       SymbolTable_EndScope ();
    6535           18 :                       if (tok != tokstart)
    6536              :                         {
    6537           18 :                           tok = M2LexBuf_MakeVirtualTok (tokstart, tokstart, tok);
    6538              :                         }
    6539           18 :                       M2Quads_PushTFntok (static_cast<unsigned int> (SymbolTable_NulSym), static_cast<unsigned int> (SymbolTable_NulSym), name, tok);
    6540           18 :                       M2Quads_PopAuto ();
    6541           18 :                       return;
    6542              :                     }
    6543              :                   else
    6544              :                     {
    6545       643482 :                       SymbolTable_PutIncluded (ip1);
    6546              :                     }
    6547       643482 :                   SymbolTable_EndScope ();
    6548       643482 :                   P3SymBuild_CheckCanBeImported (init, ip1);
    6549       643482 :                   init = ip1;
    6550              :                 }
    6551              :             }
    6552     21329813 :           if (tok != tokstart)
    6553              :             {
    6554       643482 :               tok = M2LexBuf_MakeVirtualTok (tokstart, tokstart, tok);
    6555              :             }
    6556     21329813 :           if ((SymbolTable_IsProcedure (init)) || (SymbolTable_IsProcType (init)))
    6557              :             {
    6558      4600584 :               M2Quads_PushTtok (init, tok);
    6559              :             }
    6560              :           else
    6561              :             {
    6562     16729229 :               M2Quads_PushTFtok (init, SymbolTable_GetType (init), tok);
    6563              :             }
    6564              :         }
    6565              :     }
    6566              :   else
    6567              :     {
    6568            0 :       while (M2LexBuf_currenttoken == M2Reserved_periodtok)
    6569              :         {
    6570            0 :           Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6571            0 :           Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    6572              :         }
    6573              :        /* while  */
    6574              :     }
    6575     21981002 :   M2Quads_PopAuto ();
    6576              : }
    6577              : 
    6578              : 
    6579              : /*
    6580              :    ConstructorOrSimpleDes := Constructor  | 
    6581              :                              
    6582              :                              % PopNothing  %
    6583              :                              SimpleDes [ ActualParameters  ] 
    6584              : 
    6585              :    first  symbols:lparatok, uparrowtok, lsbratok, periodtok, lcbratok
    6586              :    
    6587              :    reachend
    6588              : */
    6589              : 
    6590      6136976 : static void ConstructorOrSimpleDes (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6591              : {
    6592      6136976 :   if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    6593              :     {
    6594        29750 :       Constructor (stopset0, stopset1, stopset2);
    6595              :     }
    6596              :   else
    6597              :     {
    6598      6107226 :       M2Quads_PopNothing ();
    6599      6107226 :       SimpleDes (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6600      6107226 :       if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    6601              :         {
    6602      4649396 :           ActualParameters (stopset0, stopset1, stopset2);
    6603              :         }
    6604              :     }
    6605      6136976 : }
    6606              : 
    6607              : 
    6608              : /*
    6609              :    SetOrDesignatorOrFunction := 
    6610              :                                 % VAR tokpos: CARDINAL ;  %
    6611              :                                 
    6612              :                                 % tokpos := GetTokenNo ()  %
    6613              :                                 
    6614              :                                 % PushAutoOff  %
    6615              :                                 ( PushQualident ( ConstructorOrSimpleDes  | 
    6616              :                                                   
    6617              :                                                   % PopNothing  %
    6618              :                                                    )  | 
    6619              :                                   
    6620              :                                   % BuildTypeForConstructor (tokpos)  %
    6621              :                                   Constructor  ) 
    6622              :                                 % PopAuto  %
    6623              :                                 
    6624              : 
    6625              :    first  symbols:lcbratok, identtok
    6626              :    
    6627              :    cannot reachend
    6628              : */
    6629              : 
    6630     21733162 : static void SetOrDesignatorOrFunction (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6631              : {
    6632     21733162 :   unsigned int tokpos;
    6633              : 
    6634     21733162 :   tokpos = M2LexBuf_GetTokenNo ();
    6635     21733162 :   M2Quads_PushAutoOff ();
    6636     21733162 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    6637              :     {
    6638     21732864 :       PushQualident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    6639     21732864 :       if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_SetOfStop0) ((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))))) != 0)))
    6640              :         {
    6641      6136976 :           ConstructorOrSimpleDes (stopset0, stopset1, stopset2);
    6642              :         }
    6643              :       else
    6644              :         {
    6645     15595888 :           M2Quads_PopNothing ();
    6646              :         }
    6647              :     }
    6648              :   else
    6649              :     {
    6650          298 :       M2Quads_BuildTypeForConstructor (tokpos);
    6651          298 :       Constructor (stopset0, stopset1, stopset2);
    6652              :     }
    6653     21733162 :   M2Quads_PopAuto ();
    6654     21733162 : }
    6655              : 
    6656              : 
    6657              : /*
    6658              :    SimpleDes := { SubDesignator  } 
    6659              : 
    6660              :    first  symbols:periodtok, lsbratok, uparrowtok
    6661              :    
    6662              :    reachend
    6663              : */
    6664              : 
    6665      6107226 : static void SimpleDes (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6666              : {
    6667      8679576 :   while ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))))) != 0)))
    6668              :     {
    6669      2572350 :       SubDesignator (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))), stopset1, stopset2);
    6670              :     }
    6671              :    /* while  */
    6672      6107226 : }
    6673              : 
    6674              : 
    6675              : /*
    6676              :    ActualParameters := '(' [ ExpList  ] ')' 
    6677              : 
    6678              :    first  symbols:lparatok
    6679              :    
    6680              :    cannot reachend
    6681              : */
    6682              : 
    6683      7415614 : static void ActualParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6684              : {
    6685      7415614 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6686      7415614 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    6687              :     {
    6688      7289439 :       ExpList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6689              :     }
    6690      7415614 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    6691      7415614 : }
    6692              : 
    6693              : 
    6694              : /*
    6695              :    ExitStatement := 'EXIT' 
    6696              : 
    6697              :    first  symbols:exittok
    6698              :    
    6699              :    cannot reachend
    6700              : */
    6701              : 
    6702          106 : static void ExitStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6703              : {
    6704            0 :   Expect (M2Reserved_exittok, stopset0, stopset1, stopset2);
    6705          106 : }
    6706              : 
    6707              : 
    6708              : /*
    6709              :    ReturnStatement := 'RETURN' [ Expression  ] 
    6710              : 
    6711              :    first  symbols:returntok
    6712              :    
    6713              :    cannot reachend
    6714              : */
    6715              : 
    6716      1455599 : static void ReturnStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6717              : {
    6718      1455599 :   Expect (M2Reserved_returntok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6719      1455599 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    6720              :     {
    6721      1431995 :       Expression (stopset0, stopset1, stopset2);
    6722              :     }
    6723      1455599 : }
    6724              : 
    6725              : 
    6726              : /*
    6727              :    Statement := 
    6728              :                 % PushAutoOff  %
    6729              :                 [ AssignmentOrProcedureCall  | 
    6730              :                   IfStatement  | CaseStatement  | 
    6731              :                   WhileStatement  | 
    6732              :                   RepeatStatement  | 
    6733              :                   LoopStatement  | ForStatement  | 
    6734              :                   WithStatement  | AsmStatement  | 
    6735              :                   ExitStatement  | ReturnStatement  | 
    6736              :                   RetryStatement  ] 
    6737              :                 % PopAuto ;  %
    6738              :                 
    6739              : 
    6740              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok
    6741              :    
    6742              :    reachend
    6743              : */
    6744              : 
    6745     11177717 : static void Statement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6746              : {
    6747     11177717 :   M2Quads_PushAutoOff ();
    6748     11177717 :   if ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_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)) & ((PCBuild_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))))
    6749              :     {
    6750              :       /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    6751              :       /* seen optional [ | ] expression  */
    6752     11002705 :       if (M2LexBuf_currenttoken == M2Reserved_identtok)
    6753              :         {
    6754      6876060 :           AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
    6755              :         }
    6756              :       else if (M2LexBuf_currenttoken == M2Reserved_iftok)
    6757              :         {
    6758              :           /* avoid dangling else.  */
    6759      1930819 :           IfStatement (stopset0, stopset1, stopset2);
    6760              :         }
    6761              :       else if (M2LexBuf_currenttoken == M2Reserved_casetok)
    6762              :         {
    6763              :           /* avoid dangling else.  */
    6764        41998 :           CaseStatement (stopset0, stopset1, stopset2);
    6765              :         }
    6766              :       else if (M2LexBuf_currenttoken == M2Reserved_whiletok)
    6767              :         {
    6768              :           /* avoid dangling else.  */
    6769       379324 :           WhileStatement (stopset0, stopset1, stopset2);
    6770              :         }
    6771              :       else if (M2LexBuf_currenttoken == M2Reserved_repeattok)
    6772              :         {
    6773              :           /* avoid dangling else.  */
    6774        71480 :           RepeatStatement (stopset0, stopset1, stopset2);
    6775              :         }
    6776              :       else if (M2LexBuf_currenttoken == M2Reserved_looptok)
    6777              :         {
    6778              :           /* avoid dangling else.  */
    6779         8680 :           LoopStatement (stopset0, stopset1, stopset2);
    6780              :         }
    6781              :       else if (M2LexBuf_currenttoken == M2Reserved_fortok)
    6782              :         {
    6783              :           /* avoid dangling else.  */
    6784        43394 :           ForStatement (stopset0, stopset1, stopset2);
    6785              :         }
    6786              :       else if (M2LexBuf_currenttoken == M2Reserved_withtok)
    6787              :         {
    6788              :           /* avoid dangling else.  */
    6789       195050 :           WithStatement (stopset0, stopset1, stopset2);
    6790              :         }
    6791              :       else if (M2LexBuf_currenttoken == M2Reserved_asmtok)
    6792              :         {
    6793              :           /* avoid dangling else.  */
    6794           27 :           AsmStatement (stopset0, stopset1, stopset2);
    6795              :         }
    6796              :       else if (M2LexBuf_currenttoken == M2Reserved_exittok)
    6797              :         {
    6798              :           /* avoid dangling else.  */
    6799          106 :           ExitStatement (stopset0, stopset1, stopset2);
    6800              :         }
    6801              :       else if (M2LexBuf_currenttoken == M2Reserved_returntok)
    6802              :         {
    6803              :           /* avoid dangling else.  */
    6804      1455599 :           ReturnStatement (stopset0, stopset1, stopset2);
    6805              :         }
    6806              :       else if (M2LexBuf_currenttoken == M2Reserved_retrytok)
    6807              :         {
    6808              :           /* avoid dangling else.  */
    6809          168 :           RetryStatement (stopset0, stopset1, stopset2);
    6810              :         }
    6811              :       else
    6812              :         {
    6813              :           /* avoid dangling else.  */
    6814            0 :           ErrorArray ((const char *) "expecting one of: {%KRETRY} {%KRETURN} {%KEXIT} {%KASM} {%KWITH} {%KFOR} {%KLOOP} {%KREPEAT} {%KWHILE} {%KCASE} {%KIF} {%Kidentifier}", 133);
    6815              :         }
    6816              :     }
    6817              :   /* end of optional [ | ] expression  */
    6818     11177717 :   M2Quads_PopAuto ();
    6819     11177717 : }
    6820              : 
    6821              : 
    6822              : /*
    6823              :    RetryStatement := 'RETRY' 
    6824              : 
    6825              :    first  symbols:retrytok
    6826              :    
    6827              :    cannot reachend
    6828              : */
    6829              : 
    6830          168 : static void RetryStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6831              : {
    6832          168 :   Expect (M2Reserved_retrytok, stopset0, stopset1, stopset2);
    6833          168 : }
    6834              : 
    6835              : 
    6836              : /*
    6837              :    AssignmentOrProcedureCall := 
    6838              :                                 % VAR top: CARDINAL ;  %
    6839              :                                 
    6840              :                                 % top := Top()  %
    6841              :                                 Designator ( ':=' Expression  | 
    6842              :                                              ActualParameters  | 
    6843              :                                              
    6844              :                                              %  epsilon   %
    6845              :                                               ) 
    6846              :                                 % Assert(top=Top())  %
    6847              :                                 
    6848              : 
    6849              :    first  symbols:identtok
    6850              :    
    6851              :    cannot reachend
    6852              : */
    6853              : 
    6854      6876060 : static void AssignmentOrProcedureCall (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6855              : {
    6856      6876060 :   unsigned int top;
    6857              : 
    6858      6876060 :   top = M2Quads_Top ();
    6859      6876060 :   Designator (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_becomestok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6860      6876060 :   if (M2LexBuf_currenttoken == M2Reserved_becomestok)
    6861              :     {
    6862      3765315 :       Expect (M2Reserved_becomestok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6863      3765315 :       Expression (stopset0, stopset1, stopset2);
    6864              :     }
    6865      3110745 :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    6866              :     {
    6867              :       /* avoid dangling else.  */
    6868      2766218 :       ActualParameters (stopset0, stopset1, stopset2);
    6869              :     }
    6870              :   /* epsilon  */
    6871      6876060 :   M2Debug_Assert (top == (M2Quads_Top ()));
    6872      6876060 : }
    6873              : 
    6874              : 
    6875              : /*
    6876              :    StatementSequence := 
    6877              :                         % VAR top: CARDINAL ;  %
    6878              :                         
    6879              :                         % top := Top()  %
    6880              :                         Statement 
    6881              :                         % Assert(top=Top())  %
    6882              :                         { ';' Statement 
    6883              :                           % Assert(top=Top())  %
    6884              :                            } 
    6885              : 
    6886              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok
    6887              :    
    6888              :    reachend
    6889              : */
    6890              : 
    6891      5619378 : static void StatementSequence (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6892              : {
    6893      5619378 :   unsigned int top;
    6894              : 
    6895      5619378 :   top = M2Quads_Top ();
    6896      5619378 :   Statement (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6897      5619378 :   M2Debug_Assert (top == (M2Quads_Top ()));
    6898     16797095 :   while (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    6899              :     {
    6900      5558339 :       Expect (M2Reserved_semicolontok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    6901      5558339 :       Statement (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6902      5558339 :       M2Debug_Assert (top == (M2Quads_Top ()));
    6903              :     }
    6904              :    /* while  */
    6905      5619378 : }
    6906              : 
    6907              : 
    6908              : /*
    6909              :    IfStatement := 'IF' Expression 'THEN' StatementSequence 
    6910              :                   { 'ELSIF' Expression 'THEN' StatementSequence  } 
    6911              :                   [ 'ELSE' StatementSequence  ] 'END' 
    6912              : 
    6913              :    first  symbols:iftok
    6914              :    
    6915              :    cannot reachend
    6916              : */
    6917              : 
    6918      1930819 : static void IfStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6919              : {
    6920      1930819 :   Expect (M2Reserved_iftok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6921      1930819 :   Expression (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_thentok-M2Reserved_unqualifiedtok))));
    6922      1930819 :   Expect (M2Reserved_thentok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    6923      1930819 :   StatementSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_elsiftok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    6924      4005864 :   while (M2LexBuf_currenttoken == M2Reserved_elsiftok)
    6925              :     {
    6926       144226 :       Expect (M2Reserved_elsiftok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6927       144226 :       Expression (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_thentok-M2Reserved_unqualifiedtok))));
    6928       144226 :       Expect (M2Reserved_thentok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    6929       144226 :       StatementSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsiftok-M2Reserved_arraytok))), stopset2);
    6930              :     }
    6931              :    /* while  */
    6932      1930819 :   if (M2LexBuf_currenttoken == M2Reserved_elsetok)
    6933              :     {
    6934       779816 :       Expect (M2Reserved_elsetok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    6935       779816 :       StatementSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    6936              :     }
    6937      1930819 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    6938      1930819 : }
    6939              : 
    6940              : 
    6941              : /*
    6942              :    CaseStatement := 'CASE' Expression 'OF' Case { '|' 
    6943              :                                                   Case  } 
    6944              :                     CaseEndStatement 
    6945              : 
    6946              :    first  symbols:casetok
    6947              :    
    6948              :    cannot reachend
    6949              : */
    6950              : 
    6951        41998 : static void CaseStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6952              : {
    6953        41998 :   Expect (M2Reserved_casetok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6954        41998 :   Expression (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    6955        41998 :   Expect (M2Reserved_oftok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    6956        41998 :   Case (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    6957       153770 :   while (M2LexBuf_currenttoken == M2Reserved_bartok)
    6958              :     {
    6959        69774 :       Expect (M2Reserved_bartok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    6960        69774 :       Case (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok))), stopset2);
    6961              :     }
    6962              :    /* while  */
    6963        41998 :   CaseEndStatement (stopset0, stopset1, stopset2);
    6964        41998 : }
    6965              : 
    6966              : 
    6967              : /*
    6968              :    CaseEndStatement := 'END'  | 'ELSE' StatementSequence 
    6969              :                        'END' 
    6970              : 
    6971              :    first  symbols:elsetok, endtok
    6972              :    
    6973              :    cannot reachend
    6974              : */
    6975              : 
    6976        41998 : static void CaseEndStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    6977              : {
    6978        41998 :   if (M2LexBuf_currenttoken == M2Reserved_endtok)
    6979              :     {
    6980        14412 :       Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    6981              :     }
    6982        27586 :   else if (M2LexBuf_currenttoken == M2Reserved_elsetok)
    6983              :     {
    6984              :       /* avoid dangling else.  */
    6985        27586 :       Expect (M2Reserved_elsetok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    6986        27586 :       StatementSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    6987        27586 :       Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    6988              :     }
    6989              :   else
    6990              :     {
    6991              :       /* avoid dangling else.  */
    6992            0 :       ErrorArray ((const char *) "expecting one of: {%KELSE} {%KEND}", 34);
    6993              :     }
    6994        41998 : }
    6995              : 
    6996              : 
    6997              : /*
    6998              :    Case := [ CaseLabelList ':' StatementSequence  ] 
    6999              : 
    7000              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    7001              :    
    7002              :    reachend
    7003              : */
    7004              : 
    7005       111772 : static void Case (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7006              : {
    7007       111772 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    7008              :     {
    7009       111666 :       CaseLabelList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    7010       111666 :       Expect (M2Reserved_colontok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7011       111666 :       StatementSequence (stopset0, stopset1, stopset2);
    7012              :     }
    7013       111772 : }
    7014              : 
    7015              : 
    7016              : /*
    7017              :    CaseLabelList := CaseLabels { ',' CaseLabels  } 
    7018              : 
    7019              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok
    7020              :    
    7021              :    cannot reachend
    7022              : */
    7023              : 
    7024       111666 : static void CaseLabelList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7025              : {
    7026       111666 :   CaseLabels (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    7027       223580 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    7028              :     {
    7029          248 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    7030          248 :       CaseLabels (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    7031              :     }
    7032              :    /* while  */
    7033       111666 : }
    7034              : 
    7035              : 
    7036              : /*
    7037              :    CaseLabels := ConstExpression [ '..' ConstExpression  ] 
    7038              : 
    7039              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    7040              :    
    7041              :    cannot reachend
    7042              : */
    7043              : 
    7044       111914 : static void CaseLabels (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7045              : {
    7046       111914 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    7047       111914 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    7048              :     {
    7049          168 :       Expect (M2Reserved_periodperiodtok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    7050          168 :       ConstExpression (stopset0, stopset1, stopset2);
    7051              :     }
    7052       111914 : }
    7053              : 
    7054              : 
    7055              : /*
    7056              :    WhileStatement := 'WHILE' Expression 'DO' StatementSequence 
    7057              :                      'END' 
    7058              : 
    7059              :    first  symbols:whiletok
    7060              :    
    7061              :    cannot reachend
    7062              : */
    7063              : 
    7064       379324 : static void WhileStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7065              : {
    7066       379324 :   Expect (M2Reserved_whiletok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7067       379324 :   Expression (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    7068       379324 :   Expect (M2Reserved_dotok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7069       379324 :   StatementSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    7070       379324 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    7071       379324 : }
    7072              : 
    7073              : 
    7074              : /*
    7075              :    RepeatStatement := 'REPEAT' StatementSequence 'UNTIL' 
    7076              :                       Expression 
    7077              : 
    7078              :    first  symbols:repeattok
    7079              :    
    7080              :    cannot reachend
    7081              : */
    7082              : 
    7083        71480 : static void RepeatStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7084              : {
    7085        71480 :   Expect (M2Reserved_repeattok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7086        71480 :   StatementSequence (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_untiltok-M2Reserved_unqualifiedtok))));
    7087        71480 :   Expect (M2Reserved_untiltok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7088        71480 :   Expression (stopset0, stopset1, stopset2);
    7089        71480 : }
    7090              : 
    7091              : 
    7092              : /*
    7093              :    ForStatement := 'FOR' Ident ':=' Expression 'TO' 
    7094              :                    Expression [ 'BY' ConstExpression  ] 
    7095              :                    'DO' StatementSequence 'END' 
    7096              : 
    7097              :    first  symbols:fortok
    7098              :    
    7099              :    cannot reachend
    7100              : */
    7101              : 
    7102        43394 : static void ForStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7103              : {
    7104        43394 :   Expect (M2Reserved_fortok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7105        43394 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_becomestok-M2Reserved_eoftok))), stopset1, stopset2);
    7106        43394 :   Expect (M2Reserved_becomestok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7107        43394 :   Expression (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_totok-M2Reserved_unqualifiedtok))));
    7108        43394 :   Expect (M2Reserved_totok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7109        43394 :   Expression (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_bytok-M2Reserved_arraytok)) | (1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    7110        43394 :   if (M2LexBuf_currenttoken == M2Reserved_bytok)
    7111              :     {
    7112          366 :       Expect (M2Reserved_bytok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    7113          366 :       ConstExpression (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    7114              :     }
    7115        43394 :   Expect (M2Reserved_dotok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7116        43394 :   StatementSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    7117        43394 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    7118        43394 : }
    7119              : 
    7120              : 
    7121              : /*
    7122              :    LoopStatement := 'LOOP' StatementSequence 'END' 
    7123              : 
    7124              :    first  symbols:looptok
    7125              :    
    7126              :    cannot reachend
    7127              : */
    7128              : 
    7129         8680 : static void LoopStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7130              : {
    7131         8680 :   Expect (M2Reserved_looptok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7132         8680 :   StatementSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    7133         8680 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    7134         8680 : }
    7135              : 
    7136              : 
    7137              : /*
    7138              :    WithStatement := 'WITH' Designator 'DO' StatementSequence 
    7139              :                     'END' 
    7140              : 
    7141              :    first  symbols:withtok
    7142              :    
    7143              :    cannot reachend
    7144              : */
    7145              : 
    7146       195050 : static void WithStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7147              : {
    7148       195050 :   Expect (M2Reserved_withtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7149       195050 :   Designator (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    7150       195050 :   Expect (M2Reserved_dotok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7151       195050 :   StatementSequence (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    7152       195050 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    7153       195050 : }
    7154              : 
    7155              : 
    7156              : /*
    7157              :    ProcedureDeclaration := 
    7158              :                            % VAR top: CARDINAL ;  %
    7159              :                            
    7160              :                            % top := Top ()  %
    7161              :                            ProcedureHeading ';' PostProcedureHeading 
    7162              :                            
    7163              :                            % Assert (top = Top ())  %
    7164              :                            
    7165              : 
    7166              :    first  symbols:proceduretok
    7167              :    
    7168              :    cannot reachend
    7169              : */
    7170              : 
    7171      1883749 : static void ProcedureDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7172              : {
    7173      1883749 :   unsigned int top;
    7174              : 
    7175      1883749 :   top = M2Quads_Top ();
    7176      1883749 :   ProcedureHeading (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    7177      1883749 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    7178      1883749 :   PostProcedureHeading (stopset0, stopset1, stopset2);
    7179      1883743 :   M2Debug_Assert (top == (M2Quads_Top ()));
    7180      1883743 : }
    7181              : 
    7182              : 
    7183              : /*
    7184              :    PostProcedureHeading := ProperProcedure  | 
    7185              :                            ForwardDeclaration 
    7186              : 
    7187              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok, forwardtok
    7188              :    
    7189              :    cannot reachend
    7190              : */
    7191              : 
    7192      1883749 : static void PostProcedureHeading (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7193              : {
    7194      1883749 :   if ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    7195              :     {
    7196      1883725 :       ProperProcedure (stopset0, stopset1, stopset2);
    7197              :     }
    7198           24 :   else if (M2LexBuf_currenttoken == M2Reserved_forwardtok)
    7199              :     {
    7200              :       /* avoid dangling else.  */
    7201           48 :       ForwardDeclaration (stopset0, stopset1, stopset2);
    7202              :     }
    7203              :   else
    7204              :     {
    7205              :       /* avoid dangling else.  */
    7206            0 :       ErrorArray ((const char *) "expecting one of: {%KFORWARD} {%KEND} {%KBEGIN} {%KCONST} {%KTYPE} {%KVAR} {%KPROCEDURE} {%KMODULE}", 99);
    7207              :     }
    7208      1883743 : }
    7209              : 
    7210              : 
    7211              : /*
    7212              :    ForwardDeclaration := 'FORWARD' 
    7213              :                          % PCEndBuildForward  %
    7214              :                          
    7215              : 
    7216              :    first  symbols:forwardtok
    7217              :    
    7218              :    cannot reachend
    7219              : */
    7220              : 
    7221           24 : static void ForwardDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7222              : {
    7223           24 :   Expect (M2Reserved_forwardtok, stopset0, stopset1, stopset2);
    7224           24 :   PCSymBuild_PCEndBuildForward ();
    7225           24 : }
    7226              : 
    7227              : 
    7228              : /*
    7229              :    ProperProcedure := ProcedureBlock 
    7230              :                       % PushAutoOn  %
    7231              :                       Ident 
    7232              :                       % PCEndBuildProcedure  %
    7233              :                       
    7234              :                       % PopAuto  %
    7235              :                       
    7236              : 
    7237              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok, begintok, endtok
    7238              :    
    7239              :    cannot reachend
    7240              : */
    7241              : 
    7242      1883725 : static void ProperProcedure (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7243              : {
    7244      1883725 :   ProcedureBlock (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7245      1883719 :   M2Quads_PushAutoOn ();
    7246      1883719 :   Ident (stopset0, stopset1, stopset2);
    7247      1883719 :   PCSymBuild_PCEndBuildProcedure ();
    7248      1883719 :   M2Quads_PopAuto ();
    7249      1883719 : }
    7250              : 
    7251              : 
    7252              : /*
    7253              :    DefineBuiltinProcedure := [ '__ATTRIBUTE__' '__BUILTIN__' 
    7254              :                                '(' '(' 
    7255              :                                % PushAutoOff  %
    7256              :                                Ident 
    7257              :                                % PopAuto  %
    7258              :                                ')' ')'  | 
    7259              :                                '__INLINE__'  ] 
    7260              : 
    7261              :    first  symbols:inlinetok, attributetok
    7262              :    
    7263              :    reachend
    7264              : */
    7265              : 
    7266      1883749 : static void DefineBuiltinProcedure (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7267              : {
    7268      1883749 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))))) != 0)))
    7269              :     {
    7270              :       /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    7271              :       /* seen optional [ | ] expression  */
    7272       440072 :       if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    7273              :         {
    7274       440072 :           Expect (M2Reserved_attributetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok))));
    7275       440072 :           Expect (M2Reserved_builtintok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    7276       440072 :           Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    7277       440072 :           Expect (M2Reserved_lparatok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7278       440072 :           M2Quads_PushAutoOff ();
    7279       440072 :           Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    7280       440072 :           M2Quads_PopAuto ();
    7281       440072 :           Expect (M2Reserved_rparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    7282       440072 :           Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    7283              :         }
    7284            0 :       else if (M2LexBuf_currenttoken == M2Reserved_inlinetok)
    7285              :         {
    7286              :           /* avoid dangling else.  */
    7287            0 :           Expect (M2Reserved_inlinetok, stopset0, stopset1, stopset2);
    7288              :         }
    7289              :       else
    7290              :         {
    7291              :           /* avoid dangling else.  */
    7292            0 :           ErrorArray ((const char *) "expecting one of: {%K__INLINE__} {%K__ATTRIBUTE__}", 50);
    7293              :         }
    7294              :     }
    7295              :   /* end of optional [ | ] expression  */
    7296      1883749 : }
    7297              : 
    7298              : 
    7299              : /*
    7300              :    ProcedureHeading := 'PROCEDURE' 
    7301              :                        % M2Error.DefaultProcedure  %
    7302              :                        
    7303              :                        % PushAutoOn  %
    7304              :                        DefineBuiltinProcedure ( Ident 
    7305              :                                                 
    7306              :                                                 % PCStartBuildProcedure  %
    7307              :                                                 
    7308              :                                                 % PushAutoOff  %
    7309              :                                                 [ FormalParameters  ] 
    7310              :                                                 AttributeNoReturn 
    7311              :                                                 
    7312              :                                                 % PCBuildProcedureHeading  %
    7313              :                                                 
    7314              :                                                 % PopAuto  %
    7315              :                                                  ) 
    7316              :                        
    7317              :                        % PopAuto  %
    7318              :                        
    7319              : 
    7320              :    first  symbols:proceduretok
    7321              :    
    7322              :    cannot reachend
    7323              : */
    7324              : 
    7325      1883749 : static void ProcedureHeading (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7326              : {
    7327      1883749 :   Expect (M2Reserved_proceduretok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7328      1883749 :   M2Error_DefaultProcedure ();
    7329      1883749 :   M2Quads_PushAutoOn ();
    7330      1883749 :   DefineBuiltinProcedure (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7331      1883749 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    7332      1883749 :   PCSymBuild_PCStartBuildProcedure ();
    7333      1883749 :   M2Quads_PushAutoOff ();
    7334      1883749 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    7335              :     {
    7336      1779783 :       FormalParameters (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    7337              :     }
    7338      1883749 :   AttributeNoReturn (stopset0, stopset1, stopset2);
    7339      1883749 :   PCSymBuild_PCBuildProcedureHeading ();
    7340      1883749 :   M2Quads_PopAuto ();
    7341      1883749 :   M2Quads_PopAuto ();
    7342      1883749 : }
    7343              : 
    7344              : 
    7345              : /*
    7346              :    Builtin := [ '__BUILTIN__'  | '__INLINE__'  ] 
    7347              : 
    7348              :    first  symbols:inlinetok, builtintok
    7349              :    
    7350              :    reachend
    7351              : */
    7352              : 
    7353      3265165 : static void Builtin (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7354              : {
    7355      3265165 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok))))) != 0)))
    7356              :     {
    7357              :       /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    7358              :       /* seen optional [ | ] expression  */
    7359       439620 :       if (M2LexBuf_currenttoken == M2Reserved_builtintok)
    7360              :         {
    7361       439620 :           Expect (M2Reserved_builtintok, stopset0, stopset1, stopset2);
    7362              :         }
    7363            0 :       else if (M2LexBuf_currenttoken == M2Reserved_inlinetok)
    7364              :         {
    7365              :           /* avoid dangling else.  */
    7366            0 :           Expect (M2Reserved_inlinetok, stopset0, stopset1, stopset2);
    7367              :         }
    7368              :       else
    7369              :         {
    7370              :           /* avoid dangling else.  */
    7371            0 :           ErrorArray ((const char *) "expecting one of: {%K__INLINE__} {%K__BUILTIN__}", 48);
    7372              :         }
    7373              :     }
    7374              :   /* end of optional [ | ] expression  */
    7375      3265165 : }
    7376              : 
    7377              : 
    7378              : /*
    7379              :    DefProcedureHeading := 'PROCEDURE' 
    7380              :                           % M2Error.DefaultProcedure  %
    7381              :                           
    7382              :                           % PushAutoOn  %
    7383              :                           Builtin ( Ident 
    7384              :                                     % PCStartBuildProcedure  %
    7385              :                                     
    7386              :                                     % PushAutoOff  %
    7387              :                                     [ DefFormalParameters  ] 
    7388              :                                     AttributeNoReturn 
    7389              :                                     
    7390              :                                     % PCBuildProcedureHeading  %
    7391              :                                     
    7392              :                                     % PopAuto  %
    7393              :                                      ) 
    7394              :                           % PopAuto  %
    7395              :                           
    7396              :                           % M2Error.LeaveErrorScope  %
    7397              :                           
    7398              : 
    7399              :    first  symbols:proceduretok
    7400              :    
    7401              :    cannot reachend
    7402              : */
    7403              : 
    7404      3265165 : static void DefProcedureHeading (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7405              : {
    7406      3265165 :   Expect (M2Reserved_proceduretok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7407      3265165 :   M2Error_DefaultProcedure ();
    7408      3265165 :   M2Quads_PushAutoOn ();
    7409      3265165 :   Builtin (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7410      3265165 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    7411      3265165 :   PCSymBuild_PCStartBuildProcedure ();
    7412      3265165 :   M2Quads_PushAutoOff ();
    7413      3265165 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    7414              :     {
    7415      3161405 :       DefFormalParameters (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    7416              :     }
    7417      3265165 :   AttributeNoReturn (stopset0, stopset1, stopset2);
    7418      3265165 :   PCSymBuild_PCBuildProcedureHeading ();
    7419      3265165 :   M2Quads_PopAuto ();
    7420      3265165 :   M2Quads_PopAuto ();
    7421      3265165 :   M2Error_LeaveErrorScope ();
    7422      3265165 : }
    7423              : 
    7424              : 
    7425              : /*
    7426              :    AttributeNoReturn := [ ''  ] 
    7427              : 
    7428              :    first  symbols:ldirectivetok
    7429              :    
    7430              :    reachend
    7431              : */
    7432              : 
    7433      5148914 : static void AttributeNoReturn (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7434              : {
    7435      5148914 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    7436              :     {
    7437       465894 :       Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7438       465894 :       Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    7439       465894 :       Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    7440              :     }
    7441      5148914 : }
    7442              : 
    7443              : 
    7444              : /*
    7445              :    AttributeUnused := [ ''  ] 
    7446              : 
    7447              :    first  symbols:ldirectivetok
    7448              :    
    7449              :    reachend
    7450              : */
    7451              : 
    7452            0 : static void AttributeUnused (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7453              : {
    7454            0 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    7455              :     {
    7456            0 :       Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7457            0 :       Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    7458            0 :       Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    7459              :     }
    7460            0 : }
    7461              : 
    7462              : 
    7463              : /*
    7464              :    ProcedureBlock := 
    7465              :                      % VAR top: CARDINAL ;  %
    7466              :                      
    7467              :                      % top := Top()  %
    7468              :                      { Declaration 
    7469              :                        % Assert(top=Top())  %
    7470              :                         } [ 'BEGIN' ProcedureBlockBody 
    7471              :                             
    7472              :                             % Assert(top=Top())  %
    7473              :                              ] 'END' 
    7474              :                      % Assert(top=Top())  %
    7475              :                      
    7476              : 
    7477              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok
    7478              :    
    7479              :    cannot reachend
    7480              : */
    7481              : 
    7482      1883725 : static void ProcedureBlock (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7483              : {
    7484      1883725 :   unsigned int top;
    7485              : 
    7486      1883725 :   top = M2Quads_Top ();
    7487      4483306 :   while ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    7488              :     {
    7489       715862 :       Declaration (stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    7490       715856 :       M2Debug_Assert (top == (M2Quads_Top ()));
    7491              :     }
    7492              :    /* while  */
    7493      1883719 :   if (M2LexBuf_currenttoken == M2Reserved_begintok)
    7494              :     {
    7495      1878157 :       Expect (M2Reserved_begintok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7496      1878157 :       ProcedureBlockBody (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    7497      1878157 :       M2Debug_Assert (top == (M2Quads_Top ()));
    7498              :     }
    7499      1883719 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    7500      1883719 :   M2Debug_Assert (top == (M2Quads_Top ()));
    7501      1883719 : }
    7502              : 
    7503              : 
    7504              : /*
    7505              :    Block := 
    7506              :             % VAR top: CARDINAL ;  %
    7507              :             
    7508              :             % top := Top()  %
    7509              :             { Declaration  } InitialBlock FinalBlock 
    7510              :             'END' 
    7511              :             % Assert(top=Top())  %
    7512              :             
    7513              : 
    7514              :    first  symbols:proceduretok, moduletok, finallytok, begintok, consttok, typetok, vartok, endtok
    7515              :    
    7516              :    cannot reachend
    7517              : */
    7518              : 
    7519        82850 : static void Block (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7520              : {
    7521        82850 :   unsigned int top;
    7522              : 
    7523        82850 :   top = M2Quads_Top ();
    7524      2158281 :   while ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_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)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    7525              :     {
    7526      1992605 :       Declaration (stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    7527              :     }
    7528              :    /* while  */
    7529        82826 :   InitialBlock (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok))), stopset2);
    7530        82826 :   FinalBlock (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    7531        82826 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    7532        82826 :   M2Debug_Assert (top == (M2Quads_Top ()));
    7533        82826 : }
    7534              : 
    7535              : 
    7536              : /*
    7537              :    InitialBlock := [ 'BEGIN' InitialBlockBody  ] 
    7538              : 
    7539              :    first  symbols:begintok
    7540              :    
    7541              :    reachend
    7542              : */
    7543              : 
    7544        82826 : static void InitialBlock (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7545              : {
    7546        82826 :   if (M2LexBuf_currenttoken == M2Reserved_begintok)
    7547              :     {
    7548        42998 :       Expect (M2Reserved_begintok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7549        42998 :       InitialBlockBody (stopset0, stopset1, stopset2);
    7550              :     }
    7551        82826 : }
    7552              : 
    7553              : 
    7554              : /*
    7555              :    FinalBlock := [ 'FINALLY' FinalBlockBody  ] 
    7556              : 
    7557              :    first  symbols:finallytok
    7558              :    
    7559              :    reachend
    7560              : */
    7561              : 
    7562        82826 : static void FinalBlock (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7563              : {
    7564        82826 :   if (M2LexBuf_currenttoken == M2Reserved_finallytok)
    7565              :     {
    7566         5960 :       Expect (M2Reserved_finallytok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7567         5960 :       FinalBlockBody (stopset0, stopset1, stopset2);
    7568              :     }
    7569        82826 : }
    7570              : 
    7571              : 
    7572              : /*
    7573              :    InitialBlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    7574              : 
    7575              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    7576              :    
    7577              :    reachend
    7578              : */
    7579              : 
    7580        42998 : static void InitialBlockBody (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7581              : {
    7582        85996 :   NormalPart (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_excepttok-M2Reserved_arraytok))), stopset2);
    7583        42998 :   if (M2LexBuf_currenttoken == M2Reserved_excepttok)
    7584              :     {
    7585           54 :       Expect (M2Reserved_excepttok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7586           54 :       ExceptionalPart (stopset0, stopset1, stopset2);
    7587              :     }
    7588        42998 : }
    7589              : 
    7590              : 
    7591              : /*
    7592              :    FinalBlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    7593              : 
    7594              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    7595              :    
    7596              :    reachend
    7597              : */
    7598              : 
    7599         5960 : static void FinalBlockBody (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7600              : {
    7601        11920 :   NormalPart (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_excepttok-M2Reserved_arraytok))), stopset2);
    7602         5960 :   if (M2LexBuf_currenttoken == M2Reserved_excepttok)
    7603              :     {
    7604            0 :       Expect (M2Reserved_excepttok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7605            0 :       ExceptionalPart (stopset0, stopset1, stopset2);
    7606              :     }
    7607         5960 : }
    7608              : 
    7609              : 
    7610              : /*
    7611              :    ProcedureBlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    7612              : 
    7613              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    7614              :    
    7615              :    reachend
    7616              : */
    7617              : 
    7618      1878157 : static void ProcedureBlockBody (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7619              : {
    7620      3756314 :   NormalPart (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_excepttok-M2Reserved_arraytok))), stopset2);
    7621      1878157 :   if (M2LexBuf_currenttoken == M2Reserved_excepttok)
    7622              :     {
    7623          168 :       Expect (M2Reserved_excepttok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_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))));
    7624          168 :       ExceptionalPart (stopset0, stopset1, stopset2);
    7625              :     }
    7626      1878157 : }
    7627              : 
    7628              : 
    7629              : /*
    7630              :    NormalPart := StatementSequence 
    7631              : 
    7632              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    7633              :    
    7634              :    reachend
    7635              : */
    7636              : 
    7637      1927115 : static void NormalPart (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7638              : {
    7639      1927115 :   StatementSequence (stopset0, stopset1, stopset2);
    7640            0 : }
    7641              : 
    7642              : 
    7643              : /*
    7644              :    ExceptionalPart := StatementSequence 
    7645              : 
    7646              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    7647              :    
    7648              :    reachend
    7649              : */
    7650              : 
    7651          222 : static void ExceptionalPart (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7652              : {
    7653          222 :   StatementSequence (stopset0, stopset1, stopset2);
    7654          222 : }
    7655              : 
    7656              : 
    7657              : /*
    7658              :    Declaration := 'CONST' { ConstantDeclaration ';'  }  | 
    7659              :                   'TYPE' { TypeDeclaration ';'  }  | 
    7660              :                   'VAR' { VariableDeclaration ';'  }  | 
    7661              :                   ProcedureDeclaration ';'  | 
    7662              :                   ModuleDeclaration ';' 
    7663              : 
    7664              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok
    7665              :    
    7666              :    cannot reachend
    7667              : */
    7668              : 
    7669      2708467 : static void Declaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7670              : {
    7671      2708467 :   if (M2LexBuf_currenttoken == M2Reserved_consttok)
    7672              :     {
    7673        45462 :       Expect (M2Reserved_consttok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7674       194478 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    7675              :         {
    7676       103578 :           ConstantDeclaration (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    7677       103554 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7678              :         }
    7679              :        /* while  */
    7680              :     }
    7681              :   else if (M2LexBuf_currenttoken == M2Reserved_typetok)
    7682              :     {
    7683              :       /* avoid dangling else.  */
    7684        33651 :       Expect (M2Reserved_typetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7685       184534 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    7686              :         {
    7687       117232 :           TypeDeclaration (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    7688       117232 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7689              :         }
    7690              :        /* while  */
    7691              :     }
    7692              :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    7693              :     {
    7694              :       /* avoid dangling else.  */
    7695       745177 :       Expect (M2Reserved_vartok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7696      2661484 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    7697              :         {
    7698      1171130 :           VariableDeclaration (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    7699      1171130 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7700              :         }
    7701              :        /* while  */
    7702              :     }
    7703              :   else if (M2LexBuf_currenttoken == M2Reserved_proceduretok)
    7704              :     {
    7705              :       /* avoid dangling else.  */
    7706      1883749 :       ProcedureDeclaration (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    7707      1883743 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    7708              :     }
    7709              :   else if (M2LexBuf_currenttoken == M2Reserved_moduletok)
    7710              :     {
    7711              :       /* avoid dangling else.  */
    7712          428 :       ModuleDeclaration (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    7713          428 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    7714              :     }
    7715              :   else
    7716              :     {
    7717              :       /* avoid dangling else.  */
    7718            0 :       ErrorArray ((const char *) "expecting one of: {%KMODULE} {%KPROCEDURE} {%KVAR} {%KTYPE} {%KCONST}", 69);
    7719              :     }
    7720      2708437 : }
    7721              : 
    7722              : 
    7723              : /*
    7724              :    DefFormalParameters := '(' [ DefMultiFPSection  ] 
    7725              :                           ')' FormalReturn 
    7726              : 
    7727              :    first  symbols:lparatok
    7728              :    
    7729              :    cannot reachend
    7730              : */
    7731              : 
    7732      3161405 : static void DefFormalParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7733              : {
    7734      3161405 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    7735      3161405 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    7736              :     {
    7737      2996125 :       DefMultiFPSection (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    7738              :     }
    7739      3161405 :   Expect (M2Reserved_rparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    7740      3161405 :   FormalReturn (stopset0, stopset1, stopset2);
    7741      3161405 : }
    7742              : 
    7743              : 
    7744              : /*
    7745              :    DefMultiFPSection := DefExtendedFP  | 
    7746              :                         FPSection [ ';' DefMultiFPSection  ] 
    7747              : 
    7748              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    7749              :    
    7750              :    cannot reachend
    7751              : */
    7752              : 
    7753      2996125 : static void DefMultiFPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7754              : {
    7755      5386618 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok))
    7756              :     {
    7757        26074 :       DefExtendedFP (stopset0, stopset1, stopset2);
    7758              :     }
    7759      5360544 :   else if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0)))
    7760              :     {
    7761              :       /* avoid dangling else.  */
    7762      5360544 :       FPSection (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    7763      5360544 :       if (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    7764              :         {
    7765      2390493 :           Expect (M2Reserved_semicolontok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    7766      2390493 :           DefMultiFPSection (stopset0, stopset1, stopset2);
    7767              :         }
    7768              :     }
    7769              :   else
    7770              :     {
    7771              :       /* avoid dangling else.  */
    7772            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%KVAR} {%K...} {%K[}", 54);
    7773              :     }
    7774      2996125 : }
    7775              : 
    7776              : 
    7777              : /*
    7778              :    FormalParameters := '(' [ MultiFPSection  ] ')' 
    7779              :                        FormalReturn 
    7780              : 
    7781              :    first  symbols:lparatok
    7782              :    
    7783              :    cannot reachend
    7784              : */
    7785              : 
    7786      1779783 : static void FormalParameters (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7787              : {
    7788      1779783 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    7789      1779783 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    7790              :     {
    7791      1715140 :       MultiFPSection (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    7792              :     }
    7793      1779783 :   Expect (M2Reserved_rparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    7794      1779783 :   FormalReturn (stopset0, stopset1, stopset2);
    7795      1779783 : }
    7796              : 
    7797              : 
    7798              : /*
    7799              :    MultiFPSection := ExtendedFP  | FPSection [ ';' 
    7800              :                                                MultiFPSection  ] 
    7801              : 
    7802              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    7803              :    
    7804              :    cannot reachend
    7805              : */
    7806              : 
    7807      1715140 : static void MultiFPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7808              : {
    7809      2957928 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok))
    7810              :     {
    7811         2774 :       ExtendedFP (stopset0, stopset1, stopset2);
    7812              :     }
    7813      2955154 :   else if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0)))
    7814              :     {
    7815              :       /* avoid dangling else.  */
    7816      2955154 :       FPSection (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    7817      2955154 :       if (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    7818              :         {
    7819      1242788 :           Expect (M2Reserved_semicolontok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    7820      1242788 :           MultiFPSection (stopset0, stopset1, stopset2);
    7821              :         }
    7822              :     }
    7823              :   else
    7824              :     {
    7825              :       /* avoid dangling else.  */
    7826            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%KVAR} {%K...} {%K[}", 54);
    7827              :     }
    7828      1715140 : }
    7829              : 
    7830              : 
    7831              : /*
    7832              :    FPSection := NonVarFPSection  | 
    7833              :                 VarFPSection 
    7834              : 
    7835              :    first  symbols:vartok, identtok
    7836              :    
    7837              :    cannot reachend
    7838              : */
    7839              : 
    7840      8315698 : static void FPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7841              : {
    7842      8315698 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    7843              :     {
    7844      7502154 :       NonVarFPSection (stopset0, stopset1, stopset2);
    7845              :     }
    7846       813544 :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    7847              :     {
    7848              :       /* avoid dangling else.  */
    7849       813544 :       VarFPSection (stopset0, stopset1, stopset2);
    7850              :     }
    7851              :   else
    7852              :     {
    7853              :       /* avoid dangling else.  */
    7854            0 :       ErrorArray ((const char *) "expecting one of: {%KVAR} {%Kidentifier}", 40);
    7855              :     }
    7856      8315698 : }
    7857              : 
    7858              : 
    7859              : /*
    7860              :    DefExtendedFP := DefOptArg  | '...' 
    7861              : 
    7862              :    first  symbols:lsbratok, periodperiodperiodtok
    7863              :    
    7864              :    cannot reachend
    7865              : */
    7866              : 
    7867        26074 : static void DefExtendedFP (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7868              : {
    7869        26074 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    7870              :     {
    7871        14742 :       DefOptArg (stopset0, stopset1, stopset2);
    7872              :     }
    7873        11332 :   else if (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok)
    7874              :     {
    7875              :       /* avoid dangling else.  */
    7876        11332 :       Expect (M2Reserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
    7877              :     }
    7878              :   else
    7879              :     {
    7880              :       /* avoid dangling else.  */
    7881            0 :       ErrorArray ((const char *) "expecting one of: {%K...} {%K[}", 31);
    7882              :     }
    7883        26074 : }
    7884              : 
    7885              : 
    7886              : /*
    7887              :    ExtendedFP := OptArg  | '...' 
    7888              : 
    7889              :    first  symbols:lsbratok, periodperiodperiodtok
    7890              :    
    7891              :    cannot reachend
    7892              : */
    7893              : 
    7894         2774 : static void ExtendedFP (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7895              : {
    7896         2774 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    7897              :     {
    7898         2774 :       OptArg (stopset0, stopset1, stopset2);
    7899              :     }
    7900            0 :   else if (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok)
    7901              :     {
    7902              :       /* avoid dangling else.  */
    7903            0 :       Expect (M2Reserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
    7904              :     }
    7905              :   else
    7906              :     {
    7907              :       /* avoid dangling else.  */
    7908            0 :       ErrorArray ((const char *) "expecting one of: {%K...} {%K[}", 31);
    7909              :     }
    7910         2774 : }
    7911              : 
    7912              : 
    7913              : /*
    7914              :    VarFPSection := 'VAR' IdentList ':' FormalType [ 
    7915              :    AttributeUnused  ] 
    7916              : 
    7917              :    first  symbols:vartok
    7918              :    
    7919              :    cannot reachend
    7920              : */
    7921              : 
    7922       813544 : static void VarFPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7923              : {
    7924       813544 :   Expect (M2Reserved_vartok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7925       813544 :   IdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    7926       813544 :   Expect (M2Reserved_colontok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7927       813544 :   FormalType (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    7928       813544 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    7929              :     {
    7930            0 :       AttributeUnused (stopset0, stopset1, stopset2);
    7931              :     }
    7932       813544 : }
    7933              : 
    7934              : 
    7935              : /*
    7936              :    NonVarFPSection := IdentList ':' FormalType [ AttributeUnused  ] 
    7937              : 
    7938              :    first  symbols:identtok
    7939              :    
    7940              :    cannot reachend
    7941              : */
    7942              : 
    7943      7502154 : static void NonVarFPSection (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7944              : {
    7945      7502154 :   IdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    7946      7502154 :   Expect (M2Reserved_colontok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7947      7502154 :   FormalType (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    7948      7502154 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    7949              :     {
    7950            0 :       AttributeUnused (stopset0, stopset1, stopset2);
    7951              :     }
    7952      7502154 : }
    7953              : 
    7954              : 
    7955              : /*
    7956              :    OptArg := '[' Ident ':' FormalType [ '=' ConstExpression  ] 
    7957              :              ']' 
    7958              : 
    7959              :    first  symbols:lsbratok
    7960              :    
    7961              :    cannot reachend
    7962              : */
    7963              : 
    7964         2774 : static void OptArg (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7965              : {
    7966         2774 :   Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7967         2774 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    7968         2774 :   Expect (M2Reserved_colontok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7969         2774 :   FormalType (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    7970         2774 :   if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    7971              :     {
    7972         2728 :       Expect (M2Reserved_equaltok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    7973         2728 :       ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    7974              :     }
    7975         2774 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    7976         2774 : }
    7977              : 
    7978              : 
    7979              : /*
    7980              :    DefOptArg := '[' Ident ':' FormalType '=' ConstExpression 
    7981              :                 ']' 
    7982              : 
    7983              :    first  symbols:lsbratok
    7984              :    
    7985              :    cannot reachend
    7986              : */
    7987              : 
    7988        14742 : static void DefOptArg (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    7989              : {
    7990        14742 :   Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7991        14742 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    7992        14742 :   Expect (M2Reserved_colontok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    7993        14742 :   FormalType (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    7994        14742 :   Expect (M2Reserved_equaltok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    7995        14742 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    7996        14742 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    7997        14742 : }
    7998              : 
    7999              : 
    8000              : /*
    8001              :    FormalType := { 'ARRAY' 'OF'  } Qualident 
    8002              : 
    8003              :    first  symbols:identtok, arraytok
    8004              :    
    8005              :    cannot reachend
    8006              : */
    8007              : 
    8008      8416584 : static void FormalType (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8009              : {
    8010      9429900 :   while (M2LexBuf_currenttoken == M2Reserved_arraytok)
    8011              :     {
    8012      1013316 :       Expect (M2Reserved_arraytok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    8013      1013316 :       Expect (M2Reserved_oftok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8014              :     }
    8015              :    /* while  */
    8016      8416584 :   Qualident (stopset0, stopset1, stopset2);
    8017      8416584 : }
    8018              : 
    8019              : 
    8020              : /*
    8021              :    ModuleDeclaration := 'MODULE' 
    8022              :                         % VAR namet: CARDINAL ;  %
    8023              :                         
    8024              :                         % M2Error.DefaultInnerModule  %
    8025              :                         
    8026              :                         % PushAutoOn  %
    8027              :                         Ident 
    8028              :                         % PCStartBuildInnerModule  %
    8029              :                         
    8030              :                         % PushAutoOff  %
    8031              :                         [ Priority  ] ';' { Import 
    8032              :                                             
    8033              :                                             % PCBuildImportInnerModule  %
    8034              :                                              } [ Export  ] 
    8035              :                         Block 
    8036              :                         % PushAutoOn  %
    8037              :                         
    8038              :                         % namet := GetTokenNo ()  %
    8039              :                         Ident 
    8040              :                         % PCEndBuildInnerModule (namet)  %
    8041              :                         
    8042              :                         % PopAuto ; PopAuto ; PopAuto  %
    8043              :                         
    8044              : 
    8045              :    first  symbols:moduletok
    8046              :    
    8047              :    cannot reachend
    8048              : */
    8049              : 
    8050          428 : static void ModuleDeclaration (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8051              : {
    8052          428 :   unsigned int namet;
    8053              : 
    8054          428 :   Expect (M2Reserved_moduletok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8055          428 :   M2Error_DefaultInnerModule ();
    8056          428 :   M2Quads_PushAutoOn ();
    8057          428 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    8058          428 :   PCSymBuild_PCStartBuildInnerModule ();
    8059          428 :   M2Quads_PushAutoOff ();
    8060          428 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    8061              :     {
    8062           12 :       Priority (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8063              :     }
    8064          428 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    8065         1086 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    8066              :     {
    8067          230 :       Import (stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    8068          230 :       PCSymBuild_PCBuildImportInnerModule ();
    8069              :     }
    8070              :    /* while  */
    8071          428 :   if (M2LexBuf_currenttoken == M2Reserved_exporttok)
    8072              :     {
    8073          282 :       Export (stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    8074              :     }
    8075          428 :   Block (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8076          428 :   M2Quads_PushAutoOn ();
    8077          428 :   namet = M2LexBuf_GetTokenNo ();
    8078          428 :   Ident (stopset0, stopset1, stopset2);
    8079          428 :   PCSymBuild_PCEndBuildInnerModule (namet);
    8080          428 :   M2Quads_PopAuto ();
    8081          428 :   M2Quads_PopAuto ();
    8082          428 :   M2Quads_PopAuto ();
    8083          428 : }
    8084              : 
    8085              : 
    8086              : /*
    8087              :    Priority := '[' ConstExpression ']' 
    8088              : 
    8089              :    first  symbols:lsbratok
    8090              :    
    8091              :    cannot reachend
    8092              : */
    8093              : 
    8094           50 : static void Priority (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8095              : {
    8096           50 :   Expect (M2Reserved_lsbratok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    8097           50 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    8098           50 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    8099           50 : }
    8100              : 
    8101              : 
    8102              : /*
    8103              :    Export := 'EXPORT' ( 'QUALIFIED' IdentList  | 
    8104              :                         'UNQUALIFIED' IdentList  | 
    8105              :                         IdentList  ) ';' 
    8106              : 
    8107              :    first  symbols:exporttok
    8108              :    
    8109              :    cannot reachend
    8110              : */
    8111              : 
    8112        85372 : static void Export (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8113              : {
    8114        85372 :   Expect (M2Reserved_exporttok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_qualifiedtok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_unqualifiedtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8115        85372 :   if (M2LexBuf_currenttoken == M2Reserved_qualifiedtok)
    8116              :     {
    8117        73476 :       Expect (M2Reserved_qualifiedtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8118        73476 :       IdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8119              :     }
    8120        11896 :   else if (M2LexBuf_currenttoken == M2Reserved_unqualifiedtok)
    8121              :     {
    8122              :       /* avoid dangling else.  */
    8123        11614 :       Expect (M2Reserved_unqualifiedtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8124        11614 :       IdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8125              :     }
    8126          282 :   else if (M2LexBuf_currenttoken == M2Reserved_identtok)
    8127              :     {
    8128              :       /* avoid dangling else.  */
    8129          282 :       IdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8130              :     }
    8131              :   else
    8132              :     {
    8133              :       /* avoid dangling else.  */
    8134            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%KUNQUALIFIED} {%KQUALIFIED}", 62);
    8135              :     }
    8136        85372 :   Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    8137        85372 : }
    8138              : 
    8139              : 
    8140              : /*
    8141              :    Import := 
    8142              :              % PushAutoOn  %
    8143              :              ( 'FROM' Ident 'IMPORT' IdentList ';'  | 
    8144              :                'IMPORT' 
    8145              :                % PushT(ImportTok)
    8146              :                                                                                                determines whether Ident or Module   %
    8147              :                IdentList ';'  ) 
    8148              :              % PopAuto  %
    8149              :              
    8150              : 
    8151              :    first  symbols:importtok, fromtok
    8152              :    
    8153              :    cannot reachend
    8154              : */
    8155              : 
    8156       400301 : static void Import (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8157              : {
    8158       400301 :   M2Quads_PushAutoOn ();
    8159       400301 :   if (M2LexBuf_currenttoken == M2Reserved_fromtok)
    8160              :     {
    8161       351044 :       Expect (M2Reserved_fromtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8162       351044 :       Ident (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_importtok-M2Reserved_arraytok))), stopset2);
    8163       351044 :       Expect (M2Reserved_importtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8164       351044 :       IdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8165       351044 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    8166              :     }
    8167        49257 :   else if (M2LexBuf_currenttoken == M2Reserved_importtok)
    8168              :     {
    8169              :       /* avoid dangling else.  */
    8170        49257 :       Expect (M2Reserved_importtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8171              :       /* determines whether Ident or Module  */
    8172        49257 :       M2Quads_PushT (M2Reserved_ImportTok);
    8173        49257 :       IdentList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8174        49257 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    8175              :     }
    8176              :   else
    8177              :     {
    8178              :       /* avoid dangling else.  */
    8179            0 :       ErrorArray ((const char *) "expecting one of: {%KIMPORT} {%KFROM}", 37);
    8180              :     }
    8181       400301 :   M2Quads_PopAuto ();
    8182       400301 : }
    8183              : 
    8184              : 
    8185              : /*
    8186              :    DefinitionModule := 'DEFINITION' 
    8187              :                        % VAR namet: CARDINAL ;  %
    8188              :                        
    8189              :                        % M2Error.DefaultDefinitionModule  %
    8190              :                        'MODULE' 
    8191              :                        % PushAutoOn  %
    8192              :                        [ 'FOR' string  ] Ident 
    8193              :                        % PCStartBuildDefModule ;
    8194              :                          PushAutoOff  %
    8195              :                        ';' { Import 
    8196              :                              % PCBuildImportOuterModule  %
    8197              :                               } [ Export  ] { Definition  } 
    8198              :                        'END' 
    8199              :                        % PushAutoOn  %
    8200              :                        
    8201              :                        % namet := GetTokenNo ()  %
    8202              :                        Ident 
    8203              :                        % PCEndBuildDefModule (namet)  %
    8204              :                        '.' 
    8205              :                        % PopAuto ; PopAuto ; PopAuto  %
    8206              :                        
    8207              : 
    8208              :    first  symbols:definitiontok
    8209              :    
    8210              :    cannot reachend
    8211              : */
    8212              : 
    8213       160778 : static void DefinitionModule (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8214              : {
    8215       160778 :   unsigned int namet;
    8216              : 
    8217       160778 :   Expect (M2Reserved_definitiontok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2);
    8218       160778 :   M2Error_DefaultDefinitionModule ();
    8219       160778 :   Expect (M2Reserved_moduletok, stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8220       160778 :   M2Quads_PushAutoOn ();
    8221       160778 :   if (M2LexBuf_currenttoken == M2Reserved_fortok)
    8222              :     {
    8223        13088 :       Expect (M2Reserved_fortok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    8224        13088 :       string (stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8225              :     }
    8226       160778 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8227       160778 :   PCSymBuild_PCStartBuildDefModule ();
    8228       160778 :   M2Quads_PushAutoOff ();
    8229       160778 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    8230       430599 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    8231              :     {
    8232       109043 :       Import (stopset0, stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    8233       109043 :       PCSymBuild_PCBuildImportOuterModule ();
    8234              :     }
    8235              :    /* while  */
    8236       160778 :   if (M2LexBuf_currenttoken == M2Reserved_exporttok)
    8237              :     {
    8238        85090 :       Export (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    8239              :     }
    8240      3535251 :   while ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((PCBuild_SetOfStop1) ((1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))))) != 0))) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    8241              :     {
    8242      3374473 :       Definition (stopset0, stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    8243              :     }
    8244              :    /* while  */
    8245       160778 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8246       160778 :   M2Quads_PushAutoOn ();
    8247       160778 :   namet = M2LexBuf_GetTokenNo ();
    8248       160778 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    8249       160778 :   PCSymBuild_PCEndBuildDefModule (namet);
    8250       160778 :   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2);
    8251       160778 :   M2Quads_PopAuto ();
    8252       160778 :   M2Quads_PopAuto ();
    8253       160778 :   M2Quads_PopAuto ();
    8254       160778 : }
    8255              : 
    8256              : 
    8257              : /*
    8258              :    Definition := 'CONST' { ConstantDeclaration ';'  }  | 
    8259              :                  'TYPE' { Ident ( ';'  | '=' Type Alignment 
    8260              :                                   ';'  )  }  | 
    8261              :                  'VAR' { VariableDeclaration ';'  }  | 
    8262              :                  DefProcedureHeading ';' 
    8263              : 
    8264              :    first  symbols:proceduretok, vartok, typetok, consttok
    8265              :    
    8266              :    cannot reachend
    8267              : */
    8268              : 
    8269      3374473 : static void Definition (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8270              : {
    8271      3374473 :   if (M2LexBuf_currenttoken == M2Reserved_consttok)
    8272              :     {
    8273        23530 :       Expect (M2Reserved_consttok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8274       235196 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    8275              :         {
    8276       188136 :           ConstantDeclaration (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8277       188136 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8278              :         }
    8279              :        /* while  */
    8280              :     }
    8281      3350943 :   else if (M2LexBuf_currenttoken == M2Reserved_typetok)
    8282              :     {
    8283              :       /* avoid dangling else.  */
    8284        82116 :       Expect (M2Reserved_typetok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8285       311251 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    8286              :         {
    8287       147019 :           Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    8288       147019 :           if (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    8289              :             {
    8290        28320 :               Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8291              :             }
    8292       118699 :           else if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    8293              :             {
    8294              :               /* avoid dangling else.  */
    8295       118699 :               Expect (M2Reserved_equaltok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(PCBuild_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|(PCBuild_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8296       118699 :               Type (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8297       118699 :               Alignment (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8298       118699 :               Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8299              :             }
    8300              :           else
    8301              :             {
    8302              :               /* avoid dangling else.  */
    8303            0 :               ErrorArray ((const char *) "expecting one of: {%K=} {%K;}", 29);
    8304              :             }
    8305              :         }
    8306              :        /* while  */
    8307              :     }
    8308      3268827 :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    8309              :     {
    8310              :       /* avoid dangling else.  */
    8311         3662 :       Expect (M2Reserved_vartok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8312        11636 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    8313              :         {
    8314         4312 :           VariableDeclaration (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8315         4312 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8316              :         }
    8317              :        /* while  */
    8318              :     }
    8319      3265165 :   else if (M2LexBuf_currenttoken == M2Reserved_proceduretok)
    8320              :     {
    8321              :       /* avoid dangling else.  */
    8322      3265165 :       DefProcedureHeading (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    8323      3265165 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    8324              :     }
    8325              :   else
    8326              :     {
    8327              :       /* avoid dangling else.  */
    8328            0 :       ErrorArray ((const char *) "expecting one of: {%KPROCEDURE} {%KVAR} {%KTYPE} {%KCONST}", 58);
    8329              :     }
    8330      3374473 : }
    8331              : 
    8332              : 
    8333              : /*
    8334              :    AsmStatement := 'ASM' [ 'VOLATILE'  ] '(' AsmOperands 
    8335              :                    ')' 
    8336              : 
    8337              :    first  symbols:asmtok
    8338              :    
    8339              :    cannot reachend
    8340              : */
    8341              : 
    8342           27 : static void AsmStatement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8343              : {
    8344           27 :   Expect (M2Reserved_asmtok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_volatiletok-M2Reserved_unqualifiedtok))));
    8345           27 :   if (M2LexBuf_currenttoken == M2Reserved_volatiletok)
    8346              :     {
    8347           15 :       Expect (M2Reserved_volatiletok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    8348              :     }
    8349           27 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    8350           27 :   AsmOperands (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    8351           27 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    8352           27 : }
    8353              : 
    8354              : 
    8355              : /*
    8356              :    NamedOperand := '[' Ident ']' 
    8357              : 
    8358              :    first  symbols:lsbratok
    8359              :    
    8360              :    cannot reachend
    8361              : */
    8362              : 
    8363            6 : static void NamedOperand (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8364              : {
    8365            6 :   Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8366            6 :   Ident (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    8367            6 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    8368            6 : }
    8369              : 
    8370              : 
    8371              : /*
    8372              :    AsmOperandName := [ NamedOperand  ] 
    8373              : 
    8374              :    first  symbols:lsbratok
    8375              :    
    8376              :    reachend
    8377              : */
    8378              : 
    8379           33 : static void AsmOperandName (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8380              : {
    8381            0 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    8382              :     {
    8383            6 :       NamedOperand (stopset0, stopset1, stopset2);
    8384              :     }
    8385            0 : }
    8386              : 
    8387              : 
    8388              : /*
    8389              :    AsmOperands := ConstExpression [ ':' AsmList [ ':' 
    8390              :                                                   AsmList 
    8391              :                                                   [ 
    8392              :    ':' TrashList  ]  ]  ] 
    8393              : 
    8394              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok
    8395              :    
    8396              :    cannot reachend
    8397              : */
    8398              : 
    8399           27 : static void AsmOperands (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8400              : {
    8401           27 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    8402           27 :   if (M2LexBuf_currenttoken == M2Reserved_colontok)
    8403              :     {
    8404           21 :       Expect (M2Reserved_colontok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    8405           21 :       AsmList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    8406           21 :       if (M2LexBuf_currenttoken == M2Reserved_colontok)
    8407              :         {
    8408           15 :           Expect (M2Reserved_colontok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    8409           15 :           AsmList (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    8410           15 :           if (M2LexBuf_currenttoken == M2Reserved_colontok)
    8411              :             {
    8412            9 :               Expect (M2Reserved_colontok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    8413            9 :               TrashList (stopset0, stopset1, stopset2);
    8414              :             }
    8415              :         }
    8416              :     }
    8417           27 : }
    8418              : 
    8419              : 
    8420              : /*
    8421              :    AsmList := [ AsmElement  ] { ',' AsmElement  } 
    8422              : 
    8423              :    first  symbols:identtok, attributetok, lcbratok, stringtok, integertok, realtok, nottok, lparatok, minustok, plustok, lsbratok, commatok
    8424              :    
    8425              :    reachend
    8426              : */
    8427              : 
    8428           36 : static void AsmList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8429              : {
    8430           36 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    8431              :     {
    8432           30 :       AsmElement (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    8433              :     }
    8434           39 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    8435              :     {
    8436            3 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_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|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    8437            3 :       AsmElement (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    8438              :     }
    8439              :    /* while  */
    8440           36 : }
    8441              : 
    8442              : 
    8443              : /*
    8444              :    AsmElement := AsmOperandName ConstExpression '(' 
    8445              :                  Expression ')' 
    8446              : 
    8447              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok, lsbratok
    8448              :    
    8449              :    cannot reachend
    8450              : */
    8451              : 
    8452           33 : static void AsmElement (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8453              : {
    8454           33 :   AsmOperandName (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    8455           33 :   ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    8456           33 :   Expect (M2Reserved_lparatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    8457           33 :   Expression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    8458           33 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    8459           33 : }
    8460              : 
    8461              : 
    8462              : /*
    8463              :    TrashList := [ ConstExpression  ] { ',' ConstExpression  } 
    8464              : 
    8465              :    first  symbols:identtok, realtok, integertok, stringtok, lcbratok, attributetok, lparatok, nottok, plustok, minustok, commatok
    8466              :    
    8467              :    reachend
    8468              : */
    8469              : 
    8470            9 : static void TrashList (PCBuild_SetOfStop0 stopset0, PCBuild_SetOfStop1 stopset1, PCBuild_SetOfStop2 stopset2)
    8471              : {
    8472            9 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((PCBuild_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)) & ((PCBuild_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))))
    8473              :     {
    8474            3 :       ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    8475              :     }
    8476            9 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    8477              :     {
    8478            0 :       Expect (M2Reserved_commatok, stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(PCBuild_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(PCBuild_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))));
    8479            0 :       ConstExpression (stopset0|(PCBuild_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    8480              :     }
    8481              :    /* while  */
    8482            9 : }
    8483              : 
    8484              : 
    8485              : /*
    8486              :    CompilationUnit - returns TRUE if the input was correct enough to parse
    8487              :                      in future passes.
    8488              : */
    8489              : 
    8490       243200 : extern "C" bool PCBuild_CompilationUnit (void)
    8491              : {
    8492       243200 :   seenError = false;
    8493       243200 :   FileUnit ((PCBuild_SetOfStop0) ((1 << (M2Reserved_eoftok-M2Reserved_eoftok))), (PCBuild_SetOfStop1) 0, (PCBuild_SetOfStop2) 0);
    8494       243176 :   return ! seenError;
    8495              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    8496              :   __builtin_unreachable ();
    8497              : }
    8498              : 
    8499        14952 : extern "C" void _M2_PCBuild_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
    8500              : {
    8501        14952 :   BlockState = M2StateCheck_InitState ();
    8502        14952 : }
    8503              : 
    8504            0 : extern "C" void _M2_PCBuild_fini (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
    8505              : {
    8506            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.