LCOV - code coverage report
Current view: top level - /mnt/build/buildbot/bld/build-lcov/gcc/m2/gm2-compiler-boot - PHBuild.c (source / functions) Coverage Total Hit
Test: gcc.info Lines: 44.1 % 2142 945
Test Date: 2026-02-28 14:20:25 Functions: 72.4 % 170 123
Legend: Lines:     hit not hit

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

Generated by: LCOV version 2.4-beta

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