LCOV - code coverage report
Current view: top level - /mnt/build/buildbot/bld/build-lcov/gcc/m2/gm2-compiler-boot - P2Build.c (source / functions) Coverage Total Hit
Test: gcc.info Lines: 65.3 % 2053 1340
Test Date: 2026-02-28 14:20:25 Functions: 90.8 % 152 138
Legend: Lines:     hit not hit

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