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