LCOV - code coverage report
Current view: top level - /mnt/build/buildbot/bld/build-lcov/gcc/m2/gm2-compiler-boot - P3Build.c (source / functions) Coverage Total Hit
Test: gcc.info Lines: 69.2 % 2395 1657
Test Date: 2026-06-13 15:38:22 Functions: 84.7 % 177 150
Legend: Lines:     hit not hit

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