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

Generated by: LCOV version 2.5.0-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.