LCOV - code coverage report
Current view: top level - /mnt/build/buildbot/bld/build-lcov/gcc/m2/gm2-compiler-boot - P0SyntaxCheck.c (source / functions) Coverage Total Hit
Test: gcc.info Lines: 72.8 % 1782 1297
Test Date: 2026-02-28 14:20:25 Functions: 98.0 % 147 144
Legend: Lines:     hit not hit

            Line data    Source code
       1              : /* do not edit automatically generated by mc from P0SyntaxCheck.  */
       2              : /* output from m2.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 _P0SyntaxCheck_C
      44              : 
      45              : #include "GP0SyntaxCheck.h"
      46              : #   include "GM2LexBuf.h"
      47              : #   include "GM2Quads.h"
      48              : #   include "GM2Reserved.h"
      49              : #   include "GM2MetaError.h"
      50              : #   include "GP2SymBuild.h"
      51              : #   include "GNameKey.h"
      52              : #   include "GStrLib.h"
      53              : #   include "GM2Batch.h"
      54              : #   include "GDynamicStrings.h"
      55              : #   include "GM2Debug.h"
      56              : #   include "GM2Printf.h"
      57              : #   include "GP0SymBuild.h"
      58              : #   include "GSymbolTable.h"
      59              : #   include "GM2Error.h"
      60              : 
      61              : #   define Debugging false
      62              : #   define DebugRecover false
      63              : #   define Pass0 true
      64              : #   define Pass1 false
      65              : #   define Pass2 false
      66              : #   define Pass3 false
      67              : #   define MaxInsert 10
      68              : typedef unsigned int P0SyntaxCheck_stop0;
      69              : 
      70              : typedef unsigned int P0SyntaxCheck_SetOfStop0;
      71              : 
      72              : typedef unsigned int P0SyntaxCheck_stop1;
      73              : 
      74              : typedef unsigned int P0SyntaxCheck_SetOfStop1;
      75              : 
      76              : typedef unsigned int P0SyntaxCheck_stop2;
      77              : 
      78              : typedef unsigned int P0SyntaxCheck_SetOfStop2;
      79              : 
      80              : static bool EnableImportCheck;
      81              : static bool seenError;
      82              : static NameKey_Name LastIdent;
      83              : static unsigned int InsertCount;
      84              : 
      85              : /*
      86              :    CompilationUnit - returns TRUE if the input was correct enough to parse
      87              :                      in future passes.
      88              : */
      89              : 
      90              : extern "C" bool P0SyntaxCheck_CompilationUnit (void);
      91              : 
      92              : /*
      93              :    BlockAssert - wrap an Assert specifically for blocks.
      94              : */
      95              : 
      96              : static void BlockAssert (bool value);
      97              : 
      98              : /*
      99              :    BlockAssert - wrap an Assert specifically for blocks.
     100              : */
     101              : 
     102              : static void ErrorString (DynamicStrings_String s);
     103              : 
     104              : /*
     105              :    BlockAssert - wrap an Assert specifically for blocks.
     106              : */
     107              : 
     108              : static void ErrorArray (const char *a_, unsigned int _a_high);
     109              : 
     110              : /*
     111              :    DescribeStop - issues a message explaining what tokens were expected
     112              : */
     113              : 
     114              : static DynamicStrings_String DescribeStop (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     115              : 
     116              : /*
     117              :    DescribeError - issues a message explaining what tokens were expected
     118              : */
     119              : 
     120              : static void DescribeError (void);
     121              : 
     122              : /*
     123              :    SyntaxError - after a syntax error we skip all tokens up until we reach
     124              :                  a stop symbol.
     125              : */
     126              : 
     127              : static void SyntaxError (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     128              : 
     129              : /*
     130              :    SyntaxCheck -
     131              : */
     132              : 
     133              : static void SyntaxCheck (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     134              : 
     135              : /*
     136              :    GetMissingTokenMessage - generates and returns a string about a missing token, t.
     137              : */
     138              : 
     139              : static DynamicStrings_String GetMissingTokenMessage (M2Reserved_toktype t);
     140              : 
     141              : /*
     142              :    ErrorMissingToken - generates an error message about a missing token, t.
     143              : */
     144              : 
     145              : static void ErrorMissingToken (M2Reserved_toktype t);
     146              : 
     147              : /*
     148              :    WarnMissingToken - generates a warning message about a missing token, t.
     149              : */
     150              : 
     151              : static void WarnMissingToken (M2Reserved_toktype t);
     152              : 
     153              : /*
     154              :    MissingToken - generates a warning message about a missing token, t.
     155              : */
     156              : 
     157              : static void MissingToken (M2Reserved_toktype t);
     158              : 
     159              : /*
     160              :    CheckInsertCandidate -
     161              : */
     162              : 
     163              : static bool CheckInsertCandidate (M2Reserved_toktype t, P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     164              : 
     165              : /*
     166              :    InStopSet
     167              : */
     168              : 
     169              : static bool InStopSet (M2Reserved_toktype t, P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     170              : 
     171              : /*
     172              :    PeepToken - peep token checks to see whether the stopset is satisfied by currenttoken
     173              :                If it is not then it will insert a token providing the token
     174              :                is one of ; ] ) } . OF END ,
     175              : 
     176              :                if the stopset contains <identtok> then we do not insert a token
     177              : */
     178              : 
     179              : static void PeepToken (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     180              : 
     181              : /*
     182              :    DetectImport - checks whether the next token is an import or from and if so
     183              :                   generates an error message.  This is called after an export
     184              :                   statement to notify the user that the ordering is incorrect.
     185              : */
     186              : 
     187              : static void DetectImport (void);
     188              : 
     189              : /*
     190              :    Expect -
     191              : */
     192              : 
     193              : static void Expect (M2Reserved_toktype t, P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     194              : 
     195              : /*
     196              :    Ident - error checking varient of Ident
     197              : */
     198              : 
     199              : static void Ident (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     200              : 
     201              : /*
     202              :    string -
     203              : */
     204              : 
     205              : static void string (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     206              : 
     207              : /*
     208              :    Integer -
     209              : */
     210              : 
     211              : static void Integer (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     212              : 
     213              : /*
     214              :    Real -
     215              : */
     216              : 
     217              : static void Real (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     218              : 
     219              : /*
     220              :    FileUnit := 
     221              :                % PushAutoOff  %
     222              :                ( DefinitionModule  | 
     223              :                  ImplementationOrProgramModule  ) 
     224              :                % PopAuto  %
     225              :                
     226              : 
     227              :    first  symbols:implementationtok, moduletok, definitiontok
     228              :    
     229              :    cannot reachend
     230              : */
     231              : 
     232              : static void FileUnit (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     233              : 
     234              : /*
     235              :    ProgramModule := 'MODULE' 
     236              :                     % PushAutoOn ;  %
     237              :                     
     238              :                     % M2Error.DefaultProgramModule  %
     239              :                     Ident 
     240              :                     % RegisterProgramModule ;  %
     241              :                     
     242              :                     % PushAutoOff ;  %
     243              :                     [ Priority  ] ';' 
     244              :                     % PushAutoOn ;  %
     245              :                     { Import 
     246              :                       % RegisterImports  %
     247              :                        } 
     248              :                     % PopAuto  %
     249              :                     Block 
     250              :                     % PopAuto  %
     251              :                     Ident '.' 
     252              :                     % EndModule  %
     253              :                     
     254              :                     % PopAuto  %
     255              :                     
     256              : 
     257              :    first  symbols:moduletok
     258              :    
     259              :    cannot reachend
     260              : */
     261              : 
     262              : static void ProgramModule (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     263              : 
     264              : /*
     265              :    ImplementationModule := 'IMPLEMENTATION' 
     266              :                            % M2Error.DefaultImplementationModule  %
     267              :                            'MODULE' 
     268              :                            % PushAutoOn ;  %
     269              :                            Ident 
     270              :                            % RegisterImplementationModule ;  %
     271              :                            
     272              :                            % PushAutoOff ;  %
     273              :                            [ Priority  ] ';' 
     274              :                            % PushAutoOn ;  %
     275              :                            { Import 
     276              :                              % RegisterImports  %
     277              :                               } 
     278              :                            % PopAuto  %
     279              :                            Block 
     280              :                            % PopAuto  %
     281              :                            Ident 
     282              :                            % EndModule  %
     283              :                            
     284              :                            % PopAuto  %
     285              :                            '.' 
     286              : 
     287              :    first  symbols:implementationtok
     288              :    
     289              :    cannot reachend
     290              : */
     291              : 
     292              : static void ImplementationModule (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     293              : 
     294              : /*
     295              :    ImplementationOrProgramModule := ImplementationModule  | 
     296              :                                     ProgramModule 
     297              : 
     298              :    first  symbols:moduletok, implementationtok
     299              :    
     300              :    cannot reachend
     301              : */
     302              : 
     303              : static void ImplementationOrProgramModule (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     304              : 
     305              : /*
     306              :    Number := Integer  | Real 
     307              : 
     308              :    first  symbols:realtok, integertok
     309              :    
     310              :    cannot reachend
     311              : */
     312              : 
     313              : static void Number (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     314              : 
     315              : /*
     316              :    Qualident := Ident { '.' Ident  } 
     317              : 
     318              :    first  symbols:identtok
     319              :    
     320              :    cannot reachend
     321              : */
     322              : 
     323              : static void Qualident (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     324              : 
     325              : /*
     326              :    ConstantDeclaration := Ident '=' ConstExpression 
     327              : 
     328              :    first  symbols:identtok
     329              :    
     330              :    cannot reachend
     331              : */
     332              : 
     333              : static void ConstantDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     334              : 
     335              : /*
     336              :    ConstExpression := SimpleConstExpr [ Relation SimpleConstExpr  ] 
     337              : 
     338              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     339              :    
     340              :    cannot reachend
     341              : */
     342              : 
     343              : static void ConstExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     344              : 
     345              : /*
     346              :    Relation := '='  | '#'  | '<>'  | '<'  | '<='  | 
     347              :                '>'  | '>='  | 'IN' 
     348              : 
     349              :    first  symbols:intok, greaterequaltok, greatertok, lessequaltok, lesstok, lessgreatertok, hashtok, equaltok
     350              :    
     351              :    cannot reachend
     352              : */
     353              : 
     354              : static void Relation (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     355              : 
     356              : /*
     357              :    SimpleConstExpr := UnaryOrConstTerm { AddOperator 
     358              :                                          ConstTerm  } 
     359              : 
     360              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     361              :    
     362              :    cannot reachend
     363              : */
     364              : 
     365              : static void SimpleConstExpr (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     366              : 
     367              : /*
     368              :    UnaryOrConstTerm := '+' ConstTerm  | 
     369              :                        '-' ConstTerm  | 
     370              :                        ConstTerm 
     371              : 
     372              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     373              :    
     374              :    cannot reachend
     375              : */
     376              : 
     377              : static void UnaryOrConstTerm (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     378              : 
     379              : /*
     380              :    AddOperator := '+'  | '-'  | 'OR' 
     381              : 
     382              :    first  symbols:ortok, minustok, plustok
     383              :    
     384              :    cannot reachend
     385              : */
     386              : 
     387              : static void AddOperator (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     388              : 
     389              : /*
     390              :    ConstTerm := ConstFactor { MulOperator ConstFactor  } 
     391              : 
     392              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok
     393              :    
     394              :    cannot reachend
     395              : */
     396              : 
     397              : static void ConstTerm (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     398              : 
     399              : /*
     400              :    MulOperator := '*'  | '/'  | 'DIV'  | 'MOD'  | 
     401              :                   'REM'  | 'AND'  | '&' 
     402              : 
     403              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
     404              :    
     405              :    cannot reachend
     406              : */
     407              : 
     408              : static void MulOperator (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     409              : 
     410              : /*
     411              :    ConstFactor := Number  | ConstString  | 
     412              :                   ConstSetOrQualidentOrFunction  | 
     413              :                   '(' ConstExpression ')'  | 
     414              :                   'NOT' ConstFactor  | 
     415              :                   ConstAttribute 
     416              : 
     417              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok
     418              :    
     419              :    cannot reachend
     420              : */
     421              : 
     422              : static void ConstFactor (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     423              : 
     424              : /*
     425              :    ConstString := string 
     426              : 
     427              :    first  symbols:stringtok
     428              :    
     429              :    cannot reachend
     430              : */
     431              : 
     432              : static void ConstString (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     433              : 
     434              : /*
     435              :    ComponentElement := ConstExpression [ '..' ConstExpression  ] 
     436              : 
     437              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     438              :    
     439              :    cannot reachend
     440              : */
     441              : 
     442              : static void ComponentElement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     443              : 
     444              : /*
     445              :    ComponentValue := ComponentElement [ 'BY' ConstExpression  ] 
     446              : 
     447              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     448              :    
     449              :    cannot reachend
     450              : */
     451              : 
     452              : static void ComponentValue (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     453              : 
     454              : /*
     455              :    ArraySetRecordValue := ComponentValue { ',' ComponentValue  } 
     456              : 
     457              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     458              :    
     459              :    cannot reachend
     460              : */
     461              : 
     462              : static void ArraySetRecordValue (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     463              : 
     464              : /*
     465              :    Constructor := '{' [ ArraySetRecordValue  ] '}' 
     466              : 
     467              :    first  symbols:lcbratok
     468              :    
     469              :    cannot reachend
     470              : */
     471              : 
     472              : static void Constructor (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     473              : 
     474              : /*
     475              :    ConstSetOrQualidentOrFunction := Constructor  | 
     476              :                                     Qualident [ Constructor  | 
     477              :                                                 ConstActualParameters  ] 
     478              : 
     479              :    first  symbols:identtok, lcbratok
     480              :    
     481              :    cannot reachend
     482              : */
     483              : 
     484              : static void ConstSetOrQualidentOrFunction (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     485              : 
     486              : /*
     487              :    ConstActualParameters := '(' [ ExpList  ] ')' 
     488              : 
     489              :    first  symbols:lparatok
     490              :    
     491              :    cannot reachend
     492              : */
     493              : 
     494              : static void ConstActualParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     495              : 
     496              : /*
     497              :    ConstAttribute := '__ATTRIBUTE__' '__BUILTIN__' 
     498              :                      '(' '(' ConstAttributeExpression 
     499              :                      ')' ')' 
     500              : 
     501              :    first  symbols:attributetok
     502              :    
     503              :    cannot reachend
     504              : */
     505              : 
     506              : static void ConstAttribute (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     507              : 
     508              : /*
     509              :    ConstAttributeExpression := Ident  | '<' Qualident 
     510              :                                ',' Ident '>' 
     511              : 
     512              :    first  symbols:lesstok, identtok
     513              :    
     514              :    cannot reachend
     515              : */
     516              : 
     517              : static void ConstAttributeExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     518              : 
     519              : /*
     520              :    ByteAlignment := '' 
     521              : 
     522              :    first  symbols:ldirectivetok
     523              :    
     524              :    cannot reachend
     525              : */
     526              : 
     527              : static void ByteAlignment (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     528              : 
     529              : /*
     530              :    Alignment := [ ByteAlignment  ] 
     531              : 
     532              :    first  symbols:ldirectivetok
     533              :    
     534              :    reachend
     535              : */
     536              : 
     537              : static void Alignment (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     538              : 
     539              : /*
     540              :    TypeDeclaration := Ident '=' Type Alignment 
     541              : 
     542              :    first  symbols:identtok
     543              :    
     544              :    cannot reachend
     545              : */
     546              : 
     547              : static void TypeDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     548              : 
     549              : /*
     550              :    Type := SimpleType  | ArrayType  | RecordType  | 
     551              :            SetType  | PointerType  | ProcedureType 
     552              : 
     553              :    first  symbols:lparatok, lsbratok, proceduretok, pointertok, settok, packedsettok, oftok, recordtok, arraytok, identtok
     554              :    
     555              :    cannot reachend
     556              : */
     557              : 
     558              : static void Type (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     559              : 
     560              : /*
     561              :    SimpleType := Qualident [ SubrangeType  ]  | 
     562              :                  Enumeration  | SubrangeType 
     563              : 
     564              :    first  symbols:lsbratok, lparatok, identtok
     565              :    
     566              :    cannot reachend
     567              : */
     568              : 
     569              : static void SimpleType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     570              : 
     571              : /*
     572              :    Enumeration := '(' IdentList ')' 
     573              : 
     574              :    first  symbols:lparatok
     575              :    
     576              :    cannot reachend
     577              : */
     578              : 
     579              : static void Enumeration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     580              : 
     581              : /*
     582              :    IdentList := Ident 
     583              :                 % VAR
     584              :                                                                                                   on: BOOLEAN ;
     585              :                                                                                                   n : CARDINAL ;  %
     586              :                 
     587              :                 % on := IsAutoPushOn() ;
     588              :                   IF on
     589              :                   THEN
     590              :                      n := 1
     591              :                   END  %
     592              :                 { ',' Ident 
     593              :                   % IF on
     594              :                     THEN
     595              :                        INC(n)
     596              :                     END  %
     597              :                    } 
     598              :                 % IF on
     599              :                   THEN
     600              :                      PushT(n)
     601              :                   END  %
     602              :                 
     603              : 
     604              :    first  symbols:identtok
     605              :    
     606              :    cannot reachend
     607              : */
     608              : 
     609              : static void IdentList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     610              : 
     611              : /*
     612              :    SubrangeType := '[' ConstExpression '..' ConstExpression 
     613              :                    ']' 
     614              : 
     615              :    first  symbols:lsbratok
     616              :    
     617              :    cannot reachend
     618              : */
     619              : 
     620              : static void SubrangeType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     621              : 
     622              : /*
     623              :    ArrayType := 'ARRAY' SimpleType { ',' SimpleType  } 
     624              :                 'OF' Type 
     625              : 
     626              :    first  symbols:arraytok
     627              :    
     628              :    cannot reachend
     629              : */
     630              : 
     631              : static void ArrayType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     632              : 
     633              : /*
     634              :    RecordType := 'RECORD' [ DefaultRecordAttributes  ] 
     635              :                  FieldListSequence 'END' 
     636              : 
     637              :    first  symbols:recordtok
     638              :    
     639              :    cannot reachend
     640              : */
     641              : 
     642              : static void RecordType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     643              : 
     644              : /*
     645              :    DefaultRecordAttributes := '' 
     646              : 
     647              :    first  symbols:ldirectivetok
     648              :    
     649              :    cannot reachend
     650              : */
     651              : 
     652              : static void DefaultRecordAttributes (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     653              : 
     654              : /*
     655              :    RecordFieldPragma := [ ''  ] 
     656              : 
     657              :    first  symbols:ldirectivetok
     658              :    
     659              :    reachend
     660              : */
     661              : 
     662              : static void RecordFieldPragma (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     663              : 
     664              : /*
     665              :    FieldPragmaExpression := Ident [ '(' ConstExpression 
     666              :                                     ')'  ] 
     667              : 
     668              :    first  symbols:identtok
     669              :    
     670              :    cannot reachend
     671              : */
     672              : 
     673              : static void FieldPragmaExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     674              : 
     675              : /*
     676              :    AttributeExpression := Ident '(' ConstExpression 
     677              :                           ')' 
     678              : 
     679              :    first  symbols:identtok
     680              :    
     681              :    cannot reachend
     682              : */
     683              : 
     684              : static void AttributeExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     685              : 
     686              : /*
     687              :    FieldListSequence := FieldListStatement { ';' FieldListStatement  } 
     688              : 
     689              :    first  symbols:casetok, identtok, semicolontok
     690              :    
     691              :    reachend
     692              : */
     693              : 
     694              : static void FieldListSequence (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     695              : 
     696              : /*
     697              :    FieldListStatement := [ FieldList  ] 
     698              : 
     699              :    first  symbols:identtok, casetok
     700              :    
     701              :    reachend
     702              : */
     703              : 
     704              : static void FieldListStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     705              : 
     706              : /*
     707              :    FieldList := IdentList ':' Type RecordFieldPragma  | 
     708              :                 'CASE' CaseTag 'OF' Varient { '|' Varient  } 
     709              :                 [ 'ELSE' FieldListSequence  ] 'END' 
     710              : 
     711              :    first  symbols:casetok, identtok
     712              :    
     713              :    cannot reachend
     714              : */
     715              : 
     716              : static void FieldList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     717              : 
     718              : /*
     719              :    TagIdent := [ Ident  ] 
     720              : 
     721              :    first  symbols:identtok
     722              :    
     723              :    reachend
     724              : */
     725              : 
     726              : static void TagIdent (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     727              : 
     728              : /*
     729              :    CaseTag := TagIdent [ ':' Qualident  ] 
     730              : 
     731              :    first  symbols:colontok, identtok
     732              :    
     733              :    reachend
     734              : */
     735              : 
     736              : static void CaseTag (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     737              : 
     738              : /*
     739              :    Varient := [ VarientCaseLabelList ':' FieldListSequence  ] 
     740              : 
     741              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     742              :    
     743              :    reachend
     744              : */
     745              : 
     746              : static void Varient (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     747              : 
     748              : /*
     749              :    VarientCaseLabelList := VarientCaseLabels { ',' 
     750              :                                                VarientCaseLabels  } 
     751              : 
     752              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     753              :    
     754              :    cannot reachend
     755              : */
     756              : 
     757              : static void VarientCaseLabelList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     758              : 
     759              : /*
     760              :    VarientCaseLabels := ConstExpression [ '..' ConstExpression  ] 
     761              : 
     762              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     763              :    
     764              :    cannot reachend
     765              : */
     766              : 
     767              : static void VarientCaseLabels (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     768              : 
     769              : /*
     770              :    CaseLabelList := CaseLabels { ',' CaseLabels  } 
     771              : 
     772              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
     773              :    
     774              :    cannot reachend
     775              : */
     776              : 
     777              : static void CaseLabelList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     778              : 
     779              : /*
     780              :    CaseLabels := ConstExpression [ '..' ConstExpression  ] 
     781              : 
     782              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
     783              :    
     784              :    cannot reachend
     785              : */
     786              : 
     787              : static void CaseLabels (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     788              : 
     789              : /*
     790              :    SetType := ( 'SET'  | 'PACKEDSET'  ) 'OF' SimpleType 
     791              : 
     792              :    first  symbols:oftok, packedsettok, settok
     793              :    
     794              :    cannot reachend
     795              : */
     796              : 
     797              : static void SetType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     798              : 
     799              : /*
     800              :    PointerType := 'POINTER' 'TO' Type 
     801              : 
     802              :    first  symbols:pointertok
     803              :    
     804              :    cannot reachend
     805              : */
     806              : 
     807              : static void PointerType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     808              : 
     809              : /*
     810              :    ProcedureType := 'PROCEDURE' [ FormalTypeList  ] 
     811              : 
     812              :    first  symbols:proceduretok
     813              :    
     814              :    cannot reachend
     815              : */
     816              : 
     817              : static void ProcedureType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     818              : 
     819              : /*
     820              :    FormalTypeList := '(' ( ')' FormalReturn  | 
     821              :                            ProcedureParameters ')' 
     822              :                            FormalReturn  ) 
     823              : 
     824              :    first  symbols:lparatok
     825              :    
     826              :    cannot reachend
     827              : */
     828              : 
     829              : static void FormalTypeList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     830              : 
     831              : /*
     832              :    FormalReturn := [ ':' OptReturnType  ] 
     833              : 
     834              :    first  symbols:colontok
     835              :    
     836              :    reachend
     837              : */
     838              : 
     839              : static void FormalReturn (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     840              : 
     841              : /*
     842              :    OptReturnType := '[' Qualident ']'  | 
     843              :                     Qualident 
     844              : 
     845              :    first  symbols:identtok, lsbratok
     846              :    
     847              :    cannot reachend
     848              : */
     849              : 
     850              : static void OptReturnType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     851              : 
     852              : /*
     853              :    ProcedureParameters := ProcedureParameter { ',' 
     854              :                                                ProcedureParameter  } 
     855              : 
     856              :    first  symbols:identtok, arraytok, periodperiodperiodtok, vartok
     857              :    
     858              :    cannot reachend
     859              : */
     860              : 
     861              : static void ProcedureParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     862              : 
     863              : /*
     864              :    ProcedureParameter := '...'  | 'VAR' FormalType  | 
     865              :                          FormalType 
     866              : 
     867              :    first  symbols:arraytok, identtok, vartok, periodperiodperiodtok
     868              :    
     869              :    cannot reachend
     870              : */
     871              : 
     872              : static void ProcedureParameter (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     873              : 
     874              : /*
     875              :    VarIdent := Ident [ '[' ConstExpression ']'  ] 
     876              : 
     877              :    first  symbols:identtok
     878              :    
     879              :    cannot reachend
     880              : */
     881              : 
     882              : static void VarIdent (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     883              : 
     884              : /*
     885              :    VariableDeclaration := VarIdentList ':' Type Alignment 
     886              : 
     887              :    first  symbols:identtok
     888              :    
     889              :    cannot reachend
     890              : */
     891              : 
     892              : static void VariableDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     893              : 
     894              : /*
     895              :    VarIdentList := VarIdent 
     896              :                    % VAR
     897              :                                                                                                      on: BOOLEAN ;
     898              :                                                                                                      n : CARDINAL ;  %
     899              :                    
     900              :                    % on := IsAutoPushOn() ;
     901              :                      IF on
     902              :                      THEN
     903              :                         n := 1
     904              :                      END  %
     905              :                    { ',' VarIdent 
     906              :                      % IF on
     907              :                        THEN
     908              :                           INC(n)
     909              :                        END  %
     910              :                       } 
     911              :                    % IF on
     912              :                      THEN
     913              :                         PushT(n)
     914              :                      END  %
     915              :                    
     916              : 
     917              :    first  symbols:identtok
     918              :    
     919              :    cannot reachend
     920              : */
     921              : 
     922              : static void VarIdentList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     923              : 
     924              : /*
     925              :    Designator := Qualident { SubDesignator  } 
     926              : 
     927              :    first  symbols:identtok
     928              :    
     929              :    cannot reachend
     930              : */
     931              : 
     932              : static void Designator (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     933              : 
     934              : /*
     935              :    SubDesignator := '.' Ident  | '[' ExpList ']'  | 
     936              :                     '^' 
     937              : 
     938              :    first  symbols:uparrowtok, lsbratok, periodtok
     939              :    
     940              :    cannot reachend
     941              : */
     942              : 
     943              : static void SubDesignator (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     944              : 
     945              : /*
     946              :    ExpList := Expression { ',' Expression  } 
     947              : 
     948              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
     949              :    
     950              :    cannot reachend
     951              : */
     952              : 
     953              : static void ExpList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     954              : 
     955              : /*
     956              :    Expression := SimpleExpression [ Relation SimpleExpression  ] 
     957              : 
     958              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, attributetok, plustok, minustok
     959              :    
     960              :    cannot reachend
     961              : */
     962              : 
     963              : static void Expression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     964              : 
     965              : /*
     966              :    SimpleExpression := [ '+'  | '-'  ] Term { AddOperator 
     967              :                                               Term  } 
     968              : 
     969              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
     970              :    
     971              :    cannot reachend
     972              : */
     973              : 
     974              : static void SimpleExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     975              : 
     976              : /*
     977              :    Term := Factor { MulOperator Factor  } 
     978              : 
     979              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, attributetok
     980              :    
     981              :    cannot reachend
     982              : */
     983              : 
     984              : static void Term (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     985              : 
     986              : /*
     987              :    Factor := Number  | string  | SetOrDesignatorOrFunction  | 
     988              :              '(' Expression ')'  | 
     989              :              'NOT' Factor  | ConstAttribute 
     990              : 
     991              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok
     992              :    
     993              :    cannot reachend
     994              : */
     995              : 
     996              : static void Factor (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
     997              : 
     998              : /*
     999              :    SetOrDesignatorOrFunction := ( Qualident [ Constructor  | 
    1000              :                                               SimpleDes 
    1001              :                                               [ ActualParameters  ]  ]  | 
    1002              :                                   Constructor  ) 
    1003              : 
    1004              :    first  symbols:lcbratok, identtok
    1005              :    
    1006              :    cannot reachend
    1007              : */
    1008              : 
    1009              : static void SetOrDesignatorOrFunction (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1010              : 
    1011              : /*
    1012              :    SimpleDes := { '.' Ident  | '[' ExpList ']'  | 
    1013              :                   '^'  } 
    1014              : 
    1015              :    first  symbols:uparrowtok, lsbratok, periodtok
    1016              :    
    1017              :    reachend
    1018              : */
    1019              : 
    1020              : static void SimpleDes (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1021              : 
    1022              : /*
    1023              :    ActualParameters := '(' [ ExpList  ] ')' 
    1024              : 
    1025              :    first  symbols:lparatok
    1026              :    
    1027              :    cannot reachend
    1028              : */
    1029              : 
    1030              : static void ActualParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1031              : 
    1032              : /*
    1033              :    Statement := [ AssignmentOrProcedureCall  | 
    1034              :                   IfStatement  | CaseStatement  | 
    1035              :                   WhileStatement  | 
    1036              :                   RepeatStatement  | 
    1037              :                   LoopStatement  | ForStatement  | 
    1038              :                   WithStatement  | AsmStatement  | 
    1039              :                   'EXIT'  | 'RETURN' [ Expression  ]  | 
    1040              :                   RetryStatement  ] 
    1041              : 
    1042              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok
    1043              :    
    1044              :    reachend
    1045              : */
    1046              : 
    1047              : static void Statement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1048              : 
    1049              : /*
    1050              :    RetryStatement := 'RETRY' 
    1051              : 
    1052              :    first  symbols:retrytok
    1053              :    
    1054              :    cannot reachend
    1055              : */
    1056              : 
    1057              : static void RetryStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1058              : 
    1059              : /*
    1060              :    AssignmentOrProcedureCall := Designator ( ':=' Expression  | 
    1061              :                                              ActualParameters  | 
    1062              :                                              
    1063              :                                              %  epsilon   %
    1064              :                                               ) 
    1065              : 
    1066              :    first  symbols:identtok
    1067              :    
    1068              :    cannot reachend
    1069              : */
    1070              : 
    1071              : static void AssignmentOrProcedureCall (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1072              : 
    1073              : /*
    1074              :    StatementSequence := Statement { ';' Statement  } 
    1075              : 
    1076              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok
    1077              :    
    1078              :    reachend
    1079              : */
    1080              : 
    1081              : static void StatementSequence (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1082              : 
    1083              : /*
    1084              :    IfStatement := 'IF' Expression 'THEN' StatementSequence 
    1085              :                   { 'ELSIF' Expression 'THEN' StatementSequence  } 
    1086              :                   [ 'ELSE' StatementSequence  ] 'END' 
    1087              : 
    1088              :    first  symbols:iftok
    1089              :    
    1090              :    cannot reachend
    1091              : */
    1092              : 
    1093              : static void IfStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1094              : 
    1095              : /*
    1096              :    CaseStatement := 'CASE' Expression 'OF' Case { '|' 
    1097              :                                                   Case  } 
    1098              :                     [ 'ELSE' StatementSequence  ] 'END' 
    1099              : 
    1100              :    first  symbols:casetok
    1101              :    
    1102              :    cannot reachend
    1103              : */
    1104              : 
    1105              : static void CaseStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1106              : 
    1107              : /*
    1108              :    Case := [ CaseLabelList ':' StatementSequence  ] 
    1109              : 
    1110              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    1111              :    
    1112              :    reachend
    1113              : */
    1114              : 
    1115              : static void Case (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1116              : 
    1117              : /*
    1118              :    WhileStatement := 'WHILE' Expression 'DO' StatementSequence 
    1119              :                      'END' 
    1120              : 
    1121              :    first  symbols:whiletok
    1122              :    
    1123              :    cannot reachend
    1124              : */
    1125              : 
    1126              : static void WhileStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1127              : 
    1128              : /*
    1129              :    RepeatStatement := 'REPEAT' StatementSequence 'UNTIL' 
    1130              :                       Expression 
    1131              : 
    1132              :    first  symbols:repeattok
    1133              :    
    1134              :    cannot reachend
    1135              : */
    1136              : 
    1137              : static void RepeatStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1138              : 
    1139              : /*
    1140              :    ForStatement := 'FOR' Ident ':=' Expression 'TO' 
    1141              :                    Expression [ 'BY' ConstExpression  ] 
    1142              :                    'DO' StatementSequence 'END' 
    1143              : 
    1144              :    first  symbols:fortok
    1145              :    
    1146              :    cannot reachend
    1147              : */
    1148              : 
    1149              : static void ForStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1150              : 
    1151              : /*
    1152              :    LoopStatement := 'LOOP' StatementSequence 'END' 
    1153              : 
    1154              :    first  symbols:looptok
    1155              :    
    1156              :    cannot reachend
    1157              : */
    1158              : 
    1159              : static void LoopStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1160              : 
    1161              : /*
    1162              :    WithStatement := 'WITH' Designator 'DO' StatementSequence 
    1163              :                     'END' 
    1164              : 
    1165              :    first  symbols:withtok
    1166              :    
    1167              :    cannot reachend
    1168              : */
    1169              : 
    1170              : static void WithStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1171              : 
    1172              : /*
    1173              :    ProcedureDeclaration := 
    1174              :                            % VAR top: CARDINAL ;  %
    1175              :                            
    1176              :                            % top := Top ()  %
    1177              :                            ProcedureHeading ';' PostProcedureHeading 
    1178              :                            
    1179              :                            % BlockAssert (top = Top ())  %
    1180              :                            
    1181              : 
    1182              :    first  symbols:proceduretok
    1183              :    
    1184              :    cannot reachend
    1185              : */
    1186              : 
    1187              : static void ProcedureDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1188              : 
    1189              : /*
    1190              :    PostProcedureHeading := ProperProcedure  | 
    1191              :                            ForwardDeclaration 
    1192              : 
    1193              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok, forwardtok
    1194              :    
    1195              :    cannot reachend
    1196              : */
    1197              : 
    1198              : static void PostProcedureHeading (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1199              : 
    1200              : /*
    1201              :    ForwardDeclaration := 'FORWARD' 
    1202              :                          % EndForward  %
    1203              :                          
    1204              : 
    1205              :    first  symbols:forwardtok
    1206              :    
    1207              :    cannot reachend
    1208              : */
    1209              : 
    1210              : static void ForwardDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1211              : 
    1212              : /*
    1213              :    ProperProcedure := ProcedureBlock 
    1214              :                       % PushAutoOn  %
    1215              :                       Ident 
    1216              :                       % EndProcedure  %
    1217              :                       
    1218              :                       % PopAuto  %
    1219              :                       
    1220              : 
    1221              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok, begintok, endtok
    1222              :    
    1223              :    cannot reachend
    1224              : */
    1225              : 
    1226              : static void ProperProcedure (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1227              : 
    1228              : /*
    1229              :    DefineBuiltinProcedure := [ '__ATTRIBUTE__' '__BUILTIN__' 
    1230              :                                '(' '(' Ident ')' ')'  | 
    1231              :                                '__INLINE__'  ] 
    1232              : 
    1233              :    first  symbols:inlinetok, attributetok
    1234              :    
    1235              :    reachend
    1236              : */
    1237              : 
    1238              : static void DefineBuiltinProcedure (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1239              : 
    1240              : /*
    1241              :    ProcedureHeading := 'PROCEDURE' 
    1242              :                        % M2Error.DefaultProcedure  %
    1243              :                        DefineBuiltinProcedure ( 
    1244              :                                                 % PushAutoOn  %
    1245              :                                                 Ident 
    1246              :                                                 
    1247              :                                                 % RegisterProcedure  %
    1248              :                                                 
    1249              :                                                 % PopAuto  %
    1250              :                                                 [ FormalParameters  ] 
    1251              :                                                 AttributeNoReturn  ) 
    1252              : 
    1253              :    first  symbols:proceduretok
    1254              :    
    1255              :    cannot reachend
    1256              : */
    1257              : 
    1258              : static void ProcedureHeading (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1259              : 
    1260              : /*
    1261              :    AttributeNoReturn := [ ''  ] 
    1262              : 
    1263              :    first  symbols:ldirectivetok
    1264              :    
    1265              :    reachend
    1266              : */
    1267              : 
    1268              : static void AttributeNoReturn (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1269              : 
    1270              : /*
    1271              :    AttributeUnused := [ ''  ] 
    1272              : 
    1273              :    first  symbols:ldirectivetok
    1274              :    
    1275              :    reachend
    1276              : */
    1277              : 
    1278              : static void AttributeUnused (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1279              : 
    1280              : /*
    1281              :    Builtin := [ '__BUILTIN__' 
    1282              :                 % PutModuleContainsBuiltin  %
    1283              :                  | '__INLINE__'  ] 
    1284              : 
    1285              :    first  symbols:inlinetok, builtintok
    1286              :    
    1287              :    reachend
    1288              : */
    1289              : 
    1290              : static void Builtin (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1291              : 
    1292              : /*
    1293              :    DefProcedureHeading := 'PROCEDURE' 
    1294              :                           % M2Error.DefaultProcedure  %
    1295              :                           Builtin ( Ident [ DefFormalParameters  ] 
    1296              :                                     AttributeNoReturn  ) 
    1297              :                           
    1298              :                           % M2Error.LeaveErrorScope  %
    1299              :                           
    1300              : 
    1301              :    first  symbols:proceduretok
    1302              :    
    1303              :    cannot reachend
    1304              : */
    1305              : 
    1306              : static void DefProcedureHeading (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1307              : 
    1308              : /*
    1309              :    ProcedureBlock := { Declaration  } [ 'BEGIN' BlockBody  ] 
    1310              :                      'END' 
    1311              : 
    1312              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok
    1313              :    
    1314              :    cannot reachend
    1315              : */
    1316              : 
    1317              : static void ProcedureBlock (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1318              : 
    1319              : /*
    1320              :    Block := { Declaration  } InitialBlock FinalBlock 
    1321              :             'END' 
    1322              : 
    1323              :    first  symbols:proceduretok, moduletok, finallytok, begintok, consttok, typetok, vartok, endtok
    1324              :    
    1325              :    cannot reachend
    1326              : */
    1327              : 
    1328              : static void Block (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1329              : 
    1330              : /*
    1331              :    InitialBlock := [ 'BEGIN' BlockBody  ] 
    1332              : 
    1333              :    first  symbols:begintok
    1334              :    
    1335              :    reachend
    1336              : */
    1337              : 
    1338              : static void InitialBlock (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1339              : 
    1340              : /*
    1341              :    FinalBlock := [ 'FINALLY' BlockBody  ] 
    1342              : 
    1343              :    first  symbols:finallytok
    1344              :    
    1345              :    reachend
    1346              : */
    1347              : 
    1348              : static void FinalBlock (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1349              : 
    1350              : /*
    1351              :    BlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    1352              : 
    1353              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    1354              :    
    1355              :    reachend
    1356              : */
    1357              : 
    1358              : static void BlockBody (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1359              : 
    1360              : /*
    1361              :    NormalPart := StatementSequence 
    1362              : 
    1363              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    1364              :    
    1365              :    reachend
    1366              : */
    1367              : 
    1368              : static void NormalPart (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1369              : 
    1370              : /*
    1371              :    ExceptionalPart := StatementSequence 
    1372              : 
    1373              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    1374              :    
    1375              :    reachend
    1376              : */
    1377              : 
    1378              : static void ExceptionalPart (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1379              : 
    1380              : /*
    1381              :    Declaration := 'CONST' { ConstantDeclaration ';'  }  | 
    1382              :                   'TYPE' { TypeDeclaration ';'  }  | 
    1383              :                   'VAR' { VariableDeclaration ';'  }  | 
    1384              :                   ProcedureDeclaration ';'  | 
    1385              :                   ModuleDeclaration ';' 
    1386              : 
    1387              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok
    1388              :    
    1389              :    cannot reachend
    1390              : */
    1391              : 
    1392              : static void Declaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1393              : 
    1394              : /*
    1395              :    DefFormalParameters := '(' [ DefMultiFPSection  ] 
    1396              :                           ')' FormalReturn 
    1397              : 
    1398              :    first  symbols:lparatok
    1399              :    
    1400              :    cannot reachend
    1401              : */
    1402              : 
    1403              : static void DefFormalParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1404              : 
    1405              : /*
    1406              :    DefMultiFPSection := DefExtendedFP  | 
    1407              :                         FPSection [ ';' DefMultiFPSection  ] 
    1408              : 
    1409              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    1410              :    
    1411              :    cannot reachend
    1412              : */
    1413              : 
    1414              : static void DefMultiFPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1415              : 
    1416              : /*
    1417              :    FormalParameters := '(' [ MultiFPSection  ] ')' 
    1418              :                        FormalReturn 
    1419              : 
    1420              :    first  symbols:lparatok
    1421              :    
    1422              :    cannot reachend
    1423              : */
    1424              : 
    1425              : static void FormalParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1426              : 
    1427              : /*
    1428              :    MultiFPSection := ExtendedFP  | FPSection [ ';' 
    1429              :                                                MultiFPSection  ] 
    1430              : 
    1431              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    1432              :    
    1433              :    cannot reachend
    1434              : */
    1435              : 
    1436              : static void MultiFPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1437              : 
    1438              : /*
    1439              :    FPSection := NonVarFPSection  | 
    1440              :                 VarFPSection 
    1441              : 
    1442              :    first  symbols:vartok, identtok
    1443              :    
    1444              :    cannot reachend
    1445              : */
    1446              : 
    1447              : static void FPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1448              : 
    1449              : /*
    1450              :    DefExtendedFP := DefOptArg  | '...' 
    1451              : 
    1452              :    first  symbols:lsbratok, periodperiodperiodtok
    1453              :    
    1454              :    cannot reachend
    1455              : */
    1456              : 
    1457              : static void DefExtendedFP (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1458              : 
    1459              : /*
    1460              :    ExtendedFP := OptArg  | '...' 
    1461              : 
    1462              :    first  symbols:lsbratok, periodperiodperiodtok
    1463              :    
    1464              :    cannot reachend
    1465              : */
    1466              : 
    1467              : static void ExtendedFP (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1468              : 
    1469              : /*
    1470              :    VarFPSection := 'VAR' IdentList ':' FormalType [ 
    1471              :    AttributeUnused  ] 
    1472              : 
    1473              :    first  symbols:vartok
    1474              :    
    1475              :    cannot reachend
    1476              : */
    1477              : 
    1478              : static void VarFPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1479              : 
    1480              : /*
    1481              :    NonVarFPSection := IdentList ':' FormalType [ AttributeUnused  ] 
    1482              : 
    1483              :    first  symbols:identtok
    1484              :    
    1485              :    cannot reachend
    1486              : */
    1487              : 
    1488              : static void NonVarFPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1489              : 
    1490              : /*
    1491              :    OptArg := '[' Ident ':' FormalType [ '=' ConstExpression  ] 
    1492              :              ']' 
    1493              : 
    1494              :    first  symbols:lsbratok
    1495              :    
    1496              :    cannot reachend
    1497              : */
    1498              : 
    1499              : static void OptArg (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1500              : 
    1501              : /*
    1502              :    DefOptArg := '[' Ident ':' FormalType '=' ConstExpression 
    1503              :                 ']' 
    1504              : 
    1505              :    first  symbols:lsbratok
    1506              :    
    1507              :    cannot reachend
    1508              : */
    1509              : 
    1510              : static void DefOptArg (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1511              : 
    1512              : /*
    1513              :    FormalType := { 'ARRAY' 'OF'  } Qualident 
    1514              : 
    1515              :    first  symbols:identtok, arraytok
    1516              :    
    1517              :    cannot reachend
    1518              : */
    1519              : 
    1520              : static void FormalType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1521              : 
    1522              : /*
    1523              :    ModuleDeclaration := 'MODULE' 
    1524              :                         % PushAutoOn  %
    1525              :                         
    1526              :                         % M2Error.DefaultInnerModule  %
    1527              :                         Ident 
    1528              :                         % RegisterInnerModule  %
    1529              :                         
    1530              :                         % PushAutoOff  %
    1531              :                         [ Priority  ] ';' 
    1532              :                         % PushAutoOn  %
    1533              :                         { Import 
    1534              :                           % RegisterInnerImports  %
    1535              :                            } 
    1536              :                         % PopAuto  %
    1537              :                         [ Export  ] Block 
    1538              :                         % PopAuto  %
    1539              :                         Ident 
    1540              :                         % EndModule  %
    1541              :                         
    1542              :                         % PopAuto  %
    1543              :                         
    1544              : 
    1545              :    first  symbols:moduletok
    1546              :    
    1547              :    cannot reachend
    1548              : */
    1549              : 
    1550              : static void ModuleDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1551              : 
    1552              : /*
    1553              :    Priority := '[' ConstExpression ']' 
    1554              : 
    1555              :    first  symbols:lsbratok
    1556              :    
    1557              :    cannot reachend
    1558              : */
    1559              : 
    1560              : static void Priority (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1561              : 
    1562              : /*
    1563              :    Export := 'EXPORT' ( 'QUALIFIED' IdentList  | 
    1564              :                         'UNQUALIFIED' IdentList  | 
    1565              :                         IdentList  ) 
    1566              :              % EnableImportCheck := TRUE  %
    1567              :              ';' 
    1568              :              % EnableImportCheck := FALSE  %
    1569              :              
    1570              : 
    1571              :    first  symbols:exporttok
    1572              :    
    1573              :    cannot reachend
    1574              : */
    1575              : 
    1576              : static void Export (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1577              : 
    1578              : /*
    1579              :    Import := 'FROM' Ident 'IMPORT' IdentList ';'  | 
    1580              :              'IMPORT' 
    1581              :              % PushTtok (ImportTok, GetTokenNo () -1)
    1582              :                 determines whether Ident or Module   %
    1583              :              IdentList ';' 
    1584              : 
    1585              :    first  symbols:importtok, fromtok
    1586              :    
    1587              :    cannot reachend
    1588              : */
    1589              : 
    1590              : static void Import (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1591              : 
    1592              : /*
    1593              :    DefinitionModule := 
    1594              :                        % VAR forC: BOOLEAN ;  %
    1595              :                        
    1596              :                        % forC := FALSE  %
    1597              :                        'DEFINITION' 
    1598              :                        % M2Error.DefaultDefinitionModule  %
    1599              :                        'MODULE' [ 'FOR' string 
    1600              :                                   % forC := TRUE  %
    1601              :                                    ] 
    1602              :                        % PushAutoOn  %
    1603              :                        Ident 
    1604              :                        % RegisterDefinitionModule (forC)  %
    1605              :                        ';' { Import 
    1606              :                              % RegisterImports  %
    1607              :                               } 
    1608              :                        % PushAutoOff  %
    1609              :                        [ Export  ] { Definition  } 
    1610              :                        
    1611              :                        % PopAuto  %
    1612              :                        'END' Ident 
    1613              :                        % EndModule  %
    1614              :                        '.' 
    1615              :                        % PopAuto  %
    1616              :                        
    1617              : 
    1618              :    first  symbols:definitiontok
    1619              :    
    1620              :    cannot reachend
    1621              : */
    1622              : 
    1623              : static void DefinitionModule (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1624              : 
    1625              : /*
    1626              :    Definition := 'CONST' { ConstantDeclaration ';'  }  | 
    1627              :                  'TYPE' { Ident ( ';' 
    1628              :                                   % PutHiddenTypeDeclared  %
    1629              :                                    | '=' Type Alignment 
    1630              :                                   ';'  )  }  | 
    1631              :                  'VAR' { VariableDeclaration ';'  }  | 
    1632              :                  DefProcedureHeading ';' 
    1633              : 
    1634              :    first  symbols:proceduretok, vartok, typetok, consttok
    1635              :    
    1636              :    cannot reachend
    1637              : */
    1638              : 
    1639              : static void Definition (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1640              : 
    1641              : /*
    1642              :    AsmStatement := 'ASM' [ 'VOLATILE'  ] '(' AsmOperands 
    1643              :                    ')' 
    1644              : 
    1645              :    first  symbols:asmtok
    1646              :    
    1647              :    cannot reachend
    1648              : */
    1649              : 
    1650              : static void AsmStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1651              : 
    1652              : /*
    1653              :    NamedOperand := '[' Ident ']' 
    1654              : 
    1655              :    first  symbols:lsbratok
    1656              :    
    1657              :    cannot reachend
    1658              : */
    1659              : 
    1660              : static void NamedOperand (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1661              : 
    1662              : /*
    1663              :    AsmOperandName := [ NamedOperand  ] 
    1664              : 
    1665              :    first  symbols:lsbratok
    1666              :    
    1667              :    reachend
    1668              : */
    1669              : 
    1670              : static void AsmOperandName (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1671              : 
    1672              : /*
    1673              :    AsmOperands := ConstExpression [ ':' AsmList [ ':' 
    1674              :                                                   AsmList 
    1675              :                                                   [ 
    1676              :    ':' TrashList  ]  ]  ] 
    1677              : 
    1678              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    1679              :    
    1680              :    cannot reachend
    1681              : */
    1682              : 
    1683              : static void AsmOperands (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1684              : 
    1685              : /*
    1686              :    AsmList := [ AsmElement  ] { ',' AsmElement  } 
    1687              : 
    1688              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok, lsbratok, commatok
    1689              :    
    1690              :    reachend
    1691              : */
    1692              : 
    1693              : static void AsmList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1694              : 
    1695              : /*
    1696              :    AsmElement := AsmOperandName ConstExpression '(' 
    1697              :                  Expression ')' 
    1698              : 
    1699              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok, lsbratok
    1700              :    
    1701              :    cannot reachend
    1702              : */
    1703              : 
    1704              : static void AsmElement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1705              : 
    1706              : /*
    1707              :    TrashList := [ ConstExpression  ] { ',' ConstExpression  } 
    1708              : 
    1709              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok, commatok
    1710              :    
    1711              :    reachend
    1712              : */
    1713              : 
    1714              : static void TrashList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2);
    1715              : 
    1716              : 
    1717              : /*
    1718              :    BlockAssert - wrap an Assert specifically for blocks.
    1719              : */
    1720              : 
    1721      1887721 : static void BlockAssert (bool value)
    1722              : {
    1723            0 :   M2Debug_Assert (value);
    1724            0 : }
    1725              : 
    1726              : 
    1727              : /*
    1728              :    BlockAssert - wrap an Assert specifically for blocks.
    1729              : */
    1730              : 
    1731          114 : static void ErrorString (DynamicStrings_String s)
    1732              : {
    1733          114 :   M2MetaError_MetaErrorStringT0 (M2LexBuf_GetTokenNo (), s);
    1734          108 :   seenError = true;
    1735          108 : }
    1736              : 
    1737              : 
    1738              : /*
    1739              :    BlockAssert - wrap an Assert specifically for blocks.
    1740              : */
    1741              : 
    1742           42 : static void ErrorArray (const char *a_, unsigned int _a_high)
    1743              : {
    1744           42 :   char a[_a_high+1];
    1745              : 
    1746              :   /* make a local copy of each unbounded array.  */
    1747           42 :   memcpy (a, a_, _a_high+1);
    1748              : 
    1749           42 :   ErrorString (DynamicStrings_InitString ((const char *) a, _a_high));
    1750           42 : }
    1751              : 
    1752              : 
    1753              : /*
    1754              :    DescribeStop - issues a message explaining what tokens were expected
    1755              : */
    1756              : 
    1757          186 : static DynamicStrings_String DescribeStop (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    1758              : {
    1759          186 :   unsigned int n;
    1760          186 :   DynamicStrings_String str;
    1761          186 :   DynamicStrings_String message;
    1762              : 
    1763          186 :   n = 0;
    1764          186 :   message = DynamicStrings_InitString ((const char *) "", 0);
    1765          186 :   if ((((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1766              :     {
    1767            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kstring}", 10)));
    1768            0 :       n += 1;
    1769              :     }
    1770          186 :   if ((((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1771              :     {
    1772            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kreal number}", 15)));
    1773            0 :       n += 1;
    1774              :     }
    1775          186 :   if ((((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1776              :     {
    1777           42 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kidentifier}", 14)));
    1778           42 :       n += 1;
    1779              :     }
    1780          186 :   if ((((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1781              :     {
    1782            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%Kinteger number}", 18)));
    1783            0 :       n += 1;
    1784              :     }
    1785          186 :   if ((((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1786              :     {
    1787            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__INLINE__}", 14)));
    1788            0 :       n += 1;
    1789              :     }
    1790          186 :   if ((((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1791              :     {
    1792            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__BUILTIN__}", 15)));
    1793            0 :       n += 1;
    1794              :     }
    1795          186 :   if ((((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1796              :     {
    1797            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__ATTRIBUTE__}", 17)));
    1798            0 :       n += 1;
    1799              :     }
    1800          186 :   if ((((1 << (M2Reserved_filetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1801              :     {
    1802            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__FILE__}", 12)));
    1803            0 :       n += 1;
    1804              :     }
    1805          186 :   if ((((1 << (M2Reserved_linetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1806              :     {
    1807            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__LINE__}", 12)));
    1808            0 :       n += 1;
    1809              :     }
    1810          186 :   if ((((1 << (M2Reserved_datetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1811              :     {
    1812            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K__DATE__}", 12)));
    1813            0 :       n += 1;
    1814              :     }
    1815          186 :   if ((((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1816              :     {
    1817            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K...}", 7)));
    1818            0 :       n += 1;
    1819              :     }
    1820          186 :   if ((((1 << (M2Reserved_volatiletok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1821              :     {
    1822            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KVOLATILE}", 12)));
    1823            0 :       n += 1;
    1824              :     }
    1825          186 :   if ((((1 << (M2Reserved_asmtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1826              :     {
    1827            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KASM}", 7)));
    1828            0 :       n += 1;
    1829              :     }
    1830          186 :   if ((((1 << (M2Reserved_withtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1831              :     {
    1832            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KWITH}", 8)));
    1833            0 :       n += 1;
    1834              :     }
    1835          186 :   if ((((1 << (M2Reserved_whiletok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1836              :     {
    1837            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KWHILE}", 9)));
    1838            0 :       n += 1;
    1839              :     }
    1840          186 :   if ((((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1841              :     {
    1842            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KVAR}", 7)));
    1843            0 :       n += 1;
    1844              :     }
    1845          186 :   if ((((1 << (M2Reserved_untiltok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1846              :     {
    1847            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KUNTIL}", 9)));
    1848            0 :       n += 1;
    1849              :     }
    1850          186 :   if ((((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1851              :     {
    1852            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KTYPE}", 8)));
    1853            0 :       n += 1;
    1854              :     }
    1855          186 :   if ((((1 << (M2Reserved_totok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1856              :     {
    1857            6 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KTO}", 6)));
    1858            6 :       n += 1;
    1859              :     }
    1860          186 :   if ((((1 << (M2Reserved_thentok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1861              :     {
    1862            6 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KTHEN}", 8)));
    1863            6 :       n += 1;
    1864              :     }
    1865          186 :   if ((((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1866              :     {
    1867            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KSET}", 7)));
    1868            0 :       n += 1;
    1869              :     }
    1870          186 :   if ((((1 << (M2Reserved_returntok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1871              :     {
    1872            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KRETURN}", 10)));
    1873            0 :       n += 1;
    1874              :     }
    1875          186 :   if ((((1 << (M2Reserved_retrytok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1876              :     {
    1877            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KRETRY}", 9)));
    1878            0 :       n += 1;
    1879              :     }
    1880          186 :   if ((((1 << (M2Reserved_repeattok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1881              :     {
    1882            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KREPEAT}", 10)));
    1883            0 :       n += 1;
    1884              :     }
    1885          186 :   if ((((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1886              :     {
    1887            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KREM}", 7)));
    1888            0 :       n += 1;
    1889              :     }
    1890          186 :   if ((((1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1891              :     {
    1892            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KRECORD}", 10)));
    1893            0 :       n += 1;
    1894              :     }
    1895          186 :   if ((((1 << (M2Reserved_unqualifiedtok-M2Reserved_unqualifiedtok)) & (stopset2)) != 0))
    1896              :     {
    1897            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KUNQUALIFIED}", 15)));
    1898            0 :       n += 1;
    1899              :     }
    1900          186 :   if ((((1 << (M2Reserved_qualifiedtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1901              :     {
    1902            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KQUALIFIED}", 13)));
    1903            0 :       n += 1;
    1904              :     }
    1905          186 :   if ((((1 << (M2Reserved_proceduretok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1906              :     {
    1907            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KPROCEDURE}", 13)));
    1908            0 :       n += 1;
    1909              :     }
    1910          186 :   if ((((1 << (M2Reserved_pointertok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1911              :     {
    1912            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KPOINTER}", 11)));
    1913            0 :       n += 1;
    1914              :     }
    1915          186 :   if ((((1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1916              :     {
    1917            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KPACKEDSET}", 13)));
    1918            0 :       n += 1;
    1919              :     }
    1920          186 :   if ((((1 << (M2Reserved_ortok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1921              :     {
    1922            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KOR}", 6)));
    1923            0 :       n += 1;
    1924              :     }
    1925          186 :   if ((((1 << (M2Reserved_oftok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1926              :     {
    1927            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KOF}", 6)));
    1928            0 :       n += 1;
    1929              :     }
    1930          186 :   if ((((1 << (M2Reserved_nottok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1931              :     {
    1932            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KNOT}", 7)));
    1933            0 :       n += 1;
    1934              :     }
    1935          186 :   if ((((1 << (M2Reserved_moduletok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1936              :     {
    1937            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KMODULE}", 10)));
    1938            0 :       n += 1;
    1939              :     }
    1940          186 :   if ((((1 << (M2Reserved_modtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1941              :     {
    1942            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KMOD}", 7)));
    1943            0 :       n += 1;
    1944              :     }
    1945          186 :   if ((((1 << (M2Reserved_looptok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1946              :     {
    1947            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KLOOP}", 8)));
    1948            0 :       n += 1;
    1949              :     }
    1950          186 :   if ((((1 << (M2Reserved_intok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1951              :     {
    1952            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIN}", 6)));
    1953            0 :       n += 1;
    1954              :     }
    1955          186 :   if ((((1 << (M2Reserved_importtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1956              :     {
    1957            6 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIMPORT}", 10)));
    1958            6 :       n += 1;
    1959              :     }
    1960          186 :   if ((((1 << (M2Reserved_implementationtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1961              :     {
    1962            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIMPLEMENTATION}", 18)));
    1963            0 :       n += 1;
    1964              :     }
    1965          186 :   if ((((1 << (M2Reserved_iftok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1966              :     {
    1967            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KIF}", 6)));
    1968            0 :       n += 1;
    1969              :     }
    1970          186 :   if ((((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1971              :     {
    1972            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFROM}", 8)));
    1973            0 :       n += 1;
    1974              :     }
    1975          186 :   if ((((1 << (M2Reserved_forwardtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1976              :     {
    1977            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFORWARD}", 11)));
    1978            0 :       n += 1;
    1979              :     }
    1980          186 :   if ((((1 << (M2Reserved_fortok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1981              :     {
    1982            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFOR}", 7)));
    1983            0 :       n += 1;
    1984              :     }
    1985          186 :   if ((((1 << (M2Reserved_finallytok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1986              :     {
    1987            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KFINALLY}", 11)));
    1988            0 :       n += 1;
    1989              :     }
    1990          186 :   if ((((1 << (M2Reserved_exporttok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1991              :     {
    1992            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEXPORT}", 10)));
    1993            0 :       n += 1;
    1994              :     }
    1995          186 :   if ((((1 << (M2Reserved_exittok-M2Reserved_arraytok)) & (stopset1)) != 0))
    1996              :     {
    1997            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEXIT}", 8)));
    1998            0 :       n += 1;
    1999              :     }
    2000          186 :   if ((((1 << (M2Reserved_excepttok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2001              :     {
    2002            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEXCEPT}", 10)));
    2003            0 :       n += 1;
    2004              :     }
    2005          186 :   if ((((1 << (M2Reserved_endtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2006              :     {
    2007           30 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KEND}", 7)));
    2008           30 :       n += 1;
    2009              :     }
    2010          186 :   if ((((1 << (M2Reserved_elsiftok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2011              :     {
    2012            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KELSIF}", 9)));
    2013            0 :       n += 1;
    2014              :     }
    2015          186 :   if ((((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2016              :     {
    2017            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KELSE}", 8)));
    2018            0 :       n += 1;
    2019              :     }
    2020          186 :   if ((((1 << (M2Reserved_dotok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2021              :     {
    2022            6 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KDO}", 6)));
    2023            6 :       n += 1;
    2024              :     }
    2025          186 :   if ((((1 << (M2Reserved_divtok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2026              :     {
    2027            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KDIV}", 7)));
    2028            0 :       n += 1;
    2029              :     }
    2030          186 :   if ((((1 << (M2Reserved_definitiontok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2031              :     {
    2032            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KDEFINITION}", 14)));
    2033            0 :       n += 1;
    2034              :     }
    2035          186 :   if ((((1 << (M2Reserved_consttok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2036              :     {
    2037            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KCONST}", 9)));
    2038            0 :       n += 1;
    2039              :     }
    2040          186 :   if ((((1 << (M2Reserved_casetok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2041              :     {
    2042            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KCASE}", 8)));
    2043            0 :       n += 1;
    2044              :     }
    2045          186 :   if ((((1 << (M2Reserved_bytok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2046              :     {
    2047            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KBY}", 6)));
    2048            0 :       n += 1;
    2049              :     }
    2050          186 :   if ((((1 << (M2Reserved_begintok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2051              :     {
    2052            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KBEGIN}", 9)));
    2053            0 :       n += 1;
    2054              :     }
    2055          186 :   if ((((1 << (M2Reserved_arraytok-M2Reserved_arraytok)) & (stopset1)) != 0))
    2056              :     {
    2057            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KARRAY}", 9)));
    2058            0 :       n += 1;
    2059              :     }
    2060          186 :   if ((((1 << (M2Reserved_andtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2061              :     {
    2062            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%KAND}", 7)));
    2063            0 :       n += 1;
    2064              :     }
    2065          186 :   if ((((1 << (M2Reserved_colontok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2066              :     {
    2067           12 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K:}", 5)));
    2068           12 :       n += 1;
    2069              :     }
    2070          186 :   if ((((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2071              :     {
    2072            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K..}", 6)));
    2073            0 :       n += 1;
    2074              :     }
    2075          186 :   if ((((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2076              :     {
    2077            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K*>}", 6)));
    2078            0 :       n += 1;
    2079              :     }
    2080          186 :   if ((((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2081              :     {
    2082            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<*}", 6)));
    2083            0 :       n += 1;
    2084              :     }
    2085          186 :   if ((((1 << (M2Reserved_greaterequaltok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2086              :     {
    2087            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K>=}", 6)));
    2088            0 :       n += 1;
    2089              :     }
    2090          186 :   if ((((1 << (M2Reserved_lessequaltok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2091              :     {
    2092            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<=}", 6)));
    2093            0 :       n += 1;
    2094              :     }
    2095          186 :   if ((((1 << (M2Reserved_lessgreatertok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2096              :     {
    2097            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<>}", 6)));
    2098            0 :       n += 1;
    2099              :     }
    2100          186 :   if ((((1 << (M2Reserved_hashtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2101              :     {
    2102            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K#}", 5)));
    2103            0 :       n += 1;
    2104              :     }
    2105          186 :   if ((((1 << (M2Reserved_equaltok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2106              :     {
    2107           12 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K=}", 5)));
    2108           12 :       n += 1;
    2109              :     }
    2110          186 :   if ((((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2111              :     {
    2112            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K^}", 5)));
    2113            0 :       n += 1;
    2114              :     }
    2115          186 :   if ((((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2116              :     {
    2117           36 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K;}", 5)));
    2118           36 :       n += 1;
    2119              :     }
    2120          186 :   if ((((1 << (M2Reserved_commatok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2121              :     {
    2122            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K,}", 5)));
    2123            0 :       n += 1;
    2124              :     }
    2125          186 :   if ((((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2126              :     {
    2127           24 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K.}", 5)));
    2128           24 :       n += 1;
    2129              :     }
    2130          186 :   if ((((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2131              :     {
    2132            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K&}", 5)));
    2133            0 :       n += 1;
    2134              :     }
    2135          186 :   if ((((1 << (M2Reserved_dividetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2136              :     {
    2137            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K/}", 5)));
    2138            0 :       n += 1;
    2139              :     }
    2140          186 :   if ((((1 << (M2Reserved_timestok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2141              :     {
    2142            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K*}", 5)));
    2143            0 :       n += 1;
    2144              :     }
    2145          186 :   if ((((1 << (M2Reserved_minustok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2146              :     {
    2147            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K-}", 5)));
    2148            0 :       n += 1;
    2149              :     }
    2150          186 :   if ((((1 << (M2Reserved_plustok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2151              :     {
    2152            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K+}", 5)));
    2153            0 :       n += 1;
    2154              :     }
    2155          186 :   if ((((1 << (M2Reserved_doublequotestok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2156              :     {
    2157            0 :       message = DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (message, ' '), '`'), '"'), '\''), ',');
    2158            0 :       n += 1;
    2159              :     }
    2160          186 :   if ((((1 << (M2Reserved_singlequotetok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2161              :     {
    2162            0 :       message = DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (message, ' '), '"'), '\''), '"'), ',');
    2163            0 :       n += 1;
    2164              :     }
    2165          186 :   if ((((1 << (M2Reserved_greatertok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2166              :     {
    2167            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K>}", 5)));
    2168            0 :       n += 1;
    2169              :     }
    2170          186 :   if ((((1 << (M2Reserved_lesstok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2171              :     {
    2172            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K<}", 5)));
    2173            0 :       n += 1;
    2174              :     }
    2175          186 :   if ((((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2176              :     {
    2177            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K)}", 5)));
    2178            0 :       n += 1;
    2179              :     }
    2180          186 :   if ((((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2181              :     {
    2182            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K(}", 5)));
    2183            0 :       n += 1;
    2184              :     }
    2185          186 :   if ((((1 << (M2Reserved_rcbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2186              :     {
    2187            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K%}}", 6)));
    2188            0 :       n += 1;
    2189              :     }
    2190          186 :   if ((((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2191              :     {
    2192            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K%{}", 6)));
    2193            0 :       n += 1;
    2194              :     }
    2195          186 :   if ((((1 << (M2Reserved_rsbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2196              :     {
    2197            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K]}", 5)));
    2198            0 :       n += 1;
    2199              :     }
    2200          186 :   if ((((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2201              :     {
    2202            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K[}", 5)));
    2203            0 :       n += 1;
    2204              :     }
    2205          186 :   if ((((1 << (M2Reserved_bartok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2206              :     {
    2207            0 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K|}", 5)));
    2208            0 :       n += 1;
    2209              :     }
    2210          186 :   if ((((1 << (M2Reserved_becomestok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2211              :     {
    2212            6 :       message = DynamicStrings_ConCat (DynamicStrings_ConCatChar (message, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((const char *) "{%K:=}", 6)));
    2213            6 :       n += 1;
    2214              :     }
    2215          186 :   if ((((1 << (M2Reserved_eoftok-M2Reserved_eoftok)) & (stopset0)) != 0))
    2216              :     {}  /* empty.  */
    2217              :   /* eoftok has no token name (needed to generate error messages)  */
    2218          186 :   if (n == 0)
    2219              :     {
    2220            0 :       str = DynamicStrings_InitString ((const char *) " syntax error", 13);
    2221            0 :       message = DynamicStrings_KillString (message);
    2222              :     }
    2223          186 :   else if (n == 1)
    2224              :     {
    2225              :       /* avoid dangling else.  */
    2226          186 :       str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((const char *) " missing ", 9)));
    2227              :     }
    2228              :   else
    2229              :     {
    2230              :       /* avoid dangling else.  */
    2231            0 :       str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) " expecting one of", 17), message);
    2232            0 :       message = DynamicStrings_KillString (message);
    2233              :     }
    2234          186 :   return str;
    2235              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    2236              :   __builtin_unreachable ();
    2237              : }
    2238              : 
    2239              : 
    2240              : /*
    2241              :    DescribeError - issues a message explaining what tokens were expected
    2242              : */
    2243              : 
    2244           72 : static void DescribeError (void)
    2245              : {
    2246           72 :   DynamicStrings_String str;
    2247              : 
    2248           72 :   str = DynamicStrings_InitString ((const char *) "", 0);
    2249           72 :   switch (M2LexBuf_currenttoken)
    2250              :     {
    2251           12 :       case M2Reserved_stringtok:
    2252           12 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kstring}", 30), DynamicStrings_Mark (str));
    2253           12 :         break;
    2254              : 
    2255            0 :       case M2Reserved_realtok:
    2256            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kreal number}", 35), DynamicStrings_Mark (str));
    2257            0 :         break;
    2258              : 
    2259            0 :       case M2Reserved_identtok:
    2260            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kidentifier}", 34), DynamicStrings_Mark (str));
    2261            0 :         break;
    2262              : 
    2263            0 :       case M2Reserved_integertok:
    2264            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%Kinteger number}", 38), DynamicStrings_Mark (str));
    2265            0 :         break;
    2266              : 
    2267            0 :       case M2Reserved_inlinetok:
    2268            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__INLINE__}", 34), DynamicStrings_Mark (str));
    2269            0 :         break;
    2270              : 
    2271            0 :       case M2Reserved_builtintok:
    2272            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__BUILTIN__}", 35), DynamicStrings_Mark (str));
    2273            0 :         break;
    2274              : 
    2275            0 :       case M2Reserved_attributetok:
    2276            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__ATTRIBUTE__}", 37), DynamicStrings_Mark (str));
    2277            0 :         break;
    2278              : 
    2279            0 :       case M2Reserved_filetok:
    2280            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__FILE__}", 32), DynamicStrings_Mark (str));
    2281            0 :         break;
    2282              : 
    2283            0 :       case M2Reserved_linetok:
    2284            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__LINE__}", 32), DynamicStrings_Mark (str));
    2285            0 :         break;
    2286              : 
    2287            0 :       case M2Reserved_datetok:
    2288            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K__DATE__}", 32), DynamicStrings_Mark (str));
    2289            0 :         break;
    2290              : 
    2291            0 :       case M2Reserved_periodperiodperiodtok:
    2292            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K...}", 27), DynamicStrings_Mark (str));
    2293            0 :         break;
    2294              : 
    2295            0 :       case M2Reserved_volatiletok:
    2296            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KVOLATILE}", 32), DynamicStrings_Mark (str));
    2297            0 :         break;
    2298              : 
    2299            0 :       case M2Reserved_asmtok:
    2300            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KASM}", 27), DynamicStrings_Mark (str));
    2301            0 :         break;
    2302              : 
    2303            0 :       case M2Reserved_withtok:
    2304            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KWITH}", 28), DynamicStrings_Mark (str));
    2305            0 :         break;
    2306              : 
    2307            0 :       case M2Reserved_whiletok:
    2308            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KWHILE}", 29), DynamicStrings_Mark (str));
    2309            0 :         break;
    2310              : 
    2311            0 :       case M2Reserved_vartok:
    2312            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KVAR}", 27), DynamicStrings_Mark (str));
    2313            0 :         break;
    2314              : 
    2315            0 :       case M2Reserved_untiltok:
    2316            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KUNTIL}", 29), DynamicStrings_Mark (str));
    2317            0 :         break;
    2318              : 
    2319            0 :       case M2Reserved_typetok:
    2320            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KTYPE}", 28), DynamicStrings_Mark (str));
    2321            0 :         break;
    2322              : 
    2323            0 :       case M2Reserved_totok:
    2324            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KTO}", 26), DynamicStrings_Mark (str));
    2325            0 :         break;
    2326              : 
    2327            6 :       case M2Reserved_thentok:
    2328            6 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KTHEN}", 28), DynamicStrings_Mark (str));
    2329            6 :         break;
    2330              : 
    2331            0 :       case M2Reserved_settok:
    2332            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KSET}", 27), DynamicStrings_Mark (str));
    2333            0 :         break;
    2334              : 
    2335            0 :       case M2Reserved_returntok:
    2336            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KRETURN}", 30), DynamicStrings_Mark (str));
    2337            0 :         break;
    2338              : 
    2339            0 :       case M2Reserved_retrytok:
    2340            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KRETRY}", 29), DynamicStrings_Mark (str));
    2341            0 :         break;
    2342              : 
    2343            0 :       case M2Reserved_repeattok:
    2344            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KREPEAT}", 30), DynamicStrings_Mark (str));
    2345            0 :         break;
    2346              : 
    2347            0 :       case M2Reserved_remtok:
    2348            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KREM}", 27), DynamicStrings_Mark (str));
    2349            0 :         break;
    2350              : 
    2351            0 :       case M2Reserved_recordtok:
    2352            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KRECORD}", 30), DynamicStrings_Mark (str));
    2353            0 :         break;
    2354              : 
    2355            0 :       case M2Reserved_unqualifiedtok:
    2356            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KUNQUALIFIED}", 35), DynamicStrings_Mark (str));
    2357            0 :         break;
    2358              : 
    2359            0 :       case M2Reserved_qualifiedtok:
    2360            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KQUALIFIED}", 33), DynamicStrings_Mark (str));
    2361            0 :         break;
    2362              : 
    2363            0 :       case M2Reserved_proceduretok:
    2364            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KPROCEDURE}", 33), DynamicStrings_Mark (str));
    2365            0 :         break;
    2366              : 
    2367            0 :       case M2Reserved_pointertok:
    2368            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KPOINTER}", 31), DynamicStrings_Mark (str));
    2369            0 :         break;
    2370              : 
    2371            0 :       case M2Reserved_packedsettok:
    2372            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KPACKEDSET}", 33), DynamicStrings_Mark (str));
    2373            0 :         break;
    2374              : 
    2375            0 :       case M2Reserved_ortok:
    2376            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KOR}", 26), DynamicStrings_Mark (str));
    2377            0 :         break;
    2378              : 
    2379            6 :       case M2Reserved_oftok:
    2380            6 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KOF}", 26), DynamicStrings_Mark (str));
    2381            6 :         break;
    2382              : 
    2383            0 :       case M2Reserved_nottok:
    2384            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KNOT}", 27), DynamicStrings_Mark (str));
    2385            0 :         break;
    2386              : 
    2387            0 :       case M2Reserved_moduletok:
    2388            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KMODULE}", 30), DynamicStrings_Mark (str));
    2389            0 :         break;
    2390              : 
    2391            0 :       case M2Reserved_modtok:
    2392            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KMOD}", 27), DynamicStrings_Mark (str));
    2393            0 :         break;
    2394              : 
    2395            0 :       case M2Reserved_looptok:
    2396            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KLOOP}", 28), DynamicStrings_Mark (str));
    2397            0 :         break;
    2398              : 
    2399            0 :       case M2Reserved_intok:
    2400            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIN}", 26), DynamicStrings_Mark (str));
    2401            0 :         break;
    2402              : 
    2403            0 :       case M2Reserved_importtok:
    2404            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIMPORT}", 30), DynamicStrings_Mark (str));
    2405            0 :         break;
    2406              : 
    2407            0 :       case M2Reserved_implementationtok:
    2408            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIMPLEMENTATION}", 38), DynamicStrings_Mark (str));
    2409            0 :         break;
    2410              : 
    2411            0 :       case M2Reserved_iftok:
    2412            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KIF}", 26), DynamicStrings_Mark (str));
    2413            0 :         break;
    2414              : 
    2415            0 :       case M2Reserved_fromtok:
    2416            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFROM}", 28), DynamicStrings_Mark (str));
    2417            0 :         break;
    2418              : 
    2419            0 :       case M2Reserved_forwardtok:
    2420            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFORWARD}", 31), DynamicStrings_Mark (str));
    2421            0 :         break;
    2422              : 
    2423            0 :       case M2Reserved_fortok:
    2424            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFOR}", 27), DynamicStrings_Mark (str));
    2425            0 :         break;
    2426              : 
    2427            0 :       case M2Reserved_finallytok:
    2428            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KFINALLY}", 31), DynamicStrings_Mark (str));
    2429            0 :         break;
    2430              : 
    2431            6 :       case M2Reserved_exporttok:
    2432            6 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEXPORT}", 30), DynamicStrings_Mark (str));
    2433            6 :         break;
    2434              : 
    2435            0 :       case M2Reserved_exittok:
    2436            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEXIT}", 28), DynamicStrings_Mark (str));
    2437            0 :         break;
    2438              : 
    2439            6 :       case M2Reserved_excepttok:
    2440            6 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEXCEPT}", 30), DynamicStrings_Mark (str));
    2441            6 :         break;
    2442              : 
    2443            0 :       case M2Reserved_endtok:
    2444            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KEND}", 27), DynamicStrings_Mark (str));
    2445            0 :         break;
    2446              : 
    2447            0 :       case M2Reserved_elsiftok:
    2448            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KELSIF}", 29), DynamicStrings_Mark (str));
    2449            0 :         break;
    2450              : 
    2451            0 :       case M2Reserved_elsetok:
    2452            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KELSE}", 28), DynamicStrings_Mark (str));
    2453            0 :         break;
    2454              : 
    2455            6 :       case M2Reserved_dotok:
    2456            6 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KDO}", 26), DynamicStrings_Mark (str));
    2457            6 :         break;
    2458              : 
    2459            0 :       case M2Reserved_divtok:
    2460            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KDIV}", 27), DynamicStrings_Mark (str));
    2461            0 :         break;
    2462              : 
    2463            0 :       case M2Reserved_definitiontok:
    2464            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KDEFINITION}", 34), DynamicStrings_Mark (str));
    2465            0 :         break;
    2466              : 
    2467            0 :       case M2Reserved_consttok:
    2468            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KCONST}", 29), DynamicStrings_Mark (str));
    2469            0 :         break;
    2470              : 
    2471            0 :       case M2Reserved_casetok:
    2472            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KCASE}", 28), DynamicStrings_Mark (str));
    2473            0 :         break;
    2474              : 
    2475            0 :       case M2Reserved_bytok:
    2476            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KBY}", 26), DynamicStrings_Mark (str));
    2477            0 :         break;
    2478              : 
    2479            0 :       case M2Reserved_begintok:
    2480            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KBEGIN}", 29), DynamicStrings_Mark (str));
    2481            0 :         break;
    2482              : 
    2483            0 :       case M2Reserved_arraytok:
    2484            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KARRAY}", 29), DynamicStrings_Mark (str));
    2485            0 :         break;
    2486              : 
    2487            0 :       case M2Reserved_andtok:
    2488            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%KAND}", 27), DynamicStrings_Mark (str));
    2489            0 :         break;
    2490              : 
    2491            6 :       case M2Reserved_colontok:
    2492            6 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K:}", 25), DynamicStrings_Mark (str));
    2493            6 :         break;
    2494              : 
    2495            0 :       case M2Reserved_periodperiodtok:
    2496            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K..}", 26), DynamicStrings_Mark (str));
    2497            0 :         break;
    2498              : 
    2499            0 :       case M2Reserved_rdirectivetok:
    2500            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K*>}", 26), DynamicStrings_Mark (str));
    2501            0 :         break;
    2502              : 
    2503            0 :       case M2Reserved_ldirectivetok:
    2504            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<*}", 26), DynamicStrings_Mark (str));
    2505            0 :         break;
    2506              : 
    2507            0 :       case M2Reserved_greaterequaltok:
    2508            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K>=}", 26), DynamicStrings_Mark (str));
    2509            0 :         break;
    2510              : 
    2511            0 :       case M2Reserved_lessequaltok:
    2512            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<=}", 26), DynamicStrings_Mark (str));
    2513            0 :         break;
    2514              : 
    2515            0 :       case M2Reserved_lessgreatertok:
    2516            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<>}", 26), DynamicStrings_Mark (str));
    2517            0 :         break;
    2518              : 
    2519            0 :       case M2Reserved_hashtok:
    2520            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K#}", 25), DynamicStrings_Mark (str));
    2521            0 :         break;
    2522              : 
    2523           12 :       case M2Reserved_equaltok:
    2524           12 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K=}", 25), DynamicStrings_Mark (str));
    2525           12 :         break;
    2526              : 
    2527            0 :       case M2Reserved_uparrowtok:
    2528            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K^}", 25), DynamicStrings_Mark (str));
    2529            0 :         break;
    2530              : 
    2531            6 :       case M2Reserved_semicolontok:
    2532            6 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K;}", 25), DynamicStrings_Mark (str));
    2533            6 :         break;
    2534              : 
    2535            0 :       case M2Reserved_commatok:
    2536            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K,}", 25), DynamicStrings_Mark (str));
    2537            0 :         break;
    2538              : 
    2539            0 :       case M2Reserved_periodtok:
    2540            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K.}", 25), DynamicStrings_Mark (str));
    2541            0 :         break;
    2542              : 
    2543            0 :       case M2Reserved_ambersandtok:
    2544            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K&}", 25), DynamicStrings_Mark (str));
    2545            0 :         break;
    2546              : 
    2547            0 :       case M2Reserved_dividetok:
    2548            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K/}", 25), DynamicStrings_Mark (str));
    2549            0 :         break;
    2550              : 
    2551            6 :       case M2Reserved_timestok:
    2552            6 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K*}", 25), DynamicStrings_Mark (str));
    2553            6 :         break;
    2554              : 
    2555            0 :       case M2Reserved_minustok:
    2556            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K-}", 25), DynamicStrings_Mark (str));
    2557            0 :         break;
    2558              : 
    2559            0 :       case M2Reserved_plustok:
    2560            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K+}", 25), DynamicStrings_Mark (str));
    2561            0 :         break;
    2562              : 
    2563            0 :       case M2Reserved_doublequotestok:
    2564            0 :         str = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_InitString ((const char *) "syntax error, found '", 21), '"'), '\''), DynamicStrings_Mark (str));
    2565            0 :         break;
    2566              : 
    2567            0 :       case M2Reserved_singlequotetok:
    2568            0 :         str = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_ConCatChar (DynamicStrings_InitString ((const char *) "syntax error, found \"", 21), '\''), '"'), DynamicStrings_Mark (str));
    2569            0 :         break;
    2570              : 
    2571            0 :       case M2Reserved_greatertok:
    2572            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K>}", 25), DynamicStrings_Mark (str));
    2573            0 :         break;
    2574              : 
    2575            0 :       case M2Reserved_lesstok:
    2576            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K<}", 25), DynamicStrings_Mark (str));
    2577            0 :         break;
    2578              : 
    2579            0 :       case M2Reserved_rparatok:
    2580            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K)}", 25), DynamicStrings_Mark (str));
    2581            0 :         break;
    2582              : 
    2583            0 :       case M2Reserved_lparatok:
    2584            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K(}", 25), DynamicStrings_Mark (str));
    2585            0 :         break;
    2586              : 
    2587            0 :       case M2Reserved_rcbratok:
    2588            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K%}}", 26), DynamicStrings_Mark (str));
    2589            0 :         break;
    2590              : 
    2591            0 :       case M2Reserved_lcbratok:
    2592            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K%{}", 26), DynamicStrings_Mark (str));
    2593            0 :         break;
    2594              : 
    2595            0 :       case M2Reserved_rsbratok:
    2596            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K]}", 25), DynamicStrings_Mark (str));
    2597            0 :         break;
    2598              : 
    2599            0 :       case M2Reserved_lsbratok:
    2600            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K[}", 25), DynamicStrings_Mark (str));
    2601            0 :         break;
    2602              : 
    2603            0 :       case M2Reserved_bartok:
    2604            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K|}", 25), DynamicStrings_Mark (str));
    2605            0 :         break;
    2606              : 
    2607            0 :       case M2Reserved_becomestok:
    2608            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K:=}", 26), DynamicStrings_Mark (str));
    2609            0 :         break;
    2610              : 
    2611            0 :       case M2Reserved_eoftok:
    2612            0 :         str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error, found {%K}", 24), DynamicStrings_Mark (str));
    2613            0 :         break;
    2614              : 
    2615              : 
    2616              :       default:
    2617              :         break;
    2618              :     }
    2619           72 :   ErrorString (str);
    2620           72 : }
    2621              : 
    2622              : 
    2623              : /*
    2624              :    SyntaxError - after a syntax error we skip all tokens up until we reach
    2625              :                  a stop symbol.
    2626              : */
    2627              : 
    2628           72 : static void SyntaxError (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2629              : {
    2630           72 :   DescribeError ();
    2631           72 :   if (Debugging)
    2632              :     {
    2633              :       M2Printf_printf0 ((const char *) "\\nskipping token *** ", 21);
    2634              :     }
    2635              :   /* --fixme-- this assumes a 32 bit word size.  */
    2636          258 :   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)))))
    2637              :     {
    2638          114 :       M2LexBuf_GetToken ();
    2639              :     }
    2640           72 :   if (Debugging)
    2641              :     {
    2642              :       M2Printf_printf0 ((const char *) " ***\\n", 6);
    2643              :     }
    2644           72 : }
    2645              : 
    2646              : 
    2647              : /*
    2648              :    SyntaxCheck -
    2649              : */
    2650              : 
    2651    191924386 : static void SyntaxCheck (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2652              : {
    2653              :   /* --fixme-- this assumes a 32 bit word size.  */
    2654    191924386 :   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)))))
    2655              :     {
    2656           72 :       SyntaxError (stopset0, stopset1, stopset2);
    2657              :     }
    2658    191924386 : }
    2659              : 
    2660              : 
    2661              : /*
    2662              :    GetMissingTokenMessage - generates and returns a string about a missing token, t.
    2663              : */
    2664              : 
    2665          186 : static DynamicStrings_String GetMissingTokenMessage (M2Reserved_toktype t)
    2666              : {
    2667          186 :   P0SyntaxCheck_SetOfStop0 s0;
    2668          186 :   P0SyntaxCheck_SetOfStop1 s1;
    2669          186 :   P0SyntaxCheck_SetOfStop2 s2;
    2670          186 :   DynamicStrings_String str;
    2671              : 
    2672          186 :   s0 = (P0SyntaxCheck_SetOfStop0) 0;
    2673          186 :   s1 = (P0SyntaxCheck_SetOfStop1) 0;
    2674          186 :   s2 = (P0SyntaxCheck_SetOfStop2) 0;
    2675          186 :   if ( ((unsigned int) (t)) < 32)
    2676              :     {
    2677           90 :       s0 = (P0SyntaxCheck_SetOfStop0) ((1 << (t-M2Reserved_eoftok)));
    2678              :     }
    2679           96 :   else if ( ((unsigned int) (t)) < 64)
    2680              :     {
    2681              :       /* avoid dangling else.  */
    2682           42 :       s1 = (P0SyntaxCheck_SetOfStop1) ((1 << (t-M2Reserved_arraytok)));
    2683              :     }
    2684              :   else
    2685              :     {
    2686              :       /* avoid dangling else.  */
    2687           54 :       s2 = (P0SyntaxCheck_SetOfStop2) ((1 << (t-M2Reserved_unqualifiedtok)));
    2688              :     }
    2689          186 :   str = DescribeStop (s0, s1, s2);
    2690          186 :   return str;
    2691              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    2692              :   __builtin_unreachable ();
    2693              : }
    2694              : 
    2695              : 
    2696              : /*
    2697              :    ErrorMissingToken - generates an error message about a missing token, t.
    2698              : */
    2699              : 
    2700           42 : static void ErrorMissingToken (M2Reserved_toktype t)
    2701              : {
    2702           42 :   DynamicStrings_String str;
    2703              : 
    2704           42 :   str = GetMissingTokenMessage (t);
    2705           42 :   str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "syntax error,", 13), DynamicStrings_Mark (str));
    2706           42 :   M2MetaError_MetaErrorStringT0 (M2LexBuf_GetTokenNo (), str);
    2707           42 : }
    2708              : 
    2709              : 
    2710              : /*
    2711              :    WarnMissingToken - generates a warning message about a missing token, t.
    2712              : */
    2713              : 
    2714          144 : static void WarnMissingToken (M2Reserved_toktype t)
    2715              : {
    2716          144 :   DynamicStrings_String str;
    2717              : 
    2718          144 :   str = GetMissingTokenMessage (t);
    2719          144 :   str = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "{%W}syntax warning,", 19), DynamicStrings_Mark (str));
    2720          144 :   M2MetaError_MetaErrorStringT0 (M2LexBuf_GetTokenNo (), str);
    2721          144 :   if (DebugRecover)
    2722              :     {
    2723              :       M2Printf_printf0 ((const char *) "warning note created\\n", 22);
    2724              :     }
    2725          144 : }
    2726              : 
    2727              : 
    2728              : /*
    2729              :    MissingToken - generates a warning message about a missing token, t.
    2730              : */
    2731              : 
    2732          162 : static void MissingToken (M2Reserved_toktype t)
    2733              : {
    2734          162 :   if ((InsertCount < MaxInsert) && ((((t != M2Reserved_identtok) && (t != M2Reserved_integertok)) && (t != M2Reserved_realtok)) && (t != M2Reserved_stringtok)))
    2735              :     {
    2736          120 :       if (DebugRecover)
    2737              :         {
    2738              :           M2Printf_printf0 ((const char *) "missing token detected and going to be inserted: ", 49);
    2739              :           M2LexBuf_DisplayToken (t);
    2740              :         }
    2741          120 :       WarnMissingToken (t);
    2742          120 :       InsertCount += 1;
    2743          120 :       if (DebugRecover)
    2744              :         {
    2745              :           M2Printf_printf0 ((const char *) "inserting token\\n", 17);
    2746              :         }
    2747          120 :       M2LexBuf_InsertToken (t);
    2748              :     }
    2749              :   else
    2750              :     {
    2751           42 :       if (DebugRecover)
    2752              :         {
    2753              :           M2Printf_printf0 ((const char *) "missing token detected but cannot be inserted: ", 47);
    2754              :           M2LexBuf_DisplayToken (t);
    2755              :         }
    2756           42 :       ErrorMissingToken (t);
    2757              :     }
    2758          162 : }
    2759              : 
    2760              : 
    2761              : /*
    2762              :    CheckInsertCandidate -
    2763              : */
    2764              : 
    2765          168 : static bool CheckInsertCandidate (M2Reserved_toktype t, P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2766              : {
    2767          168 :   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))))
    2768              :     {
    2769           24 :       InsertCount += 1;
    2770           24 :       if (InsertCount < MaxInsert)
    2771              :         {
    2772           24 :           WarnMissingToken (t);
    2773           24 :           if (DebugRecover)
    2774              :             {
    2775              :               M2Printf_printf0 ((const char *) "buffer before\\n", 15);
    2776              :               M2LexBuf_DumpTokens ();
    2777              :             }
    2778           24 :           M2LexBuf_InsertTokenAndRewind (t);
    2779           24 :           if (DebugRecover)
    2780              :             {
    2781              :               M2Printf_printf0 ((const char *) "inserting token: buffer after insertion\\n", 41);
    2782              :               M2LexBuf_DumpTokens ();
    2783              :             }
    2784           24 :           return true;
    2785              :         }
    2786              :     }
    2787              :   return false;
    2788              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    2789              :   __builtin_unreachable ();
    2790              : }
    2791              : 
    2792              : 
    2793              : /*
    2794              :    InStopSet
    2795              : */
    2796              : 
    2797           96 : static bool InStopSet (M2Reserved_toktype t, P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2798              : {
    2799           96 :   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))))
    2800              :     {
    2801              :       return true;
    2802              :     }
    2803              :   else
    2804              :     {
    2805            0 :       return false;
    2806              :     }
    2807              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    2808              :   __builtin_unreachable ();
    2809              : }
    2810              : 
    2811              : 
    2812              : /*
    2813              :    PeepToken - peep token checks to see whether the stopset is satisfied by currenttoken
    2814              :                If it is not then it will insert a token providing the token
    2815              :                is one of ; ] ) } . OF END ,
    2816              : 
    2817              :                if the stopset contains <identtok> then we do not insert a token
    2818              : */
    2819              : 
    2820    191924224 : static void PeepToken (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2821              : {
    2822              :   /* and again (see above re: ORD)
    2823              :   */
    2824    191924224 :   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))))
    2825              :     {
    2826              :       /* SyntaxCheck will fail since currentoken is not part of the stopset
    2827              :          we check to see whether one of the following is in the stopset and
    2828              :          if not emit a warning and also the token.  */
    2829           30 :       if ((((((((CheckInsertCandidate (M2Reserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckInsertCandidate (M2Reserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckInsertCandidate (M2Reserved_rparatok, stopset0, stopset1, stopset2))) || (CheckInsertCandidate (M2Reserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckInsertCandidate (M2Reserved_periodtok, stopset0, stopset1, stopset2))) || (CheckInsertCandidate (M2Reserved_oftok, stopset0, stopset1, stopset2))) || (CheckInsertCandidate (M2Reserved_endtok, stopset0, stopset1, stopset2))) || (CheckInsertCandidate (M2Reserved_commatok, stopset0, stopset1, stopset2)))
    2830              :         {}  /* empty.  */
    2831              :     }
    2832    191924224 : }
    2833              : 
    2834              : 
    2835              : /*
    2836              :    DetectImport - checks whether the next token is an import or from and if so
    2837              :                   generates an error message.  This is called after an export
    2838              :                   statement to notify the user that the ordering is incorrect.
    2839              : */
    2840              : 
    2841        86020 : static void DetectImport (void)
    2842              : {
    2843        86020 :   if ((M2LexBuf_currenttoken == M2Reserved_importtok) || (M2LexBuf_currenttoken == M2Reserved_fromtok))
    2844              :     {
    2845            6 :       ErrorArray ((const char *) "an {%AkIMPORT} statement must preceed an {%kEXPORT} statement", 61);
    2846              :     }
    2847        86014 : }
    2848              : 
    2849              : 
    2850              : /*
    2851              :    Expect -
    2852              : */
    2853              : 
    2854    191924392 : static void Expect (M2Reserved_toktype t, P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2855              : {
    2856    191924392 :   if (M2LexBuf_currenttoken == t)
    2857              :     {
    2858              :       /* avoid dangling else.  */
    2859    191924230 :       M2LexBuf_GetToken ();
    2860    191924230 :       if (EnableImportCheck)
    2861              :         {
    2862        86020 :           DetectImport ();
    2863              :         }
    2864    191924224 :       if (Pass0)
    2865              :         {
    2866    191924224 :           PeepToken (stopset0, stopset1, stopset2);
    2867              :         }
    2868              :     }
    2869              :   else
    2870              :     {
    2871          162 :       MissingToken (t);
    2872              :     }
    2873    191924386 :   SyntaxCheck (stopset0, stopset1, stopset2);
    2874    191924386 : }
    2875              : 
    2876              : 
    2877              : /*
    2878              :    Ident - error checking varient of Ident
    2879              : */
    2880              : 
    2881     70411741 : static void Ident (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2882              : {
    2883     70411741 :   LastIdent = NameKey_makekey (M2LexBuf_currentstring);
    2884     70411741 :   if (M2Quads_IsAutoPushOn ())
    2885              :     {
    2886      5533146 :       M2Quads_PushTFtok (LastIdent, static_cast<unsigned int> (M2Reserved_identtok), M2LexBuf_GetTokenNo ());
    2887              :     }
    2888     70411741 :   Expect (M2Reserved_identtok, stopset0, stopset1, stopset2);
    2889     70411741 : }
    2890              : 
    2891              : 
    2892              : /*
    2893              :    string -
    2894              : */
    2895              : 
    2896      1699476 : static void string (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2897              : {
    2898      1699476 :   if (M2Quads_IsAutoPushOn ())
    2899              :     {
    2900            0 :       M2Quads_PushTF (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_stringtok));
    2901            0 :       P2SymBuild_BuildString ();
    2902              :     }
    2903      1699476 :   Expect (M2Reserved_stringtok, stopset0, stopset1, stopset2);
    2904      1699476 : }
    2905              : 
    2906              : 
    2907              : /*
    2908              :    Integer -
    2909              : */
    2910              : 
    2911      2737596 : static void Integer (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2912              : {
    2913      2737596 :   if (M2Quads_IsAutoPushOn ())
    2914              :     {
    2915            0 :       M2Quads_PushTFtok (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_integertok), M2LexBuf_GetTokenNo ());
    2916            0 :       P2SymBuild_BuildNumber ();
    2917              :     }
    2918      2737596 :   Expect (M2Reserved_integertok, stopset0, stopset1, stopset2);
    2919      2737596 : }
    2920              : 
    2921              : 
    2922              : /*
    2923              :    Real -
    2924              : */
    2925              : 
    2926        28988 : static void Real (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2927              : {
    2928        28988 :   if (M2Quads_IsAutoPushOn ())
    2929              :     {
    2930            0 :       M2Quads_PushTFtok (NameKey_makekey (M2LexBuf_currentstring), static_cast<unsigned int> (M2Reserved_realtok), M2LexBuf_GetTokenNo ());
    2931            0 :       P2SymBuild_BuildNumber ();
    2932              :     }
    2933        28988 :   Expect (M2Reserved_realtok, stopset0, stopset1, stopset2);
    2934        28988 : }
    2935              : 
    2936              : 
    2937              : /*
    2938              :    FileUnit := 
    2939              :                % PushAutoOff  %
    2940              :                ( DefinitionModule  | 
    2941              :                  ImplementationOrProgramModule  ) 
    2942              :                % PopAuto  %
    2943              :                
    2944              : 
    2945              :    first  symbols:implementationtok, moduletok, definitiontok
    2946              :    
    2947              :    cannot reachend
    2948              : */
    2949              : 
    2950       244909 : static void FileUnit (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    2951              : {
    2952       244909 :   M2Quads_PushAutoOff ();
    2953       244909 :   if (M2LexBuf_currenttoken == M2Reserved_definitiontok)
    2954              :     {
    2955       162090 :       DefinitionModule (stopset0, stopset1, stopset2);
    2956              :     }
    2957        82819 :   else if (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_implementationtok-M2Reserved_arraytok)) | (1 << (M2Reserved_moduletok-M2Reserved_arraytok))))) != 0)))
    2958              :     {
    2959              :       /* avoid dangling else.  */
    2960        82819 :       ImplementationOrProgramModule (stopset0, stopset1, stopset2);
    2961              :     }
    2962              :   else
    2963              :     {
    2964              :       /* avoid dangling else.  */
    2965            0 :       ErrorArray ((const char *) "expecting one of: {%KIMPLEMENTATION} {%KMODULE} {%KDEFINITION}", 62);
    2966              :     }
    2967       244897 :   M2Quads_PopAuto ();
    2968       244897 : }
    2969              : 
    2970              : 
    2971              : /*
    2972              :    ProgramModule := 'MODULE' 
    2973              :                     % PushAutoOn ;  %
    2974              :                     
    2975              :                     % M2Error.DefaultProgramModule  %
    2976              :                     Ident 
    2977              :                     % RegisterProgramModule ;  %
    2978              :                     
    2979              :                     % PushAutoOff ;  %
    2980              :                     [ Priority  ] ';' 
    2981              :                     % PushAutoOn ;  %
    2982              :                     { Import 
    2983              :                       % RegisterImports  %
    2984              :                        } 
    2985              :                     % PopAuto  %
    2986              :                     Block 
    2987              :                     % PopAuto  %
    2988              :                     Ident '.' 
    2989              :                     % EndModule  %
    2990              :                     
    2991              :                     % PopAuto  %
    2992              :                     
    2993              : 
    2994              :    first  symbols:moduletok
    2995              :    
    2996              :    cannot reachend
    2997              : */
    2998              : 
    2999        11878 : static void ProgramModule (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3000              : {
    3001        11878 :   Expect (M2Reserved_moduletok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3002        11878 :   M2Quads_PushAutoOn ();
    3003        11878 :   M2Error_DefaultProgramModule ();
    3004        11878 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3005        11878 :   P0SymBuild_RegisterProgramModule ();
    3006        11878 :   M2Quads_PushAutoOff ();
    3007        11878 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3008              :     {
    3009           12 :       Priority (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    3010              :     }
    3011        11878 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    3012        11878 :   M2Quads_PushAutoOn ();
    3013        38023 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    3014              :     {
    3015        14267 :       Import (stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    3016        14267 :       P0SymBuild_RegisterImports ();
    3017              :     }
    3018              :    /* while  */
    3019        11878 :   M2Quads_PopAuto ();
    3020        11878 :   Block (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3021        11866 :   M2Quads_PopAuto ();
    3022        11866 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3023        11866 :   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2);
    3024        11866 :   P0SymBuild_EndModule ();
    3025        11866 :   M2Quads_PopAuto ();
    3026        11866 : }
    3027              : 
    3028              : 
    3029              : /*
    3030              :    ImplementationModule := 'IMPLEMENTATION' 
    3031              :                            % M2Error.DefaultImplementationModule  %
    3032              :                            'MODULE' 
    3033              :                            % PushAutoOn ;  %
    3034              :                            Ident 
    3035              :                            % RegisterImplementationModule ;  %
    3036              :                            
    3037              :                            % PushAutoOff ;  %
    3038              :                            [ Priority  ] ';' 
    3039              :                            % PushAutoOn ;  %
    3040              :                            { Import 
    3041              :                              % RegisterImports  %
    3042              :                               } 
    3043              :                            % PopAuto  %
    3044              :                            Block 
    3045              :                            % PopAuto  %
    3046              :                            Ident 
    3047              :                            % EndModule  %
    3048              :                            
    3049              :                            % PopAuto  %
    3050              :                            '.' 
    3051              : 
    3052              :    first  symbols:implementationtok
    3053              :    
    3054              :    cannot reachend
    3055              : */
    3056              : 
    3057        70941 : static void ImplementationModule (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3058              : {
    3059        70941 :   Expect (M2Reserved_implementationtok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2);
    3060        70941 :   M2Error_DefaultImplementationModule ();
    3061        70941 :   Expect (M2Reserved_moduletok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3062        70941 :   M2Quads_PushAutoOn ();
    3063        70941 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3064        70941 :   P0SymBuild_RegisterImplementationModule ();
    3065        70941 :   M2Quads_PushAutoOff ();
    3066        70941 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3067              :     {
    3068           26 :       Priority (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    3069              :     }
    3070        70941 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    3071        70941 :   M2Quads_PushAutoOn ();
    3072       419264 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    3073              :     {
    3074       277382 :       Import (stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    3075       277382 :       P0SymBuild_RegisterImports ();
    3076              :     }
    3077              :    /* while  */
    3078        70941 :   M2Quads_PopAuto ();
    3079        70941 :   Block (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3080        70941 :   M2Quads_PopAuto ();
    3081        70941 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3082        70941 :   P0SymBuild_EndModule ();
    3083        70941 :   M2Quads_PopAuto ();
    3084        70941 :   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2);
    3085        70941 : }
    3086              : 
    3087              : 
    3088              : /*
    3089              :    ImplementationOrProgramModule := ImplementationModule  | 
    3090              :                                     ProgramModule 
    3091              : 
    3092              :    first  symbols:moduletok, implementationtok
    3093              :    
    3094              :    cannot reachend
    3095              : */
    3096              : 
    3097        82819 : static void ImplementationOrProgramModule (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3098              : {
    3099        82819 :   if (M2LexBuf_currenttoken == M2Reserved_implementationtok)
    3100              :     {
    3101        70941 :       ImplementationModule (stopset0, stopset1, stopset2);
    3102              :     }
    3103        11878 :   else if (M2LexBuf_currenttoken == M2Reserved_moduletok)
    3104              :     {
    3105              :       /* avoid dangling else.  */
    3106        11878 :       ProgramModule (stopset0, stopset1, stopset2);
    3107              :     }
    3108              :   else
    3109              :     {
    3110              :       /* avoid dangling else.  */
    3111            0 :       ErrorArray ((const char *) "expecting one of: {%KMODULE} {%KIMPLEMENTATION}", 47);
    3112              :     }
    3113        82807 : }
    3114              : 
    3115              : 
    3116              : /*
    3117              :    Number := Integer  | Real 
    3118              : 
    3119              :    first  symbols:realtok, integertok
    3120              :    
    3121              :    cannot reachend
    3122              : */
    3123              : 
    3124      2766584 : static void Number (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3125              : {
    3126      2766584 :   if (M2LexBuf_currenttoken == M2Reserved_integertok)
    3127              :     {
    3128      2737596 :       Integer (stopset0, stopset1, stopset2);
    3129              :     }
    3130        28988 :   else if (M2LexBuf_currenttoken == M2Reserved_realtok)
    3131              :     {
    3132              :       /* avoid dangling else.  */
    3133        28988 :       Real (stopset0, stopset1, stopset2);
    3134              :     }
    3135              :   else
    3136              :     {
    3137              :       /* avoid dangling else.  */
    3138            0 :       ErrorArray ((const char *) "expecting one of: {%Kreal number} {%Kinteger number}", 52);
    3139              :     }
    3140      2766584 : }
    3141              : 
    3142              : 
    3143              : /*
    3144              :    Qualident := Ident { '.' Ident  } 
    3145              : 
    3146              :    first  symbols:identtok
    3147              :    
    3148              :    cannot reachend
    3149              : */
    3150              : 
    3151     42285345 : static void Qualident (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3152              : {
    3153     42285345 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3154     85663727 :   while (M2LexBuf_currenttoken == M2Reserved_periodtok)
    3155              :     {
    3156      1093037 :       Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3157      1093037 :       Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3158              :     }
    3159              :    /* while  */
    3160     42285345 : }
    3161              : 
    3162              : 
    3163              : /*
    3164              :    ConstantDeclaration := Ident '=' ConstExpression 
    3165              : 
    3166              :    first  symbols:identtok
    3167              :    
    3168              :    cannot reachend
    3169              : */
    3170              : 
    3171       292928 : static void ConstantDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3172              : {
    3173       292928 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    3174       292928 :   Expect (M2Reserved_equaltok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3175       292928 :   ConstExpression (stopset0, stopset1, stopset2);
    3176       292928 : }
    3177              : 
    3178              : 
    3179              : /*
    3180              :    ConstExpression := SimpleConstExpr [ Relation SimpleConstExpr  ] 
    3181              : 
    3182              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    3183              :    
    3184              :    cannot reachend
    3185              : */
    3186              : 
    3187       663656 : static void ConstExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3188              : {
    3189       663656 :   SimpleConstExpr (stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_intok-M2Reserved_arraytok))), stopset2);
    3190       663656 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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))
    3191              :     {
    3192           42 :       Relation (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3193           42 :       SimpleConstExpr (stopset0, stopset1, stopset2);
    3194              :     }
    3195       663656 : }
    3196              : 
    3197              : 
    3198              : /*
    3199              :    Relation := '='  | '#'  | '<>'  | '<'  | '<='  | 
    3200              :                '>'  | '>='  | 'IN' 
    3201              : 
    3202              :    first  symbols:intok, greaterequaltok, greatertok, lessequaltok, lesstok, lessgreatertok, hashtok, equaltok
    3203              :    
    3204              :    cannot reachend
    3205              : */
    3206              : 
    3207      2503546 : static void Relation (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3208              : {
    3209      2503546 :   if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    3210              :     {
    3211       802026 :       Expect (M2Reserved_equaltok, stopset0, stopset1, stopset2);
    3212              :     }
    3213              :   else if (M2LexBuf_currenttoken == M2Reserved_hashtok)
    3214              :     {
    3215              :       /* avoid dangling else.  */
    3216       570728 :       Expect (M2Reserved_hashtok, stopset0, stopset1, stopset2);
    3217              :     }
    3218              :   else if (M2LexBuf_currenttoken == M2Reserved_lessgreatertok)
    3219              :     {
    3220              :       /* avoid dangling else.  */
    3221           84 :       Expect (M2Reserved_lessgreatertok, stopset0, stopset1, stopset2);
    3222              :     }
    3223              :   else if (M2LexBuf_currenttoken == M2Reserved_lesstok)
    3224              :     {
    3225              :       /* avoid dangling else.  */
    3226       430788 :       Expect (M2Reserved_lesstok, stopset0, stopset1, stopset2);
    3227              :     }
    3228              :   else if (M2LexBuf_currenttoken == M2Reserved_lessequaltok)
    3229              :     {
    3230              :       /* avoid dangling else.  */
    3231       225930 :       Expect (M2Reserved_lessequaltok, stopset0, stopset1, stopset2);
    3232              :     }
    3233              :   else if (M2LexBuf_currenttoken == M2Reserved_greatertok)
    3234              :     {
    3235              :       /* avoid dangling else.  */
    3236       277700 :       Expect (M2Reserved_greatertok, stopset0, stopset1, stopset2);
    3237              :     }
    3238              :   else if (M2LexBuf_currenttoken == M2Reserved_greaterequaltok)
    3239              :     {
    3240              :       /* avoid dangling else.  */
    3241       113090 :       Expect (M2Reserved_greaterequaltok, stopset0, stopset1, stopset2);
    3242              :     }
    3243              :   else if (M2LexBuf_currenttoken == M2Reserved_intok)
    3244              :     {
    3245              :       /* avoid dangling else.  */
    3246        83200 :       Expect (M2Reserved_intok, stopset0, stopset1, stopset2);
    3247              :     }
    3248              :   else
    3249              :     {
    3250              :       /* avoid dangling else.  */
    3251            0 :       ErrorArray ((const char *) "expecting one of: {%KIN} {%K>=} {%K>} {%K<=} {%K<} {%K<>} {%K#} {%K=}", 69);
    3252              :     }
    3253      2503546 : }
    3254              : 
    3255              : 
    3256              : /*
    3257              :    SimpleConstExpr := UnaryOrConstTerm { AddOperator 
    3258              :                                          ConstTerm  } 
    3259              : 
    3260              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    3261              :    
    3262              :    cannot reachend
    3263              : */
    3264              : 
    3265       663698 : static void SimpleConstExpr (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3266              : {
    3267       663698 :   UnaryOrConstTerm (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    3268      1337458 :   while (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_ortok))
    3269              :     {
    3270        10062 :       AddOperator (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3271        10062 :       ConstTerm (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    3272              :     }
    3273              :    /* while  */
    3274       663698 : }
    3275              : 
    3276              : 
    3277              : /*
    3278              :    UnaryOrConstTerm := '+' ConstTerm  | 
    3279              :                        '-' ConstTerm  | 
    3280              :                        ConstTerm 
    3281              : 
    3282              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    3283              :    
    3284              :    cannot reachend
    3285              : */
    3286              : 
    3287       663698 : static void UnaryOrConstTerm (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3288              : {
    3289       663698 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    3290              :     {
    3291           12 :       Expect (M2Reserved_plustok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3292           12 :       ConstTerm (stopset0, stopset1, stopset2);
    3293              :     }
    3294       663686 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    3295              :     {
    3296              :       /* avoid dangling else.  */
    3297        18659 :       Expect (M2Reserved_minustok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3298        18659 :       ConstTerm (stopset0, stopset1, stopset2);
    3299              :     }
    3300       645027 :   else if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_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))))
    3301              :     {
    3302              :       /* avoid dangling else.  */
    3303       645027 :       ConstTerm (stopset0, stopset1, stopset2);
    3304              :     }
    3305              :   else
    3306              :     {
    3307              :       /* avoid dangling else.  */
    3308            0 :       ErrorArray ((const char *) "expecting one of: {%KNOT} {%K(} {%Kinteger number} {%Kreal number} {%K__ATTRIBUTE__} {%K%{} {%Kidentifier} {%Kstring} {%K-} {%K+}", 129);
    3309              :     }
    3310       663698 : }
    3311              : 
    3312              : 
    3313              : /*
    3314              :    AddOperator := '+'  | '-'  | 'OR' 
    3315              : 
    3316              :    first  symbols:ortok, minustok, plustok
    3317              :    
    3318              :    cannot reachend
    3319              : */
    3320              : 
    3321       858811 : static void AddOperator (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3322              : {
    3323       858811 :   if (M2LexBuf_currenttoken == M2Reserved_plustok)
    3324              :     {
    3325       437519 :       Expect (M2Reserved_plustok, stopset0, stopset1, stopset2);
    3326              :     }
    3327       421292 :   else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    3328              :     {
    3329              :       /* avoid dangling else.  */
    3330       270760 :       Expect (M2Reserved_minustok, stopset0, stopset1, stopset2);
    3331              :     }
    3332       150532 :   else if (M2LexBuf_currenttoken == M2Reserved_ortok)
    3333              :     {
    3334              :       /* avoid dangling else.  */
    3335       150532 :       Expect (M2Reserved_ortok, stopset0, stopset1, stopset2);
    3336              :     }
    3337              :   else
    3338              :     {
    3339              :       /* avoid dangling else.  */
    3340            0 :       ErrorArray ((const char *) "expecting one of: {%KOR} {%K-} {%K+}", 36);
    3341              :     }
    3342       858811 : }
    3343              : 
    3344              : 
    3345              : /*
    3346              :    ConstTerm := ConstFactor { MulOperator ConstFactor  } 
    3347              : 
    3348              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok
    3349              :    
    3350              :    cannot reachend
    3351              : */
    3352              : 
    3353       673760 : static void ConstTerm (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3354              : {
    3355       673760 :   ConstFactor (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_timestok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_modtok-M2Reserved_arraytok)) | (1 << (M2Reserved_divtok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    3356      1366911 :   while ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))))) != 0)))) || (M2LexBuf_currenttoken == M2Reserved_remtok))
    3357              :     {
    3358        19391 :       MulOperator (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3359        19391 :       ConstFactor (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_timestok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_ambersandtok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    3360              :     }
    3361              :    /* while  */
    3362       673760 : }
    3363              : 
    3364              : 
    3365              : /*
    3366              :    MulOperator := '*'  | '/'  | 'DIV'  | 'MOD'  | 
    3367              :                   'REM'  | 'AND'  | '&' 
    3368              : 
    3369              :    first  symbols:ambersandtok, andtok, remtok, modtok, divtok, dividetok, timestok
    3370              :    
    3371              :    cannot reachend
    3372              : */
    3373              : 
    3374       806735 : static void MulOperator (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3375              : {
    3376       806735 :   if (M2LexBuf_currenttoken == M2Reserved_timestok)
    3377              :     {
    3378       123598 :       Expect (M2Reserved_timestok, stopset0, stopset1, stopset2);
    3379              :     }
    3380              :   else if (M2LexBuf_currenttoken == M2Reserved_dividetok)
    3381              :     {
    3382              :       /* avoid dangling else.  */
    3383        14242 :       Expect (M2Reserved_dividetok, stopset0, stopset1, stopset2);
    3384              :     }
    3385              :   else if (M2LexBuf_currenttoken == M2Reserved_divtok)
    3386              :     {
    3387              :       /* avoid dangling else.  */
    3388        85847 :       Expect (M2Reserved_divtok, stopset0, stopset1, stopset2);
    3389              :     }
    3390              :   else if (M2LexBuf_currenttoken == M2Reserved_modtok)
    3391              :     {
    3392              :       /* avoid dangling else.  */
    3393       132742 :       Expect (M2Reserved_modtok, stopset0, stopset1, stopset2);
    3394              :     }
    3395              :   else if (M2LexBuf_currenttoken == M2Reserved_remtok)
    3396              :     {
    3397              :       /* avoid dangling else.  */
    3398           96 :       Expect (M2Reserved_remtok, stopset0, stopset1, stopset2);
    3399              :     }
    3400              :   else if (M2LexBuf_currenttoken == M2Reserved_andtok)
    3401              :     {
    3402              :       /* avoid dangling else.  */
    3403       450210 :       Expect (M2Reserved_andtok, stopset0, stopset1, stopset2);
    3404              :     }
    3405              :   else if (M2LexBuf_currenttoken == M2Reserved_ambersandtok)
    3406              :     {
    3407              :       /* avoid dangling else.  */
    3408            0 :       Expect (M2Reserved_ambersandtok, stopset0, stopset1, stopset2);
    3409              :     }
    3410              :   else
    3411              :     {
    3412              :       /* avoid dangling else.  */
    3413            0 :       ErrorArray ((const char *) "expecting one of: {%K&} {%KAND} {%KREM} {%KMOD} {%KDIV} {%K/} {%K*}", 67);
    3414              :     }
    3415       806735 : }
    3416              : 
    3417              : 
    3418              : /*
    3419              :    ConstFactor := Number  | ConstString  | 
    3420              :                   ConstSetOrQualidentOrFunction  | 
    3421              :                   '(' ConstExpression ')'  | 
    3422              :                   'NOT' ConstFactor  | 
    3423              :                   ConstAttribute 
    3424              : 
    3425              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok
    3426              :    
    3427              :    cannot reachend
    3428              : */
    3429              : 
    3430       693151 : static void ConstFactor (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3431              : {
    3432       693151 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok))))) != 0)))
    3433              :     {
    3434       370176 :       Number (stopset0, stopset1, stopset2);
    3435              :     }
    3436       322975 :   else if (M2LexBuf_currenttoken == M2Reserved_stringtok)
    3437              :     {
    3438              :       /* avoid dangling else.  */
    3439        50617 :       ConstString (stopset0, stopset1, stopset2);
    3440              :     }
    3441              :   else if ((M2LexBuf_currenttoken == M2Reserved_lcbratok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    3442              :     {
    3443              :       /* avoid dangling else.  */
    3444       242390 :       ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
    3445              :     }
    3446              :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    3447              :     {
    3448              :       /* avoid dangling else.  */
    3449           78 :       Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3450           78 :       ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3451           78 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    3452              :     }
    3453              :   else if (M2LexBuf_currenttoken == M2Reserved_nottok)
    3454              :     {
    3455              :       /* avoid dangling else.  */
    3456            0 :       Expect (M2Reserved_nottok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3457            0 :       ConstFactor (stopset0, stopset1, stopset2);
    3458              :     }
    3459              :   else if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    3460              :     {
    3461              :       /* avoid dangling else.  */
    3462        29890 :       ConstAttribute (stopset0, stopset1, stopset2);
    3463              :     }
    3464              :   else
    3465              :     {
    3466              :       /* avoid dangling else.  */
    3467            0 :       ErrorArray ((const char *) "expecting one of: {%K__ATTRIBUTE__} {%KNOT} {%K(} {%K%{} {%Kidentifier} {%Kstring} {%Kinteger number} {%Kreal number}", 117);
    3468              :     }
    3469       693151 : }
    3470              : 
    3471              : 
    3472              : /*
    3473              :    ConstString := string 
    3474              : 
    3475              :    first  symbols:stringtok
    3476              :    
    3477              :    cannot reachend
    3478              : */
    3479              : 
    3480        50617 : static void ConstString (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3481              : {
    3482        50617 :   string (stopset0, stopset1, stopset2);
    3483        50617 : }
    3484              : 
    3485              : 
    3486              : /*
    3487              :    ComponentElement := ConstExpression [ '..' ConstExpression  ] 
    3488              : 
    3489              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    3490              :    
    3491              :    cannot reachend
    3492              : */
    3493              : 
    3494        29382 : static void ComponentElement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3495              : {
    3496        29382 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3497        29382 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    3498              :     {
    3499          362 :       Expect (M2Reserved_periodperiodtok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3500          362 :       ConstExpression (stopset0, stopset1, stopset2);
    3501              :     }
    3502        29382 : }
    3503              : 
    3504              : 
    3505              : /*
    3506              :    ComponentValue := ComponentElement [ 'BY' ConstExpression  ] 
    3507              : 
    3508              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    3509              :    
    3510              :    cannot reachend
    3511              : */
    3512              : 
    3513        29382 : static void ComponentValue (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3514              : {
    3515        29382 :   ComponentElement (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_bytok-M2Reserved_arraytok))), stopset2);
    3516        29382 :   if (M2LexBuf_currenttoken == M2Reserved_bytok)
    3517              :     {
    3518           30 :       Expect (M2Reserved_bytok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3519           30 :       ConstExpression (stopset0, stopset1, stopset2);
    3520              :     }
    3521        29382 : }
    3522              : 
    3523              : 
    3524              : /*
    3525              :    ArraySetRecordValue := ComponentValue { ',' ComponentValue  } 
    3526              : 
    3527              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    3528              :    
    3529              :    cannot reachend
    3530              : */
    3531              : 
    3532        10392 : static void ArraySetRecordValue (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3533              : {
    3534        10392 :   ComponentValue (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    3535        39774 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    3536              :     {
    3537        18990 :       Expect (M2Reserved_commatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3538        18990 :       ComponentValue (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    3539              :     }
    3540              :    /* while  */
    3541        10392 : }
    3542              : 
    3543              : 
    3544              : /*
    3545              :    Constructor := '{' [ ArraySetRecordValue  ] '}' 
    3546              : 
    3547              :    first  symbols:lcbratok
    3548              :    
    3549              :    cannot reachend
    3550              : */
    3551              : 
    3552        36524 : static void Constructor (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3553              : {
    3554        36524 :   Expect (M2Reserved_lcbratok, stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3555        36524 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_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))))
    3556              :     {
    3557        10392 :       ArraySetRecordValue (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rcbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3558              :     }
    3559        36524 :   Expect (M2Reserved_rcbratok, stopset0, stopset1, stopset2);
    3560        36524 : }
    3561              : 
    3562              : 
    3563              : /*
    3564              :    ConstSetOrQualidentOrFunction := Constructor  | 
    3565              :                                     Qualident [ Constructor  | 
    3566              :                                                 ConstActualParameters  ] 
    3567              : 
    3568              :    first  symbols:identtok, lcbratok
    3569              :    
    3570              :    cannot reachend
    3571              : */
    3572              : 
    3573       242390 : static void ConstSetOrQualidentOrFunction (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3574              : {
    3575       242390 :   if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    3576              :     {
    3577          552 :       Constructor (stopset0, stopset1, stopset2);
    3578              :     }
    3579       241838 :   else if (M2LexBuf_currenttoken == M2Reserved_identtok)
    3580              :     {
    3581              :       /* avoid dangling else.  */
    3582       241838 :       Qualident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3583       241838 :       if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0)))
    3584              :         {
    3585              :           /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    3586              :           /* seen optional [ | ] expression  */
    3587        13148 :           if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    3588              :             {
    3589         5870 :               Constructor (stopset0, stopset1, stopset2);
    3590              :             }
    3591         7278 :           else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    3592              :             {
    3593              :               /* avoid dangling else.  */
    3594         7278 :               ConstActualParameters (stopset0, stopset1, stopset2);
    3595              :             }
    3596              :           else
    3597              :             {
    3598              :               /* avoid dangling else.  */
    3599            0 :               ErrorArray ((const char *) "expecting one of: {%K(} {%K%{}", 30);
    3600              :             }
    3601              :         }
    3602              :       /* end of optional [ | ] expression  */
    3603              :     }
    3604              :   else
    3605              :     {
    3606              :       /* avoid dangling else.  */
    3607            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%K%{}", 39);
    3608              :     }
    3609       242390 : }
    3610              : 
    3611              : 
    3612              : /*
    3613              :    ConstActualParameters := '(' [ ExpList  ] ')' 
    3614              : 
    3615              :    first  symbols:lparatok
    3616              :    
    3617              :    cannot reachend
    3618              : */
    3619              : 
    3620         7278 : static void ConstActualParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3621              : {
    3622         7278 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3623         7278 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    3624              :     {
    3625         7278 :       ExpList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3626              :     }
    3627         7278 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    3628         7278 : }
    3629              : 
    3630              : 
    3631              : /*
    3632              :    ConstAttribute := '__ATTRIBUTE__' '__BUILTIN__' 
    3633              :                      '(' '(' ConstAttributeExpression 
    3634              :                      ')' ')' 
    3635              : 
    3636              :    first  symbols:attributetok
    3637              :    
    3638              :    cannot reachend
    3639              : */
    3640              : 
    3641        29890 : static void ConstAttribute (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3642              : {
    3643        29890 :   Expect (M2Reserved_attributetok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok))));
    3644        29890 :   Expect (M2Reserved_builtintok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3645        29890 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3646        29890 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lesstok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3647        29890 :   ConstAttributeExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3648        29890 :   Expect (M2Reserved_rparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3649        29890 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    3650        29890 : }
    3651              : 
    3652              : 
    3653              : /*
    3654              :    ConstAttributeExpression := Ident  | '<' Qualident 
    3655              :                                ',' Ident '>' 
    3656              : 
    3657              :    first  symbols:lesstok, identtok
    3658              :    
    3659              :    cannot reachend
    3660              : */
    3661              : 
    3662        29890 : static void ConstAttributeExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3663              : {
    3664        29890 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    3665              :     {
    3666        29530 :       Ident (stopset0, stopset1, stopset2);
    3667              :     }
    3668          360 :   else if (M2LexBuf_currenttoken == M2Reserved_lesstok)
    3669              :     {
    3670              :       /* avoid dangling else.  */
    3671          360 :       Expect (M2Reserved_lesstok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3672          360 :       Qualident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    3673          360 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3674          360 :       Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_greatertok-M2Reserved_eoftok))), stopset1, stopset2);
    3675          360 :       Expect (M2Reserved_greatertok, stopset0, stopset1, stopset2);
    3676              :     }
    3677              :   else
    3678              :     {
    3679              :       /* avoid dangling else.  */
    3680            0 :       ErrorArray ((const char *) "expecting one of: {%K<} {%Kidentifier}", 38);
    3681              :     }
    3682        29890 : }
    3683              : 
    3684              : 
    3685              : /*
    3686              :    ByteAlignment := '' 
    3687              : 
    3688              :    first  symbols:ldirectivetok
    3689              :    
    3690              :    cannot reachend
    3691              : */
    3692              : 
    3693           72 : static void ByteAlignment (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3694              : {
    3695           72 :   Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3696           72 :   AttributeExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    3697           72 :   Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    3698           72 : }
    3699              : 
    3700              : 
    3701              : /*
    3702              :    Alignment := [ ByteAlignment  ] 
    3703              : 
    3704              :    first  symbols:ldirectivetok
    3705              :    
    3706              :    reachend
    3707              : */
    3708              : 
    3709      1414785 : static void Alignment (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3710              : {
    3711            0 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    3712              :     {
    3713           72 :       ByteAlignment (stopset0, stopset1, stopset2);
    3714              :     }
    3715            0 : }
    3716              : 
    3717              : 
    3718              : /*
    3719              :    TypeDeclaration := Ident '=' Type Alignment 
    3720              : 
    3721              :    first  symbols:identtok
    3722              :    
    3723              :    cannot reachend
    3724              : */
    3725              : 
    3726       117508 : static void TypeDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3727              : {
    3728       117508 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    3729       117508 :   Expect (M2Reserved_equaltok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3730       117508 :   Type (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    3731       117508 :   Alignment (stopset0, stopset1, stopset2);
    3732       117508 : }
    3733              : 
    3734              : 
    3735              : /*
    3736              :    Type := SimpleType  | ArrayType  | RecordType  | 
    3737              :            SetType  | PointerType  | ProcedureType 
    3738              : 
    3739              :    first  symbols:lparatok, lsbratok, proceduretok, pointertok, settok, packedsettok, oftok, recordtok, arraytok, identtok
    3740              :    
    3741              :    cannot reachend
    3742              : */
    3743              : 
    3744      1915522 : static void Type (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3745              : {
    3746      1915522 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    3747              :     {
    3748      1578178 :       SimpleType (stopset0, stopset1, stopset2);
    3749              :     }
    3750       337344 :   else if (M2LexBuf_currenttoken == M2Reserved_arraytok)
    3751              :     {
    3752              :       /* avoid dangling else.  */
    3753       100188 :       ArrayType (stopset0, stopset1, stopset2);
    3754              :     }
    3755       237156 :   else if (M2LexBuf_currenttoken == M2Reserved_recordtok)
    3756              :     {
    3757              :       /* avoid dangling else.  */
    3758        71617 :       RecordType (stopset0, stopset1, stopset2);
    3759              :     }
    3760       165539 :   else if ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_packedsettok-M2Reserved_arraytok)) | (1 << (M2Reserved_oftok-M2Reserved_arraytok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_settok))
    3761              :     {
    3762              :       /* avoid dangling else.  */
    3763         4748 :       SetType (stopset0, stopset1, stopset2);
    3764              :     }
    3765       160791 :   else if (M2LexBuf_currenttoken == M2Reserved_pointertok)
    3766              :     {
    3767              :       /* avoid dangling else.  */
    3768       101105 :       PointerType (stopset0, stopset1, stopset2);
    3769              :     }
    3770        59686 :   else if (M2LexBuf_currenttoken == M2Reserved_proceduretok)
    3771              :     {
    3772              :       /* avoid dangling else.  */
    3773        59674 :       ProcedureType (stopset0, stopset1, stopset2);
    3774              :     }
    3775              :   else
    3776              :     {
    3777              :       /* avoid dangling else.  */
    3778           12 :       ErrorArray ((const char *) "expecting one of: {%KPROCEDURE} {%KPOINTER} {%KSET} {%KPACKEDSET} {%KOF} {%KRECORD} {%KARRAY} {%Kidentifier} {%K(} {%K[}", 120);
    3779              :     }
    3780      1915522 : }
    3781              : 
    3782              : 
    3783              : /*
    3784              :    SimpleType := Qualident [ SubrangeType  ]  | 
    3785              :                  Enumeration  | SubrangeType 
    3786              : 
    3787              :    first  symbols:lsbratok, lparatok, identtok
    3788              :    
    3789              :    cannot reachend
    3790              : */
    3791              : 
    3792      1683252 : static void SimpleType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3793              : {
    3794      1683252 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    3795              :     {
    3796              :       /* avoid dangling else.  */
    3797      1546987 :       Qualident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3798      1546987 :       if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3799              :         {
    3800           18 :           SubrangeType (stopset0, stopset1, stopset2);
    3801              :         }
    3802              :     }
    3803       136265 :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    3804              :     {
    3805              :       /* avoid dangling else.  */
    3806        34211 :       Enumeration (stopset0, stopset1, stopset2);
    3807              :     }
    3808       102054 :   else if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    3809              :     {
    3810              :       /* avoid dangling else.  */
    3811       102054 :       SubrangeType (stopset0, stopset1, stopset2);
    3812              :     }
    3813              :   else
    3814              :     {
    3815              :       /* avoid dangling else.  */
    3816            0 :       ErrorArray ((const char *) "expecting one of: {%K[} {%K(} {%Kidentifier}", 44);
    3817              :     }
    3818      1683252 : }
    3819              : 
    3820              : 
    3821              : /*
    3822              :    Enumeration := '(' IdentList ')' 
    3823              : 
    3824              :    first  symbols:lparatok
    3825              :    
    3826              :    cannot reachend
    3827              : */
    3828              : 
    3829        34211 : static void Enumeration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3830              : {
    3831        34211 :   Expect (M2Reserved_lparatok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3832        34211 :   IdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    3833        34211 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    3834        34211 : }
    3835              : 
    3836              : 
    3837              : /*
    3838              :    IdentList := Ident 
    3839              :                 % VAR
    3840              :                                                                                                   on: BOOLEAN ;
    3841              :                                                                                                   n : CARDINAL ;  %
    3842              :                 
    3843              :                 % on := IsAutoPushOn() ;
    3844              :                   IF on
    3845              :                   THEN
    3846              :                      n := 1
    3847              :                   END  %
    3848              :                 { ',' Ident 
    3849              :                   % IF on
    3850              :                     THEN
    3851              :                        INC(n)
    3852              :                     END  %
    3853              :                    } 
    3854              :                 % IF on
    3855              :                   THEN
    3856              :                      PushT(n)
    3857              :                   END  %
    3858              :                 
    3859              : 
    3860              :    first  symbols:identtok
    3861              :    
    3862              :    cannot reachend
    3863              : */
    3864              : 
    3865      9191362 : static void IdentList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3866              : {
    3867      9191362 :   bool on;
    3868      9191362 :   unsigned int n;
    3869              : 
    3870      9191362 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    3871      9191362 :   on = M2Quads_IsAutoPushOn ();
    3872      9191362 :   if (on)
    3873              :     {
    3874      9191362 :       n = 1;
    3875              :     }
    3876     14561806 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    3877              :     {
    3878      5370444 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3879      5370444 :       Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    3880      5370444 :       if (on)
    3881              :         {
    3882       512824 :           n += 1;
    3883              :         }
    3884              :     }
    3885              :    /* while  */
    3886      9191362 :   if (on)
    3887              :     {
    3888       401813 :       M2Quads_PushT (n);
    3889              :     }
    3890      9191362 : }
    3891              : 
    3892              : 
    3893              : /*
    3894              :    SubrangeType := '[' ConstExpression '..' ConstExpression 
    3895              :                    ']' 
    3896              : 
    3897              :    first  symbols:lsbratok
    3898              :    
    3899              :    cannot reachend
    3900              : */
    3901              : 
    3902       102072 : static void SubrangeType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3903              : {
    3904       102072 :   Expect (M2Reserved_lsbratok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3905       102072 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    3906       102072 :   Expect (M2Reserved_periodperiodtok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    3907       102072 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    3908       102072 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    3909       102072 : }
    3910              : 
    3911              : 
    3912              : /*
    3913              :    ArrayType := 'ARRAY' SimpleType { ',' SimpleType  } 
    3914              :                 'OF' Type 
    3915              : 
    3916              :    first  symbols:arraytok
    3917              :    
    3918              :    cannot reachend
    3919              : */
    3920              : 
    3921       100188 : static void ArrayType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3922              : {
    3923       100188 :   Expect (M2Reserved_arraytok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3924       100188 :   SimpleType (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    3925       200514 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    3926              :     {
    3927          138 :       Expect (M2Reserved_commatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3928          138 :       SimpleType (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    3929              :     }
    3930              :    /* while  */
    3931       100188 :   Expect (M2Reserved_oftok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3932       100188 :   Type (stopset0, stopset1, stopset2);
    3933       100188 : }
    3934              : 
    3935              : 
    3936              : /*
    3937              :    RecordType := 'RECORD' [ DefaultRecordAttributes  ] 
    3938              :                  FieldListSequence 'END' 
    3939              : 
    3940              :    first  symbols:recordtok
    3941              :    
    3942              :    cannot reachend
    3943              : */
    3944              : 
    3945        71617 : static void RecordType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3946              : {
    3947        71617 :   Expect (M2Reserved_recordtok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3948        71617 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    3949              :     {
    3950           36 :       DefaultRecordAttributes (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3951              :     }
    3952        71617 :   FieldListSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    3953        71617 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    3954        71617 : }
    3955              : 
    3956              : 
    3957              : /*
    3958              :    DefaultRecordAttributes := '' 
    3959              : 
    3960              :    first  symbols:ldirectivetok
    3961              :    
    3962              :    cannot reachend
    3963              : */
    3964              : 
    3965           36 : static void DefaultRecordAttributes (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3966              : {
    3967           36 :   Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3968           36 :   AttributeExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    3969           36 :   Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    3970           36 : }
    3971              : 
    3972              : 
    3973              : /*
    3974              :    RecordFieldPragma := [ ''  ] 
    3975              : 
    3976              :    first  symbols:ldirectivetok
    3977              :    
    3978              :    reachend
    3979              : */
    3980              : 
    3981       299444 : static void RecordFieldPragma (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    3982              : {
    3983       299444 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    3984              :     {
    3985           12 :       Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3986           12 :       FieldPragmaExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok)) | (1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    3987           24 :       while (M2LexBuf_currenttoken == M2Reserved_commatok)
    3988              :         {
    3989            0 :           Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    3990            0 :           FieldPragmaExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    3991              :         }
    3992              :        /* while  */
    3993           12 :       Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    3994              :     }
    3995       299444 : }
    3996              : 
    3997              : 
    3998              : /*
    3999              :    FieldPragmaExpression := Ident [ '(' ConstExpression 
    4000              :                                     ')'  ] 
    4001              : 
    4002              :    first  symbols:identtok
    4003              :    
    4004              :    cannot reachend
    4005              : */
    4006              : 
    4007           12 : static void FieldPragmaExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4008              : {
    4009           12 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4010           12 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4011              :     {
    4012           12 :       Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    4013           12 :       ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4014           12 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4015              :     }
    4016           12 : }
    4017              : 
    4018              : 
    4019              : /*
    4020              :    AttributeExpression := Ident '(' ConstExpression 
    4021              :                           ')' 
    4022              : 
    4023              :    first  symbols:identtok
    4024              :    
    4025              :    cannot reachend
    4026              : */
    4027              : 
    4028          108 : static void AttributeExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4029              : {
    4030          108 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4031          108 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    4032          108 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4033          108 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4034          108 : }
    4035              : 
    4036              : 
    4037              : /*
    4038              :    FieldListSequence := FieldListStatement { ';' FieldListStatement  } 
    4039              : 
    4040              :    first  symbols:casetok, identtok, semicolontok
    4041              :    
    4042              :    reachend
    4043              : */
    4044              : 
    4045        77719 : static void FieldListSequence (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4046              : {
    4047        77719 :   FieldListStatement (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    4048       446144 :   while (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    4049              :     {
    4050       290706 :       Expect (M2Reserved_semicolontok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4051       290706 :       FieldListStatement (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    4052              :     }
    4053              :    /* while  */
    4054        77719 : }
    4055              : 
    4056              : 
    4057              : /*
    4058              :    FieldListStatement := [ FieldList  ] 
    4059              : 
    4060              :    first  symbols:identtok, casetok
    4061              :    
    4062              :    reachend
    4063              : */
    4064              : 
    4065       368425 : static void FieldListStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4066              : {
    4067       368425 :   if ((M2LexBuf_currenttoken == M2Reserved_casetok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    4068              :     {
    4069       302438 :       FieldList (stopset0, stopset1, stopset2);
    4070              :     }
    4071       368425 : }
    4072              : 
    4073              : 
    4074              : /*
    4075              :    FieldList := IdentList ':' Type RecordFieldPragma  | 
    4076              :                 'CASE' CaseTag 'OF' Varient { '|' Varient  } 
    4077              :                 [ 'ELSE' FieldListSequence  ] 'END' 
    4078              : 
    4079              :    first  symbols:casetok, identtok
    4080              :    
    4081              :    cannot reachend
    4082              : */
    4083              : 
    4084       302438 : static void FieldList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4085              : {
    4086       302438 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4087              :     {
    4088       299444 :       IdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4089       299444 :       Expect (M2Reserved_colontok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4090       299444 :       Type (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    4091       299444 :       RecordFieldPragma (stopset0, stopset1, stopset2);
    4092              :     }
    4093         2994 :   else if (M2LexBuf_currenttoken == M2Reserved_casetok)
    4094              :     {
    4095              :       /* avoid dangling else.  */
    4096         2994 :       Expect (M2Reserved_casetok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4097         2994 :       CaseTag (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    4098         2994 :       Expect (M2Reserved_oftok, stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    4099         2994 :       Varient (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    4100         9342 :       while (M2LexBuf_currenttoken == M2Reserved_bartok)
    4101              :         {
    4102         3354 :           Expect (M2Reserved_bartok, stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    4103         3354 :           Varient (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok))), stopset2);
    4104              :         }
    4105              :        /* while  */
    4106         2994 :       if (M2LexBuf_currenttoken == M2Reserved_elsetok)
    4107              :         {
    4108          114 :           Expect (M2Reserved_elsetok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4109          114 :           FieldListSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    4110              :         }
    4111         2994 :       Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    4112              :     }
    4113              :   else
    4114              :     {
    4115              :       /* avoid dangling else.  */
    4116            0 :       ErrorArray ((const char *) "expecting one of: {%KCASE} {%Kidentifier}", 41);
    4117              :     }
    4118       302438 : }
    4119              : 
    4120              : 
    4121              : /*
    4122              :    TagIdent := [ Ident  ] 
    4123              : 
    4124              :    first  symbols:identtok
    4125              :    
    4126              :    reachend
    4127              : */
    4128              : 
    4129         2994 : static void TagIdent (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4130              : {
    4131            0 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4132              :     {
    4133         2952 :       Ident (stopset0, stopset1, stopset2);
    4134              :     }
    4135            0 : }
    4136              : 
    4137              : 
    4138              : /*
    4139              :    CaseTag := TagIdent [ ':' Qualident  ] 
    4140              : 
    4141              :    first  symbols:colontok, identtok
    4142              :    
    4143              :    reachend
    4144              : */
    4145              : 
    4146         2994 : static void CaseTag (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4147              : {
    4148         2994 :   TagIdent (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4149         2994 :   if (M2LexBuf_currenttoken == M2Reserved_colontok)
    4150              :     {
    4151         2982 :       Expect (M2Reserved_colontok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4152         2982 :       Qualident (stopset0, stopset1, stopset2);
    4153              :     }
    4154         2994 : }
    4155              : 
    4156              : 
    4157              : /*
    4158              :    Varient := [ VarientCaseLabelList ':' FieldListSequence  ] 
    4159              : 
    4160              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    4161              :    
    4162              :    reachend
    4163              : */
    4164              : 
    4165         6348 : static void Varient (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4166              : {
    4167         6348 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_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))))
    4168              :     {
    4169         5988 :       VarientCaseLabelList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4170         5988 :       Expect (M2Reserved_colontok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_casetok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4171         5988 :       FieldListSequence (stopset0, stopset1, stopset2);
    4172              :     }
    4173         6348 : }
    4174              : 
    4175              : 
    4176              : /*
    4177              :    VarientCaseLabelList := VarientCaseLabels { ',' 
    4178              :                                                VarientCaseLabels  } 
    4179              : 
    4180              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    4181              :    
    4182              :    cannot reachend
    4183              : */
    4184              : 
    4185         5988 : static void VarientCaseLabelList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4186              : {
    4187         5988 :   VarientCaseLabels (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4188        12018 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4189              :     {
    4190           42 :       Expect (M2Reserved_commatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    4191           42 :       VarientCaseLabels (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4192              :     }
    4193              :    /* while  */
    4194         5988 : }
    4195              : 
    4196              : 
    4197              : /*
    4198              :    VarientCaseLabels := ConstExpression [ '..' ConstExpression  ] 
    4199              : 
    4200              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    4201              :    
    4202              :    cannot reachend
    4203              : */
    4204              : 
    4205         6030 : static void VarientCaseLabels (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4206              : {
    4207         6030 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4208         6030 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    4209              :     {
    4210            0 :       Expect (M2Reserved_periodperiodtok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    4211            0 :       ConstExpression (stopset0, stopset1, stopset2);
    4212              :     }
    4213         6030 : }
    4214              : 
    4215              : 
    4216              : /*
    4217              :    CaseLabelList := CaseLabels { ',' CaseLabels  } 
    4218              : 
    4219              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok
    4220              :    
    4221              :    cannot reachend
    4222              : */
    4223              : 
    4224       111900 : static void CaseLabelList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4225              : {
    4226       111900 :   CaseLabels (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4227       224048 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4228              :     {
    4229          248 :       Expect (M2Reserved_commatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    4230          248 :       CaseLabels (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4231              :     }
    4232              :    /* while  */
    4233       111900 : }
    4234              : 
    4235              : 
    4236              : /*
    4237              :    CaseLabels := ConstExpression [ '..' ConstExpression  ] 
    4238              : 
    4239              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    4240              :    
    4241              :    cannot reachend
    4242              : */
    4243              : 
    4244       112148 : static void CaseLabels (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4245              : {
    4246       112148 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodperiodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4247       112148 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodtok)
    4248              :     {
    4249          168 :       Expect (M2Reserved_periodperiodtok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    4250          168 :       ConstExpression (stopset0, stopset1, stopset2);
    4251              :     }
    4252       112148 : }
    4253              : 
    4254              : 
    4255              : /*
    4256              :    SetType := ( 'SET'  | 'PACKEDSET'  ) 'OF' SimpleType 
    4257              : 
    4258              :    first  symbols:oftok, packedsettok, settok
    4259              :    
    4260              :    cannot reachend
    4261              : */
    4262              : 
    4263         4748 : static void SetType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4264              : {
    4265         4748 :   if (M2LexBuf_currenttoken == M2Reserved_settok)
    4266              :     {
    4267         1916 :       Expect (M2Reserved_settok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    4268              :     }
    4269         2832 :   else if (M2LexBuf_currenttoken == M2Reserved_packedsettok)
    4270              :     {
    4271              :       /* avoid dangling else.  */
    4272         2832 :       Expect (M2Reserved_packedsettok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    4273              :     }
    4274              :   else
    4275              :     {
    4276              :       /* avoid dangling else.  */
    4277            0 :       ErrorArray ((const char *) "expecting one of: {%KPACKEDSET} {%KSET}", 39);
    4278              :     }
    4279         4748 :   Expect (M2Reserved_oftok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4280         4748 :   SimpleType (stopset0, stopset1, stopset2);
    4281         4748 : }
    4282              : 
    4283              : 
    4284              : /*
    4285              :    PointerType := 'POINTER' 'TO' Type 
    4286              : 
    4287              :    first  symbols:pointertok
    4288              :    
    4289              :    cannot reachend
    4290              : */
    4291              : 
    4292       101105 : static void PointerType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4293              : {
    4294       101105 :   Expect (M2Reserved_pointertok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_totok-M2Reserved_unqualifiedtok))));
    4295       101105 :   Expect (M2Reserved_totok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4296       101105 :   Type (stopset0, stopset1, stopset2);
    4297       101105 : }
    4298              : 
    4299              : 
    4300              : /*
    4301              :    ProcedureType := 'PROCEDURE' [ FormalTypeList  ] 
    4302              : 
    4303              :    first  symbols:proceduretok
    4304              :    
    4305              :    cannot reachend
    4306              : */
    4307              : 
    4308        59674 : static void ProcedureType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4309              : {
    4310        59674 :   Expect (M2Reserved_proceduretok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4311        59674 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4312              :     {
    4313        44735 :       FormalTypeList (stopset0, stopset1, stopset2);
    4314              :     }
    4315        59674 : }
    4316              : 
    4317              : 
    4318              : /*
    4319              :    FormalTypeList := '(' ( ')' FormalReturn  | 
    4320              :                            ProcedureParameters ')' 
    4321              :                            FormalReturn  ) 
    4322              : 
    4323              :    first  symbols:lparatok
    4324              :    
    4325              :    cannot reachend
    4326              : */
    4327              : 
    4328        44735 : static void FormalTypeList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4329              : {
    4330        44735 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4331        44735 :   if (M2LexBuf_currenttoken == M2Reserved_rparatok)
    4332              :     {
    4333         5682 :       Expect (M2Reserved_rparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4334         5682 :       FormalReturn (stopset0, stopset1, stopset2);
    4335              :     }
    4336        39053 :   else if ((M2LexBuf_currenttoken == M2Reserved_arraytok) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    4337              :     {
    4338              :       /* avoid dangling else.  */
    4339        39053 :       ProcedureParameters (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4340        39053 :       Expect (M2Reserved_rparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4341        39053 :       FormalReturn (stopset0, stopset1, stopset2);
    4342              :     }
    4343              :   else
    4344              :     {
    4345              :       /* avoid dangling else.  */
    4346            0 :       ErrorArray ((const char *) "expecting one of: {%KVAR} {%K...} {%KARRAY} {%Kidentifier} {%K)}", 64);
    4347              :     }
    4348        44735 : }
    4349              : 
    4350              : 
    4351              : /*
    4352              :    FormalReturn := [ ':' OptReturnType  ] 
    4353              : 
    4354              :    first  symbols:colontok
    4355              :    
    4356              :    reachend
    4357              : */
    4358              : 
    4359      5012484 : static void FormalReturn (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4360              : {
    4361      5012484 :   if (M2LexBuf_currenttoken == M2Reserved_colontok)
    4362              :     {
    4363      3150564 :       Expect (M2Reserved_colontok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4364      3150564 :       OptReturnType (stopset0, stopset1, stopset2);
    4365              :     }
    4366      5012484 : }
    4367              : 
    4368              : 
    4369              : /*
    4370              :    OptReturnType := '[' Qualident ']'  | 
    4371              :                     Qualident 
    4372              : 
    4373              :    first  symbols:identtok, lsbratok
    4374              :    
    4375              :    cannot reachend
    4376              : */
    4377              : 
    4378      3150564 : static void OptReturnType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4379              : {
    4380      3150564 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    4381              :     {
    4382       133960 :       Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4383       133960 :       Qualident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4384       133960 :       Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    4385              :     }
    4386      3016604 :   else if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4387              :     {
    4388              :       /* avoid dangling else.  */
    4389      3016604 :       Qualident (stopset0, stopset1, stopset2);
    4390              :     }
    4391              :   else
    4392              :     {
    4393              :       /* avoid dangling else.  */
    4394            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%K[}", 38);
    4395              :     }
    4396      3150564 : }
    4397              : 
    4398              : 
    4399              : /*
    4400              :    ProcedureParameters := ProcedureParameter { ',' 
    4401              :                                                ProcedureParameter  } 
    4402              : 
    4403              :    first  symbols:identtok, arraytok, periodperiodperiodtok, vartok
    4404              :    
    4405              :    cannot reachend
    4406              : */
    4407              : 
    4408        39053 : static void ProcedureParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4409              : {
    4410        39053 :   ProcedureParameter (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4411       123242 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4412              :     {
    4413        45136 :       Expect (M2Reserved_commatok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4414        45136 :       ProcedureParameter (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4415              :     }
    4416              :    /* while  */
    4417        39053 : }
    4418              : 
    4419              : 
    4420              : /*
    4421              :    ProcedureParameter := '...'  | 'VAR' FormalType  | 
    4422              :                          FormalType 
    4423              : 
    4424              :    first  symbols:arraytok, identtok, vartok, periodperiodperiodtok
    4425              :    
    4426              :    cannot reachend
    4427              : */
    4428              : 
    4429        84189 : static void ProcedureParameter (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4430              : {
    4431        84189 :   if (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok)
    4432              :     {
    4433            0 :       Expect (M2Reserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
    4434              :     }
    4435        84189 :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    4436              :     {
    4437              :       /* avoid dangling else.  */
    4438         6504 :       Expect (M2Reserved_vartok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4439         6504 :       FormalType (stopset0, stopset1, stopset2);
    4440              :     }
    4441        77685 :   else if ((M2LexBuf_currenttoken == M2Reserved_arraytok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    4442              :     {
    4443              :       /* avoid dangling else.  */
    4444        77685 :       FormalType (stopset0, stopset1, stopset2);
    4445              :     }
    4446              :   else
    4447              :     {
    4448              :       /* avoid dangling else.  */
    4449            0 :       ErrorArray ((const char *) "expecting one of: {%KARRAY} {%Kidentifier} {%KVAR} {%K...}", 58);
    4450              :     }
    4451        84189 : }
    4452              : 
    4453              : 
    4454              : /*
    4455              :    VarIdent := Ident [ '[' ConstExpression ']'  ] 
    4456              : 
    4457              :    first  symbols:identtok
    4458              :    
    4459              :    cannot reachend
    4460              : */
    4461              : 
    4462      1698490 : static void VarIdent (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4463              : {
    4464      1698490 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4465      1698490 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    4466              :     {
    4467           54 :       Expect (M2Reserved_lsbratok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    4468           54 :       ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4469           54 :       Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    4470              :     }
    4471      1698490 : }
    4472              : 
    4473              : 
    4474              : /*
    4475              :    VariableDeclaration := VarIdentList ':' Type Alignment 
    4476              : 
    4477              :    first  symbols:identtok
    4478              :    
    4479              :    cannot reachend
    4480              : */
    4481              : 
    4482      1177932 : static void VariableDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4483              : {
    4484      1177932 :   VarIdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    4485      1177932 :   Expect (M2Reserved_colontok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4486      1177932 :   Type (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    4487      1177932 :   Alignment (stopset0, stopset1, stopset2);
    4488      1177932 : }
    4489              : 
    4490              : 
    4491              : /*
    4492              :    VarIdentList := VarIdent 
    4493              :                    % VAR
    4494              :                                                                                                      on: BOOLEAN ;
    4495              :                                                                                                      n : CARDINAL ;  %
    4496              :                    
    4497              :                    % on := IsAutoPushOn() ;
    4498              :                      IF on
    4499              :                      THEN
    4500              :                         n := 1
    4501              :                      END  %
    4502              :                    { ',' VarIdent 
    4503              :                      % IF on
    4504              :                        THEN
    4505              :                           INC(n)
    4506              :                        END  %
    4507              :                       } 
    4508              :                    % IF on
    4509              :                      THEN
    4510              :                         PushT(n)
    4511              :                      END  %
    4512              :                    
    4513              : 
    4514              :    first  symbols:identtok
    4515              :    
    4516              :    cannot reachend
    4517              : */
    4518              : 
    4519      1177932 : static void VarIdentList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4520              : {
    4521      1177932 :   bool on;
    4522      1177932 :   unsigned int n;
    4523              : 
    4524      1177932 :   VarIdent (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4525      1177932 :   on = M2Quads_IsAutoPushOn ();
    4526      1177932 :   if (on)
    4527              :     {
    4528      1177932 :       n = 1;
    4529              :     }
    4530      1698490 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4531              :     {
    4532       520558 :       Expect (M2Reserved_commatok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4533       520558 :       VarIdent (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4534       520558 :       if (on)
    4535              :         {
    4536            0 :           n += 1;
    4537              :         }
    4538              :     }
    4539              :    /* while  */
    4540      1177932 :   if (on)
    4541              :     {
    4542            0 :       M2Quads_PushT (n);
    4543              :     }
    4544      1177932 : }
    4545              : 
    4546              : 
    4547              : /*
    4548              :    Designator := Qualident { SubDesignator  } 
    4549              : 
    4550              :    first  symbols:identtok
    4551              :    
    4552              :    cannot reachend
    4553              : */
    4554              : 
    4555      7085696 : static void Designator (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4556              : {
    4557      7085696 :   Qualident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4558     15262993 :   while ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))))) != 0)))
    4559              :     {
    4560      1091601 :       SubDesignator (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))), stopset1, stopset2);
    4561              :     }
    4562              :    /* while  */
    4563      7085696 : }
    4564              : 
    4565              : 
    4566              : /*
    4567              :    SubDesignator := '.' Ident  | '[' ExpList ']'  | 
    4568              :                     '^' 
    4569              : 
    4570              :    first  symbols:uparrowtok, lsbratok, periodtok
    4571              :    
    4572              :    cannot reachend
    4573              : */
    4574              : 
    4575      1091601 : static void SubDesignator (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4576              : {
    4577      1091601 :   if (M2LexBuf_currenttoken == M2Reserved_periodtok)
    4578              :     {
    4579       298045 :       Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4580       298045 :       Ident (stopset0, stopset1, stopset2);
    4581              :     }
    4582       793556 :   else if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    4583              :     {
    4584              :       /* avoid dangling else.  */
    4585       335270 :       Expect (M2Reserved_lsbratok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4586       335270 :       ExpList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4587       335270 :       Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    4588              :     }
    4589       458286 :   else if (M2LexBuf_currenttoken == M2Reserved_uparrowtok)
    4590              :     {
    4591              :       /* avoid dangling else.  */
    4592       458286 :       Expect (M2Reserved_uparrowtok, stopset0, stopset1, stopset2);
    4593              :     }
    4594              :   else
    4595              :     {
    4596              :       /* avoid dangling else.  */
    4597            0 :       ErrorArray ((const char *) "expecting one of: {%K^} {%K[} {%K.}", 35);
    4598              :     }
    4599      1091601 : }
    4600              : 
    4601              : 
    4602              : /*
    4603              :    ExpList := Expression { ',' Expression  } 
    4604              : 
    4605              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    4606              :    
    4607              :    cannot reachend
    4608              : */
    4609              : 
    4610      8192579 : static void ExpList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4611              : {
    4612      8192579 :   Expression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4613     22002153 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    4614              :     {
    4615      5616995 :       Expect (M2Reserved_commatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4616      5616995 :       Expression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    4617              :     }
    4618              :    /* while  */
    4619      8192579 : }
    4620              : 
    4621              : 
    4622              : /*
    4623              :    Expression := SimpleExpression [ Relation SimpleExpression  ] 
    4624              : 
    4625              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, attributetok, plustok, minustok
    4626              :    
    4627              :    cannot reachend
    4628              : */
    4629              : 
    4630     23234109 : static void Expression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4631              : {
    4632     23234109 :   SimpleExpression (stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_intok-M2Reserved_arraytok))), stopset2);
    4633     23234109 :   if (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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))
    4634              :     {
    4635      2503504 :       Relation (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4636      2503504 :       SimpleExpression (stopset0, stopset1, stopset2);
    4637              :     }
    4638     23234109 : }
    4639              : 
    4640              : 
    4641              : /*
    4642              :    SimpleExpression := [ '+'  | '-'  ] Term { AddOperator 
    4643              :                                               Term  } 
    4644              : 
    4645              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok, minustok, plustok
    4646              :    
    4647              :    cannot reachend
    4648              : */
    4649              : 
    4650     25737613 : static void SimpleExpression (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4651              : {
    4652     25737613 :   if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok))))) != 0)))
    4653              :     {
    4654              :       /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    4655              :       /* seen optional [ | ] expression  */
    4656       128175 :       if (M2LexBuf_currenttoken == M2Reserved_plustok)
    4657              :         {
    4658          144 :           Expect (M2Reserved_plustok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4659              :         }
    4660       128031 :       else if (M2LexBuf_currenttoken == M2Reserved_minustok)
    4661              :         {
    4662              :           /* avoid dangling else.  */
    4663       128031 :           Expect (M2Reserved_minustok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4664              :         }
    4665              :       else
    4666              :         {
    4667              :           /* avoid dangling else.  */
    4668            0 :           ErrorArray ((const char *) "expecting one of: {%K-} {%K+}", 29);
    4669              :         }
    4670              :     }
    4671              :   /* end of optional [ | ] expression  */
    4672     25737613 :   Term (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    4673     52323975 :   while (((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))))) != 0))) || (M2LexBuf_currenttoken == M2Reserved_ortok))
    4674              :     {
    4675       848749 :       AddOperator (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4676       848749 :       Term (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_ortok-M2Reserved_arraytok))), stopset2);
    4677              :     }
    4678              :    /* while  */
    4679     25737613 : }
    4680              : 
    4681              : 
    4682              : /*
    4683              :    Term := Factor { MulOperator Factor  } 
    4684              : 
    4685              :    first  symbols:lcbratok, identtok, realtok, integertok, stringtok, lparatok, nottok, attributetok
    4686              :    
    4687              :    cannot reachend
    4688              : */
    4689              : 
    4690     26586362 : static void Term (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4691              : {
    4692     26586362 :   Factor (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ambersandtok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_timestok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_modtok-M2Reserved_arraytok)) | (1 << (M2Reserved_divtok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    4693     53960068 :   while ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))))) != 0)))) || (M2LexBuf_currenttoken == M2Reserved_remtok))
    4694              :     {
    4695       787344 :       MulOperator (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4696       787344 :       Factor (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_timestok-M2Reserved_eoftok)) | (1 << (M2Reserved_dividetok-M2Reserved_eoftok)) | (1 << (M2Reserved_andtok-M2Reserved_eoftok)) | (1 << (M2Reserved_ambersandtok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_divtok-M2Reserved_arraytok)) | (1 << (M2Reserved_modtok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_remtok-M2Reserved_unqualifiedtok))));
    4697              :     }
    4698              :    /* while  */
    4699     26586362 : }
    4700              : 
    4701              : 
    4702              : /*
    4703              :    Factor := Number  | string  | SetOrDesignatorOrFunction  | 
    4704              :              '(' Expression ')'  | 
    4705              :              'NOT' Factor  | ConstAttribute 
    4706              : 
    4707              :    first  symbols:identtok, lcbratok, attributetok, nottok, lparatok, stringtok, integertok, realtok
    4708              :    
    4709              :    cannot reachend
    4710              : */
    4711              : 
    4712     27373706 : static void Factor (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4713              : {
    4714     27509480 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok))))) != 0)))
    4715              :     {
    4716      2396408 :       Number (stopset0, stopset1, stopset2);
    4717              :     }
    4718     25113072 :   else if (M2LexBuf_currenttoken == M2Reserved_stringtok)
    4719              :     {
    4720              :       /* avoid dangling else.  */
    4721      1635753 :       string (stopset0, stopset1, stopset2);
    4722              :     }
    4723              :   else if ((M2LexBuf_currenttoken == M2Reserved_lcbratok) || (M2LexBuf_currenttoken == M2Reserved_identtok))
    4724              :     {
    4725              :       /* avoid dangling else.  */
    4726     21785374 :       SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
    4727              :     }
    4728              :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4729              :     {
    4730              :       /* avoid dangling else.  */
    4731      1556159 :       Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4732      1556159 :       Expression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4733      1556159 :       Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4734              :     }
    4735              :   else if (M2LexBuf_currenttoken == M2Reserved_nottok)
    4736              :     {
    4737              :       /* avoid dangling else.  */
    4738       135774 :       Expect (M2Reserved_nottok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4739       135774 :       Factor (stopset0, stopset1, stopset2);
    4740              :     }
    4741              :   else if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    4742              :     {
    4743              :       /* avoid dangling else.  */
    4744            0 :       ConstAttribute (stopset0, stopset1, stopset2);
    4745              :     }
    4746              :   else
    4747              :     {
    4748              :       /* avoid dangling else.  */
    4749           12 :       ErrorArray ((const char *) "expecting one of: {%K__ATTRIBUTE__} {%KNOT} {%K(} {%Kidentifier} {%K%{} {%Kstring} {%Kinteger number} {%Kreal number}", 117);
    4750              :     }
    4751     27373706 : }
    4752              : 
    4753              : 
    4754              : /*
    4755              :    SetOrDesignatorOrFunction := ( Qualident [ Constructor  | 
    4756              :                                               SimpleDes 
    4757              :                                               [ ActualParameters  ]  ]  | 
    4758              :                                   Constructor  ) 
    4759              : 
    4760              :    first  symbols:lcbratok, identtok
    4761              :    
    4762              :    cannot reachend
    4763              : */
    4764              : 
    4765     21785374 : static void SetOrDesignatorOrFunction (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4766              : {
    4767     21785374 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4768              :     {
    4769              :       /* avoid dangling else.  */
    4770     21785076 :       Qualident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lcbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4771     21785076 :       if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))))) != 0)))
    4772              :         {
    4773              :           /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    4774              :           /* seen optional [ | ] expression  */
    4775      6031880 :           if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    4776              :             {
    4777        29804 :               Constructor (stopset0, stopset1, stopset2);
    4778              :             }
    4779      6002076 :           else if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_uparrowtok-M2Reserved_eoftok))))) != 0)))
    4780              :             {
    4781              :               /* avoid dangling else.  */
    4782      6002076 :               SimpleDes (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4783      6002076 :               if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4784              :                 {
    4785      4659170 :                   ActualParameters (stopset0, stopset1, stopset2);
    4786              :                 }
    4787              :             }
    4788              :           else
    4789              :             {
    4790              :               /* avoid dangling else.  */
    4791            0 :               ErrorArray ((const char *) "expecting one of: {%K(} {%K.} {%K[} {%K^} {%K%{}", 48);
    4792              :             }
    4793              :         }
    4794              :       /* end of optional [ | ] expression  */
    4795              :     }
    4796          298 :   else if (M2LexBuf_currenttoken == M2Reserved_lcbratok)
    4797              :     {
    4798              :       /* avoid dangling else.  */
    4799          298 :       Constructor (stopset0, stopset1, stopset2);
    4800              :     }
    4801              :   else
    4802              :     {
    4803              :       /* avoid dangling else.  */
    4804            0 :       ErrorArray ((const char *) "expecting one of: {%K%{} {%Kidentifier}", 39);
    4805              :     }
    4806     21785374 : }
    4807              : 
    4808              : 
    4809              : /*
    4810              :    SimpleDes := { '.' Ident  | '[' ExpList ']'  | 
    4811              :                   '^'  } 
    4812              : 
    4813              :    first  symbols:uparrowtok, lsbratok, periodtok
    4814              :    
    4815              :    reachend
    4816              : */
    4817              : 
    4818      6002076 : static void SimpleDes (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4819              : {
    4820      6002076 :   if ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))))) != 0)))
    4821              :     {
    4822              :       /* seen optional { | } expression  */
    4823      3792410 :       while ((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))))) != 0)))
    4824              :         {
    4825      2447286 :           if (M2LexBuf_currenttoken == M2Reserved_periodtok)
    4826              :             {
    4827      1000234 :               Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4828      1000234 :               Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4829              :             }
    4830      1447052 :           else if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    4831              :             {
    4832              :               /* avoid dangling else.  */
    4833       545424 :               Expect (M2Reserved_lsbratok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4834       545424 :               ExpList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    4835       545424 :               Expect (M2Reserved_rsbratok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4836              :             }
    4837       901628 :           else if (M2LexBuf_currenttoken == M2Reserved_uparrowtok)
    4838              :             {
    4839              :               /* avoid dangling else.  */
    4840       901628 :               Expect (M2Reserved_uparrowtok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_uparrowtok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok)) | (1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    4841              :             }
    4842              :         }
    4843              :       /* end of optional { | } expression  */
    4844              :     }
    4845      6002076 : }
    4846              : 
    4847              : 
    4848              : /*
    4849              :    ActualParameters := '(' [ ExpList  ] ')' 
    4850              : 
    4851              :    first  symbols:lparatok
    4852              :    
    4853              :    cannot reachend
    4854              : */
    4855              : 
    4856      7430998 : static void ActualParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4857              : {
    4858      7430998 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4859      7430998 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    4860              :     {
    4861      7304607 :       ExpList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4862              :     }
    4863      7430998 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    4864      7430998 : }
    4865              : 
    4866              : 
    4867              : /*
    4868              :    Statement := [ AssignmentOrProcedureCall  | 
    4869              :                   IfStatement  | CaseStatement  | 
    4870              :                   WhileStatement  | 
    4871              :                   RepeatStatement  | 
    4872              :                   LoopStatement  | ForStatement  | 
    4873              :                   WithStatement  | AsmStatement  | 
    4874              :                   'EXIT'  | 'RETURN' [ Expression  ]  | 
    4875              :                   RetryStatement  ] 
    4876              : 
    4877              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok
    4878              :    
    4879              :    reachend
    4880              : */
    4881              : 
    4882     11201076 : static void Statement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4883              : {
    4884     11201076 :   if ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_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))))
    4885              :     {
    4886              :       /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    4887              :       /* seen optional [ | ] expression  */
    4888     11025523 :       if (M2LexBuf_currenttoken == M2Reserved_identtok)
    4889              :         {
    4890      6890268 :           AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
    4891              :         }
    4892              :       else if (M2LexBuf_currenttoken == M2Reserved_iftok)
    4893              :         {
    4894              :           /* avoid dangling else.  */
    4895      1934863 :           IfStatement (stopset0, stopset1, stopset2);
    4896              :         }
    4897              :       else if (M2LexBuf_currenttoken == M2Reserved_casetok)
    4898              :         {
    4899              :           /* avoid dangling else.  */
    4900        42088 :           CaseStatement (stopset0, stopset1, stopset2);
    4901              :         }
    4902              :       else if (M2LexBuf_currenttoken == M2Reserved_whiletok)
    4903              :         {
    4904              :           /* avoid dangling else.  */
    4905       380134 :           WhileStatement (stopset0, stopset1, stopset2);
    4906              :         }
    4907              :       else if (M2LexBuf_currenttoken == M2Reserved_repeattok)
    4908              :         {
    4909              :           /* avoid dangling else.  */
    4910        71630 :           RepeatStatement (stopset0, stopset1, stopset2);
    4911              :         }
    4912              :       else if (M2LexBuf_currenttoken == M2Reserved_looptok)
    4913              :         {
    4914              :           /* avoid dangling else.  */
    4915         8698 :           LoopStatement (stopset0, stopset1, stopset2);
    4916              :         }
    4917              :       else if (M2LexBuf_currenttoken == M2Reserved_fortok)
    4918              :         {
    4919              :           /* avoid dangling else.  */
    4920        43490 :           ForStatement (stopset0, stopset1, stopset2);
    4921              :         }
    4922              :       else if (M2LexBuf_currenttoken == M2Reserved_withtok)
    4923              :         {
    4924              :           /* avoid dangling else.  */
    4925       195428 :           WithStatement (stopset0, stopset1, stopset2);
    4926              :         }
    4927              :       else if (M2LexBuf_currenttoken == M2Reserved_asmtok)
    4928              :         {
    4929              :           /* avoid dangling else.  */
    4930           27 :           AsmStatement (stopset0, stopset1, stopset2);
    4931              :         }
    4932              :       else if (M2LexBuf_currenttoken == M2Reserved_exittok)
    4933              :         {
    4934              :           /* avoid dangling else.  */
    4935          106 :           Expect (M2Reserved_exittok, stopset0, stopset1, stopset2);
    4936              :         }
    4937              :       else if (M2LexBuf_currenttoken == M2Reserved_returntok)
    4938              :         {
    4939              :           /* avoid dangling else.  */
    4940      1458617 :           Expect (M2Reserved_returntok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4941      1458617 :           if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    4942              :             {
    4943      1434965 :               Expression (stopset0, stopset1, stopset2);
    4944              :             }
    4945              :         }
    4946              :       else if (M2LexBuf_currenttoken == M2Reserved_retrytok)
    4947              :         {
    4948              :           /* avoid dangling else.  */
    4949          174 :           RetryStatement (stopset0, stopset1, stopset2);
    4950              :         }
    4951              :       else
    4952              :         {
    4953              :           /* avoid dangling else.  */
    4954            0 :           ErrorArray ((const char *) "expecting one of: {%KRETRY} {%KRETURN} {%KEXIT} {%KASM} {%KWITH} {%KFOR} {%KLOOP} {%KREPEAT} {%KWHILE} {%KCASE} {%KIF} {%Kidentifier}", 133);
    4955              :         }
    4956              :     }
    4957              :   /* end of optional [ | ] expression  */
    4958     11201076 : }
    4959              : 
    4960              : 
    4961              : /*
    4962              :    RetryStatement := 'RETRY' 
    4963              : 
    4964              :    first  symbols:retrytok
    4965              :    
    4966              :    cannot reachend
    4967              : */
    4968              : 
    4969          174 : static void RetryStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4970              : {
    4971          174 :   Expect (M2Reserved_retrytok, stopset0, stopset1, stopset2);
    4972          174 : }
    4973              : 
    4974              : 
    4975              : /*
    4976              :    AssignmentOrProcedureCall := Designator ( ':=' Expression  | 
    4977              :                                              ActualParameters  | 
    4978              :                                              
    4979              :                                              %  epsilon   %
    4980              :                                               ) 
    4981              : 
    4982              :    first  symbols:identtok
    4983              :    
    4984              :    cannot reachend
    4985              : */
    4986              : 
    4987      6890268 : static void AssignmentOrProcedureCall (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    4988              : {
    4989      6890268 :   Designator (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_becomestok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    4990      6890268 :   if (M2LexBuf_currenttoken == M2Reserved_becomestok)
    4991              :     {
    4992      3773163 :       Expect (M2Reserved_becomestok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    4993      3773163 :       Expression (stopset0, stopset1, stopset2);
    4994              :     }
    4995      3117105 :   else if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    4996              :     {
    4997              :       /* avoid dangling else.  */
    4998      2771828 :       ActualParameters (stopset0, stopset1, stopset2);
    4999              :     }
    5000              :   /* epsilon  */
    5001      6890268 : }
    5002              : 
    5003              : 
    5004              : /*
    5005              :    StatementSequence := Statement { ';' Statement  } 
    5006              : 
    5007              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok
    5008              :    
    5009              :    reachend
    5010              : */
    5011              : 
    5012      5631253 : static void StatementSequence (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5013              : {
    5014      5631253 :   Statement (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5015     16832329 :   while (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    5016              :     {
    5017      5569823 :       Expect (M2Reserved_semicolontok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5018      5569823 :       Statement (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5019              :     }
    5020              :    /* while  */
    5021      5631253 : }
    5022              : 
    5023              : 
    5024              : /*
    5025              :    IfStatement := 'IF' Expression 'THEN' StatementSequence 
    5026              :                   { 'ELSIF' Expression 'THEN' StatementSequence  } 
    5027              :                   [ 'ELSE' StatementSequence  ] 'END' 
    5028              : 
    5029              :    first  symbols:iftok
    5030              :    
    5031              :    cannot reachend
    5032              : */
    5033              : 
    5034      1934863 : static void IfStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5035              : {
    5036      1934863 :   Expect (M2Reserved_iftok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5037      1934863 :   Expression (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_thentok-M2Reserved_unqualifiedtok))));
    5038      1934863 :   Expect (M2Reserved_thentok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5039      1934863 :   StatementSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_elsiftok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5040      4014246 :   while (M2LexBuf_currenttoken == M2Reserved_elsiftok)
    5041              :     {
    5042       144520 :       Expect (M2Reserved_elsiftok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5043       144520 :       Expression (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_thentok-M2Reserved_unqualifiedtok))));
    5044       144520 :       Expect (M2Reserved_thentok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5045       144520 :       StatementSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsiftok-M2Reserved_arraytok))), stopset2);
    5046              :     }
    5047              :    /* while  */
    5048      1934863 :   if (M2LexBuf_currenttoken == M2Reserved_elsetok)
    5049              :     {
    5050       781436 :       Expect (M2Reserved_elsetok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5051       781436 :       StatementSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5052              :     }
    5053      1934863 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5054      1934863 : }
    5055              : 
    5056              : 
    5057              : /*
    5058              :    CaseStatement := 'CASE' Expression 'OF' Case { '|' 
    5059              :                                                   Case  } 
    5060              :                     [ 'ELSE' StatementSequence  ] 'END' 
    5061              : 
    5062              :    first  symbols:casetok
    5063              :    
    5064              :    cannot reachend
    5065              : */
    5066              : 
    5067        42088 : static void CaseStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5068              : {
    5069        42088 :   Expect (M2Reserved_casetok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5070        42088 :   Expression (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    5071        42088 :   Expect (M2Reserved_oftok, stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    5072        42088 :   Case (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5073       154094 :   while (M2LexBuf_currenttoken == M2Reserved_bartok)
    5074              :     {
    5075        69918 :       Expect (M2Reserved_bartok, stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok)) | (1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    5076        69918 :       Case (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_bartok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_elsetok-M2Reserved_arraytok))), stopset2);
    5077              :     }
    5078              :    /* while  */
    5079        42088 :   if (M2LexBuf_currenttoken == M2Reserved_elsetok)
    5080              :     {
    5081        27646 :       Expect (M2Reserved_elsetok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5082        27646 :       StatementSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5083              :     }
    5084        42088 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5085        42088 : }
    5086              : 
    5087              : 
    5088              : /*
    5089              :    Case := [ CaseLabelList ':' StatementSequence  ] 
    5090              : 
    5091              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    5092              :    
    5093              :    reachend
    5094              : */
    5095              : 
    5096       112006 : static void Case (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5097              : {
    5098       112006 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_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))))
    5099              :     {
    5100       111900 :       CaseLabelList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5101       111900 :       Expect (M2Reserved_colontok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5102       111900 :       StatementSequence (stopset0, stopset1, stopset2);
    5103              :     }
    5104       112006 : }
    5105              : 
    5106              : 
    5107              : /*
    5108              :    WhileStatement := 'WHILE' Expression 'DO' StatementSequence 
    5109              :                      'END' 
    5110              : 
    5111              :    first  symbols:whiletok
    5112              :    
    5113              :    cannot reachend
    5114              : */
    5115              : 
    5116       380134 : static void WhileStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5117              : {
    5118       380134 :   Expect (M2Reserved_whiletok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5119       380134 :   Expression (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    5120       380134 :   Expect (M2Reserved_dotok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5121       380134 :   StatementSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5122       380134 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5123       380134 : }
    5124              : 
    5125              : 
    5126              : /*
    5127              :    RepeatStatement := 'REPEAT' StatementSequence 'UNTIL' 
    5128              :                       Expression 
    5129              : 
    5130              :    first  symbols:repeattok
    5131              :    
    5132              :    cannot reachend
    5133              : */
    5134              : 
    5135        71630 : static void RepeatStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5136              : {
    5137        71630 :   Expect (M2Reserved_repeattok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5138        71630 :   StatementSequence (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_untiltok-M2Reserved_unqualifiedtok))));
    5139        71630 :   Expect (M2Reserved_untiltok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5140        71630 :   Expression (stopset0, stopset1, stopset2);
    5141        71630 : }
    5142              : 
    5143              : 
    5144              : /*
    5145              :    ForStatement := 'FOR' Ident ':=' Expression 'TO' 
    5146              :                    Expression [ 'BY' ConstExpression  ] 
    5147              :                    'DO' StatementSequence 'END' 
    5148              : 
    5149              :    first  symbols:fortok
    5150              :    
    5151              :    cannot reachend
    5152              : */
    5153              : 
    5154        43490 : static void ForStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5155              : {
    5156        43490 :   Expect (M2Reserved_fortok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5157        43490 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_becomestok-M2Reserved_eoftok))), stopset1, stopset2);
    5158        43490 :   Expect (M2Reserved_becomestok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5159        43490 :   Expression (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_totok-M2Reserved_unqualifiedtok))));
    5160        43490 :   Expect (M2Reserved_totok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5161        43490 :   Expression (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_bytok-M2Reserved_arraytok)) | (1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    5162        43490 :   if (M2LexBuf_currenttoken == M2Reserved_bytok)
    5163              :     {
    5164          366 :       Expect (M2Reserved_bytok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    5165          366 :       ConstExpression (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    5166              :     }
    5167        43490 :   Expect (M2Reserved_dotok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5168        43490 :   StatementSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5169        43490 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5170        43490 : }
    5171              : 
    5172              : 
    5173              : /*
    5174              :    LoopStatement := 'LOOP' StatementSequence 'END' 
    5175              : 
    5176              :    first  symbols:looptok
    5177              :    
    5178              :    cannot reachend
    5179              : */
    5180              : 
    5181         8698 : static void LoopStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5182              : {
    5183         8698 :   Expect (M2Reserved_looptok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5184         8698 :   StatementSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5185         8698 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5186         8698 : }
    5187              : 
    5188              : 
    5189              : /*
    5190              :    WithStatement := 'WITH' Designator 'DO' StatementSequence 
    5191              :                     'END' 
    5192              : 
    5193              :    first  symbols:withtok
    5194              :    
    5195              :    cannot reachend
    5196              : */
    5197              : 
    5198       195428 : static void WithStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5199              : {
    5200       195428 :   Expect (M2Reserved_withtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5201       195428 :   Designator (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_dotok-M2Reserved_arraytok))), stopset2);
    5202       195428 :   Expect (M2Reserved_dotok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5203       195428 :   StatementSequence (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5204       195428 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5205       195428 : }
    5206              : 
    5207              : 
    5208              : /*
    5209              :    ProcedureDeclaration := 
    5210              :                            % VAR top: CARDINAL ;  %
    5211              :                            
    5212              :                            % top := Top ()  %
    5213              :                            ProcedureHeading ';' PostProcedureHeading 
    5214              :                            
    5215              :                            % BlockAssert (top = Top ())  %
    5216              :                            
    5217              : 
    5218              :    first  symbols:proceduretok
    5219              :    
    5220              :    cannot reachend
    5221              : */
    5222              : 
    5223      1887721 : static void ProcedureDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5224              : {
    5225      1887721 :   unsigned int top;
    5226              : 
    5227      1887721 :   top = M2Quads_Top ();
    5228      1887721 :   ProcedureHeading (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5229      1887721 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5230      1887721 :   PostProcedureHeading (stopset0, stopset1, stopset2);
    5231      1887721 :   BlockAssert (top == (M2Quads_Top ()));
    5232      1887715 : }
    5233              : 
    5234              : 
    5235              : /*
    5236              :    PostProcedureHeading := ProperProcedure  | 
    5237              :                            ForwardDeclaration 
    5238              : 
    5239              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok, forwardtok
    5240              :    
    5241              :    cannot reachend
    5242              : */
    5243              : 
    5244      1887721 : static void PostProcedureHeading (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5245              : {
    5246      1887721 :   if ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    5247              :     {
    5248      1887655 :       ProperProcedure (stopset0, stopset1, stopset2);
    5249              :     }
    5250           66 :   else if (M2LexBuf_currenttoken == M2Reserved_forwardtok)
    5251              :     {
    5252              :       /* avoid dangling else.  */
    5253          120 :       ForwardDeclaration (stopset0, stopset1, stopset2);
    5254              :     }
    5255              :   else
    5256              :     {
    5257              :       /* avoid dangling else.  */
    5258            6 :       ErrorArray ((const char *) "expecting one of: {%KFORWARD} {%KEND} {%KBEGIN} {%KCONST} {%KTYPE} {%KVAR} {%KPROCEDURE} {%KMODULE}", 99);
    5259              :     }
    5260      1887721 : }
    5261              : 
    5262              : 
    5263              : /*
    5264              :    ForwardDeclaration := 'FORWARD' 
    5265              :                          % EndForward  %
    5266              :                          
    5267              : 
    5268              :    first  symbols:forwardtok
    5269              :    
    5270              :    cannot reachend
    5271              : */
    5272              : 
    5273           60 : static void ForwardDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5274              : {
    5275           60 :   Expect (M2Reserved_forwardtok, stopset0, stopset1, stopset2);
    5276           60 :   P0SymBuild_EndForward ();
    5277           60 : }
    5278              : 
    5279              : 
    5280              : /*
    5281              :    ProperProcedure := ProcedureBlock 
    5282              :                       % PushAutoOn  %
    5283              :                       Ident 
    5284              :                       % EndProcedure  %
    5285              :                       
    5286              :                       % PopAuto  %
    5287              :                       
    5288              : 
    5289              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok, begintok, endtok
    5290              :    
    5291              :    cannot reachend
    5292              : */
    5293              : 
    5294      1887655 : static void ProperProcedure (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5295              : {
    5296      1887655 :   ProcedureBlock (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5297      1887655 :   M2Quads_PushAutoOn ();
    5298      1887655 :   Ident (stopset0, stopset1, stopset2);
    5299      1887655 :   P0SymBuild_EndProcedure ();
    5300      1887655 :   M2Quads_PopAuto ();
    5301      1887655 : }
    5302              : 
    5303              : 
    5304              : /*
    5305              :    DefineBuiltinProcedure := [ '__ATTRIBUTE__' '__BUILTIN__' 
    5306              :                                '(' '(' Ident ')' ')'  | 
    5307              :                                '__INLINE__'  ] 
    5308              : 
    5309              :    first  symbols:inlinetok, attributetok
    5310              :    
    5311              :    reachend
    5312              : */
    5313              : 
    5314      1887721 : static void DefineBuiltinProcedure (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5315              : {
    5316      1887721 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok))))) != 0)))
    5317              :     {
    5318              :       /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    5319              :       /* seen optional [ | ] expression  */
    5320       440978 :       if (M2LexBuf_currenttoken == M2Reserved_attributetok)
    5321              :         {
    5322       440978 :           Expect (M2Reserved_attributetok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok))));
    5323       440978 :           Expect (M2Reserved_builtintok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5324       440978 :           Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5325       440978 :           Expect (M2Reserved_lparatok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5326       440978 :           Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5327       440978 :           Expect (M2Reserved_rparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5328       440978 :           Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    5329              :         }
    5330            0 :       else if (M2LexBuf_currenttoken == M2Reserved_inlinetok)
    5331              :         {
    5332              :           /* avoid dangling else.  */
    5333            0 :           Expect (M2Reserved_inlinetok, stopset0, stopset1, stopset2);
    5334              :         }
    5335              :       else
    5336              :         {
    5337              :           /* avoid dangling else.  */
    5338            0 :           ErrorArray ((const char *) "expecting one of: {%K__INLINE__} {%K__ATTRIBUTE__}", 50);
    5339              :         }
    5340              :     }
    5341              :   /* end of optional [ | ] expression  */
    5342      1887721 : }
    5343              : 
    5344              : 
    5345              : /*
    5346              :    ProcedureHeading := 'PROCEDURE' 
    5347              :                        % M2Error.DefaultProcedure  %
    5348              :                        DefineBuiltinProcedure ( 
    5349              :                                                 % PushAutoOn  %
    5350              :                                                 Ident 
    5351              :                                                 
    5352              :                                                 % RegisterProcedure  %
    5353              :                                                 
    5354              :                                                 % PopAuto  %
    5355              :                                                 [ FormalParameters  ] 
    5356              :                                                 AttributeNoReturn  ) 
    5357              : 
    5358              :    first  symbols:proceduretok
    5359              :    
    5360              :    cannot reachend
    5361              : */
    5362              : 
    5363      1887721 : static void ProcedureHeading (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5364              : {
    5365      1887721 :   Expect (M2Reserved_proceduretok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5366      1887721 :   M2Error_DefaultProcedure ();
    5367      1887721 :   DefineBuiltinProcedure (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5368      1887721 :   M2Quads_PushAutoOn ();
    5369      1887721 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5370      1887721 :   P0SymBuild_RegisterProcedure ();
    5371      1887721 :   M2Quads_PopAuto ();
    5372      1887721 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5373              :     {
    5374      1783509 :       FormalParameters (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5375              :     }
    5376      1887721 :   AttributeNoReturn (stopset0, stopset1, stopset2);
    5377      1887721 : }
    5378              : 
    5379              : 
    5380              : /*
    5381              :    AttributeNoReturn := [ ''  ] 
    5382              : 
    5383              :    first  symbols:ldirectivetok
    5384              :    
    5385              :    reachend
    5386              : */
    5387              : 
    5388      5176922 : static void AttributeNoReturn (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5389              : {
    5390      5176922 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    5391              :     {
    5392       473477 :       Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5393       473477 :       Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5394       473477 :       Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    5395              :     }
    5396      5176922 : }
    5397              : 
    5398              : 
    5399              : /*
    5400              :    AttributeUnused := [ ''  ] 
    5401              : 
    5402              :    first  symbols:ldirectivetok
    5403              :    
    5404              :    reachend
    5405              : */
    5406              : 
    5407            0 : static void AttributeUnused (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5408              : {
    5409            0 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    5410              :     {
    5411            0 :       Expect (M2Reserved_ldirectivetok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5412            0 :       Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rdirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5413            0 :       Expect (M2Reserved_rdirectivetok, stopset0, stopset1, stopset2);
    5414              :     }
    5415            0 : }
    5416              : 
    5417              : 
    5418              : /*
    5419              :    Builtin := [ '__BUILTIN__' 
    5420              :                 % PutModuleContainsBuiltin  %
    5421              :                  | '__INLINE__'  ] 
    5422              : 
    5423              :    first  symbols:inlinetok, builtintok
    5424              :    
    5425              :    reachend
    5426              : */
    5427              : 
    5428      3289201 : static void Builtin (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5429              : {
    5430      3289201 :   if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok))))) != 0)))
    5431              :     {
    5432              :       /* avoid gcc warning by using compound statement even if not strictly necessary.  */
    5433              :       /* seen optional [ | ] expression  */
    5434       440526 :       if (M2LexBuf_currenttoken == M2Reserved_builtintok)
    5435              :         {
    5436       440526 :           Expect (M2Reserved_builtintok, stopset0, stopset1, stopset2);
    5437       440526 :           SymbolTable_PutModuleContainsBuiltin ();
    5438              :         }
    5439            0 :       else if (M2LexBuf_currenttoken == M2Reserved_inlinetok)
    5440              :         {
    5441              :           /* avoid dangling else.  */
    5442            0 :           Expect (M2Reserved_inlinetok, stopset0, stopset1, stopset2);
    5443              :         }
    5444              :       else
    5445              :         {
    5446              :           /* avoid dangling else.  */
    5447            0 :           ErrorArray ((const char *) "expecting one of: {%K__INLINE__} {%K__BUILTIN__}", 48);
    5448              :         }
    5449              :     }
    5450              :   /* end of optional [ | ] expression  */
    5451      3289201 : }
    5452              : 
    5453              : 
    5454              : /*
    5455              :    DefProcedureHeading := 'PROCEDURE' 
    5456              :                           % M2Error.DefaultProcedure  %
    5457              :                           Builtin ( Ident [ DefFormalParameters  ] 
    5458              :                                     AttributeNoReturn  ) 
    5459              :                           
    5460              :                           % M2Error.LeaveErrorScope  %
    5461              :                           
    5462              : 
    5463              :    first  symbols:proceduretok
    5464              :    
    5465              :    cannot reachend
    5466              : */
    5467              : 
    5468      3289201 : static void DefProcedureHeading (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5469              : {
    5470      3289201 :   Expect (M2Reserved_proceduretok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_inlinetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_builtintok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5471      3289201 :   M2Error_DefaultProcedure ();
    5472      3289201 :   Builtin (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5473      3289201 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5474      3289201 :   if (M2LexBuf_currenttoken == M2Reserved_lparatok)
    5475              :     {
    5476      3184240 :       DefFormalParameters (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5477              :     }
    5478      3289201 :   AttributeNoReturn (stopset0, stopset1, stopset2);
    5479      3289201 :   M2Error_LeaveErrorScope ();
    5480      3289201 : }
    5481              : 
    5482              : 
    5483              : /*
    5484              :    ProcedureBlock := { Declaration  } [ 'BEGIN' BlockBody  ] 
    5485              :                      'END' 
    5486              : 
    5487              :    first  symbols:proceduretok, moduletok, consttok, typetok, vartok, endtok, begintok
    5488              :    
    5489              :    cannot reachend
    5490              : */
    5491              : 
    5492      1887655 : static void ProcedureBlock (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5493              : {
    5494      2605005 :   while ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    5495              :     {
    5496       717350 :       Declaration (stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5497              :     }
    5498              :    /* while  */
    5499      1887655 :   if (M2LexBuf_currenttoken == M2Reserved_begintok)
    5500              :     {
    5501      1882081 :       Expect (M2Reserved_begintok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5502      1882081 :       BlockBody (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5503              :     }
    5504      1887655 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5505      1887655 : }
    5506              : 
    5507              : 
    5508              : /*
    5509              :    Block := { Declaration  } InitialBlock FinalBlock 
    5510              :             'END' 
    5511              : 
    5512              :    first  symbols:proceduretok, moduletok, finallytok, begintok, consttok, typetok, vartok, endtok
    5513              :    
    5514              :    cannot reachend
    5515              : */
    5516              : 
    5517        83247 : static void Block (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5518              : {
    5519      2080076 :   while ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    5520              :     {
    5521      1996841 :       Declaration (stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5522              :     }
    5523              :    /* while  */
    5524        83235 :   InitialBlock (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_finallytok-M2Reserved_arraytok))), stopset2);
    5525        83235 :   FinalBlock (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok))), stopset2);
    5526        83235 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2);
    5527        83235 : }
    5528              : 
    5529              : 
    5530              : /*
    5531              :    InitialBlock := [ 'BEGIN' BlockBody  ] 
    5532              : 
    5533              :    first  symbols:begintok
    5534              :    
    5535              :    reachend
    5536              : */
    5537              : 
    5538        83235 : static void InitialBlock (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5539              : {
    5540        83235 :   if (M2LexBuf_currenttoken == M2Reserved_begintok)
    5541              :     {
    5542        43227 :       Expect (M2Reserved_begintok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5543        43227 :       BlockBody (stopset0, stopset1, stopset2);
    5544              :     }
    5545        83235 : }
    5546              : 
    5547              : 
    5548              : /*
    5549              :    FinalBlock := [ 'FINALLY' BlockBody  ] 
    5550              : 
    5551              :    first  symbols:finallytok
    5552              :    
    5553              :    reachend
    5554              : */
    5555              : 
    5556        83235 : static void FinalBlock (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5557              : {
    5558        83235 :   if (M2LexBuf_currenttoken == M2Reserved_finallytok)
    5559              :     {
    5560         5972 :       Expect (M2Reserved_finallytok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5561         5972 :       BlockBody (stopset0, stopset1, stopset2);
    5562              :     }
    5563        83235 : }
    5564              : 
    5565              : 
    5566              : /*
    5567              :    BlockBody := NormalPart [ 'EXCEPT' ExceptionalPart  ] 
    5568              : 
    5569              :    first  symbols:identtok, iftok, casetok, whiletok, repeattok, looptok, fortok, withtok, asmtok, retrytok, semicolontok, exittok, returntok, excepttok
    5570              :    
    5571              :    reachend
    5572              : */
    5573              : 
    5574      1931280 : static void BlockBody (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5575              : {
    5576      3862560 :   NormalPart (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_excepttok-M2Reserved_arraytok))), stopset2);
    5577      1931280 :   if (M2LexBuf_currenttoken == M2Reserved_excepttok)
    5578              :     {
    5579          228 :       Expect (M2Reserved_excepttok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_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))));
    5580          228 :       ExceptionalPart (stopset0, stopset1, stopset2);
    5581              :     }
    5582      1931280 : }
    5583              : 
    5584              : 
    5585              : /*
    5586              :    NormalPart := StatementSequence 
    5587              : 
    5588              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    5589              :    
    5590              :    reachend
    5591              : */
    5592              : 
    5593      1931280 : static void NormalPart (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5594              : {
    5595      1931280 :   StatementSequence (stopset0, stopset1, stopset2);
    5596            0 : }
    5597              : 
    5598              : 
    5599              : /*
    5600              :    ExceptionalPart := StatementSequence 
    5601              : 
    5602              :    first  symbols:retrytok, asmtok, withtok, fortok, looptok, repeattok, whiletok, casetok, iftok, identtok, returntok, exittok, semicolontok
    5603              :    
    5604              :    reachend
    5605              : */
    5606              : 
    5607          228 : static void ExceptionalPart (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5608              : {
    5609          228 :   StatementSequence (stopset0, stopset1, stopset2);
    5610          228 : }
    5611              : 
    5612              : 
    5613              : /*
    5614              :    Declaration := 'CONST' { ConstantDeclaration ';'  }  | 
    5615              :                   'TYPE' { TypeDeclaration ';'  }  | 
    5616              :                   'VAR' { VariableDeclaration ';'  }  | 
    5617              :                   ProcedureDeclaration ';'  | 
    5618              :                   ModuleDeclaration ';' 
    5619              : 
    5620              :    first  symbols:moduletok, proceduretok, vartok, typetok, consttok
    5621              :    
    5622              :    cannot reachend
    5623              : */
    5624              : 
    5625      2714191 : static void Declaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5626              : {
    5627      2714191 :   if (M2LexBuf_currenttoken == M2Reserved_consttok)
    5628              :     {
    5629        45558 :       Expect (M2Reserved_consttok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5630       194916 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    5631              :         {
    5632       103800 :           ConstantDeclaration (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5633       103800 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5634              :         }
    5635              :        /* while  */
    5636              :     }
    5637              :   else if (M2LexBuf_currenttoken == M2Reserved_typetok)
    5638              :     {
    5639              :       /* avoid dangling else.  */
    5640        33729 :       Expect (M2Reserved_typetok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5641       184966 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    5642              :         {
    5643       117508 :           TypeDeclaration (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5644       117508 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5645              :         }
    5646              :        /* while  */
    5647              :     }
    5648              :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    5649              :     {
    5650              :       /* avoid dangling else.  */
    5651       746749 :       Expect (M2Reserved_vartok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5652      2667106 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    5653              :         {
    5654      1173608 :           VariableDeclaration (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5655      1173608 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5656              :         }
    5657              :        /* while  */
    5658              :     }
    5659              :   else if (M2LexBuf_currenttoken == M2Reserved_proceduretok)
    5660              :     {
    5661              :       /* avoid dangling else.  */
    5662      1887721 :       ProcedureDeclaration (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5663      1887715 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    5664              :     }
    5665              :   else if (M2LexBuf_currenttoken == M2Reserved_moduletok)
    5666              :     {
    5667              :       /* avoid dangling else.  */
    5668          434 :       ModuleDeclaration (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5669          428 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    5670              :     }
    5671              :   else
    5672              :     {
    5673              :       /* avoid dangling else.  */
    5674            0 :       ErrorArray ((const char *) "expecting one of: {%KMODULE} {%KPROCEDURE} {%KVAR} {%KTYPE} {%KCONST}", 69);
    5675              :     }
    5676      2714179 : }
    5677              : 
    5678              : 
    5679              : /*
    5680              :    DefFormalParameters := '(' [ DefMultiFPSection  ] 
    5681              :                           ')' FormalReturn 
    5682              : 
    5683              :    first  symbols:lparatok
    5684              :    
    5685              :    cannot reachend
    5686              : */
    5687              : 
    5688      3184240 : static void DefFormalParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5689              : {
    5690      3184240 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5691      3184240 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    5692              :     {
    5693      3017187 :       DefMultiFPSection (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5694              :     }
    5695      3184240 :   Expect (M2Reserved_rparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5696      3184240 :   FormalReturn (stopset0, stopset1, stopset2);
    5697      3184240 : }
    5698              : 
    5699              : 
    5700              : /*
    5701              :    DefMultiFPSection := DefExtendedFP  | 
    5702              :                         FPSection [ ';' DefMultiFPSection  ] 
    5703              : 
    5704              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    5705              :    
    5706              :    cannot reachend
    5707              : */
    5708              : 
    5709      3017187 : static void DefMultiFPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5710              : {
    5711      5434895 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok))
    5712              :     {
    5713        26343 :       DefExtendedFP (stopset0, stopset1, stopset2);
    5714              :     }
    5715      5408552 :   else if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0)))
    5716              :     {
    5717              :       /* avoid dangling else.  */
    5718      5408552 :       FPSection (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5719      5408552 :       if (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    5720              :         {
    5721      2417708 :           Expect (M2Reserved_semicolontok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5722      2417708 :           DefMultiFPSection (stopset0, stopset1, stopset2);
    5723              :         }
    5724              :     }
    5725              :   else
    5726              :     {
    5727              :       /* avoid dangling else.  */
    5728            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%KVAR} {%K...} {%K[}", 54);
    5729              :     }
    5730      3017187 : }
    5731              : 
    5732              : 
    5733              : /*
    5734              :    FormalParameters := '(' [ MultiFPSection  ] ')' 
    5735              :                        FormalReturn 
    5736              : 
    5737              :    first  symbols:lparatok
    5738              :    
    5739              :    cannot reachend
    5740              : */
    5741              : 
    5742      1783509 : static void FormalParameters (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5743              : {
    5744      1783509 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5745      1783509 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))))) != 0))))
    5746              :     {
    5747      1718746 :       MultiFPSection (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    5748              :     }
    5749      1783509 :   Expect (M2Reserved_rparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5750      1783509 :   FormalReturn (stopset0, stopset1, stopset2);
    5751      1783509 : }
    5752              : 
    5753              : 
    5754              : /*
    5755              :    MultiFPSection := ExtendedFP  | FPSection [ ';' 
    5756              :                                                MultiFPSection  ] 
    5757              : 
    5758              :    first  symbols:identtok, vartok, lsbratok, periodperiodperiodtok
    5759              :    
    5760              :    cannot reachend
    5761              : */
    5762              : 
    5763      1718746 : static void MultiFPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5764              : {
    5765      2964108 :   if ((M2LexBuf_currenttoken == M2Reserved_lsbratok) || (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok))
    5766              :     {
    5767         2780 :       ExtendedFP (stopset0, stopset1, stopset2);
    5768              :     }
    5769      2961328 :   else if ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0)))
    5770              :     {
    5771              :       /* avoid dangling else.  */
    5772      2961322 :       FPSection (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    5773      2961322 :       if (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    5774              :         {
    5775      1245362 :           Expect (M2Reserved_semicolontok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_periodperiodperiodtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    5776      1245362 :           MultiFPSection (stopset0, stopset1, stopset2);
    5777              :         }
    5778              :     }
    5779              :   else
    5780              :     {
    5781              :       /* avoid dangling else.  */
    5782            6 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%KVAR} {%K...} {%K[}", 54);
    5783              :     }
    5784      1718746 : }
    5785              : 
    5786              : 
    5787              : /*
    5788              :    FPSection := NonVarFPSection  | 
    5789              :                 VarFPSection 
    5790              : 
    5791              :    first  symbols:vartok, identtok
    5792              :    
    5793              :    cannot reachend
    5794              : */
    5795              : 
    5796      8369874 : static void FPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5797              : {
    5798      8369874 :   if (M2LexBuf_currenttoken == M2Reserved_identtok)
    5799              :     {
    5800      7550061 :       NonVarFPSection (stopset0, stopset1, stopset2);
    5801              :     }
    5802       819813 :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    5803              :     {
    5804              :       /* avoid dangling else.  */
    5805       819813 :       VarFPSection (stopset0, stopset1, stopset2);
    5806              :     }
    5807              :   else
    5808              :     {
    5809              :       /* avoid dangling else.  */
    5810            0 :       ErrorArray ((const char *) "expecting one of: {%KVAR} {%Kidentifier}", 40);
    5811              :     }
    5812      8369874 : }
    5813              : 
    5814              : 
    5815              : /*
    5816              :    DefExtendedFP := DefOptArg  | '...' 
    5817              : 
    5818              :    first  symbols:lsbratok, periodperiodperiodtok
    5819              :    
    5820              :    cannot reachend
    5821              : */
    5822              : 
    5823        26343 : static void DefExtendedFP (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5824              : {
    5825        26343 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    5826              :     {
    5827        14999 :       DefOptArg (stopset0, stopset1, stopset2);
    5828              :     }
    5829        11344 :   else if (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok)
    5830              :     {
    5831              :       /* avoid dangling else.  */
    5832        11344 :       Expect (M2Reserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
    5833              :     }
    5834              :   else
    5835              :     {
    5836              :       /* avoid dangling else.  */
    5837            0 :       ErrorArray ((const char *) "expecting one of: {%K...} {%K[}", 31);
    5838              :     }
    5839        26343 : }
    5840              : 
    5841              : 
    5842              : /*
    5843              :    ExtendedFP := OptArg  | '...' 
    5844              : 
    5845              :    first  symbols:lsbratok, periodperiodperiodtok
    5846              :    
    5847              :    cannot reachend
    5848              : */
    5849              : 
    5850         2780 : static void ExtendedFP (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5851              : {
    5852         2780 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    5853              :     {
    5854         2780 :       OptArg (stopset0, stopset1, stopset2);
    5855              :     }
    5856            0 :   else if (M2LexBuf_currenttoken == M2Reserved_periodperiodperiodtok)
    5857              :     {
    5858              :       /* avoid dangling else.  */
    5859            0 :       Expect (M2Reserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
    5860              :     }
    5861              :   else
    5862              :     {
    5863              :       /* avoid dangling else.  */
    5864            0 :       ErrorArray ((const char *) "expecting one of: {%K...} {%K[}", 31);
    5865              :     }
    5866         2780 : }
    5867              : 
    5868              : 
    5869              : /*
    5870              :    VarFPSection := 'VAR' IdentList ':' FormalType [ 
    5871              :    AttributeUnused  ] 
    5872              : 
    5873              :    first  symbols:vartok
    5874              :    
    5875              :    cannot reachend
    5876              : */
    5877              : 
    5878       819813 : static void VarFPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5879              : {
    5880       819813 :   Expect (M2Reserved_vartok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5881       819813 :   IdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5882       819813 :   Expect (M2Reserved_colontok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5883       819813 :   FormalType (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5884       819813 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    5885              :     {
    5886            0 :       AttributeUnused (stopset0, stopset1, stopset2);
    5887              :     }
    5888       819813 : }
    5889              : 
    5890              : 
    5891              : /*
    5892              :    NonVarFPSection := IdentList ':' FormalType [ AttributeUnused  ] 
    5893              : 
    5894              :    first  symbols:identtok
    5895              :    
    5896              :    cannot reachend
    5897              : */
    5898              : 
    5899      7550061 : static void NonVarFPSection (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5900              : {
    5901      7550061 :   IdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5902      7550061 :   Expect (M2Reserved_colontok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5903      7550061 :   FormalType (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok))), stopset1, stopset2);
    5904      7550061 :   if (M2LexBuf_currenttoken == M2Reserved_ldirectivetok)
    5905              :     {
    5906            0 :       AttributeUnused (stopset0, stopset1, stopset2);
    5907              :     }
    5908      7550061 : }
    5909              : 
    5910              : 
    5911              : /*
    5912              :    OptArg := '[' Ident ':' FormalType [ '=' ConstExpression  ] 
    5913              :              ']' 
    5914              : 
    5915              :    first  symbols:lsbratok
    5916              :    
    5917              :    cannot reachend
    5918              : */
    5919              : 
    5920         2780 : static void OptArg (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5921              : {
    5922         2780 :   Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5923         2780 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5924         2780 :   Expect (M2Reserved_colontok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5925         2780 :   FormalType (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok)) | (1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    5926         2780 :   if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    5927              :     {
    5928         2734 :       Expect (M2Reserved_equaltok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    5929         2734 :       ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    5930              :     }
    5931         2780 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    5932         2780 : }
    5933              : 
    5934              : 
    5935              : /*
    5936              :    DefOptArg := '[' Ident ':' FormalType '=' ConstExpression 
    5937              :                 ']' 
    5938              : 
    5939              :    first  symbols:lsbratok
    5940              :    
    5941              :    cannot reachend
    5942              : */
    5943              : 
    5944        14999 : static void DefOptArg (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5945              : {
    5946        14999 :   Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5947        14999 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    5948        14999 :   Expect (M2Reserved_colontok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5949        14999 :   FormalType (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    5950        14999 :   Expect (M2Reserved_equaltok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    5951        14999 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    5952        14999 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    5953        14999 : }
    5954              : 
    5955              : 
    5956              : /*
    5957              :    FormalType := { 'ARRAY' 'OF'  } Qualident 
    5958              : 
    5959              :    first  symbols:identtok, arraytok
    5960              :    
    5961              :    cannot reachend
    5962              : */
    5963              : 
    5964      8471842 : static void FormalType (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    5965              : {
    5966      9494441 :   while (M2LexBuf_currenttoken == M2Reserved_arraytok)
    5967              :     {
    5968      1022599 :       Expect (M2Reserved_arraytok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_oftok-M2Reserved_arraytok))), stopset2);
    5969      1022599 :       Expect (M2Reserved_oftok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_arraytok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    5970              :     }
    5971              :    /* while  */
    5972      8471842 :   Qualident (stopset0, stopset1, stopset2);
    5973      8471842 : }
    5974              : 
    5975              : 
    5976              : /*
    5977              :    ModuleDeclaration := 'MODULE' 
    5978              :                         % PushAutoOn  %
    5979              :                         
    5980              :                         % M2Error.DefaultInnerModule  %
    5981              :                         Ident 
    5982              :                         % RegisterInnerModule  %
    5983              :                         
    5984              :                         % PushAutoOff  %
    5985              :                         [ Priority  ] ';' 
    5986              :                         % PushAutoOn  %
    5987              :                         { Import 
    5988              :                           % RegisterInnerImports  %
    5989              :                            } 
    5990              :                         % PopAuto  %
    5991              :                         [ Export  ] Block 
    5992              :                         % PopAuto  %
    5993              :                         Ident 
    5994              :                         % EndModule  %
    5995              :                         
    5996              :                         % PopAuto  %
    5997              :                         
    5998              : 
    5999              :    first  symbols:moduletok
    6000              :    
    6001              :    cannot reachend
    6002              : */
    6003              : 
    6004          434 : static void ModuleDeclaration (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6005              : {
    6006          434 :   Expect (M2Reserved_moduletok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6007          434 :   M2Quads_PushAutoOn ();
    6008          434 :   M2Error_DefaultInnerModule ();
    6009          434 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6010          434 :   P0SymBuild_RegisterInnerModule ();
    6011          434 :   M2Quads_PushAutoOff ();
    6012          434 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    6013              :     {
    6014           12 :       Priority (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6015              :     }
    6016          434 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6017          434 :   M2Quads_PushAutoOn ();
    6018         1098 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    6019              :     {
    6020          230 :       Import (stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    6021          230 :       P0SymBuild_RegisterInnerImports ();
    6022              :     }
    6023              :    /* while  */
    6024          434 :   M2Quads_PopAuto ();
    6025          434 :   if (M2LexBuf_currenttoken == M2Reserved_exporttok)
    6026              :     {
    6027          288 :       Export (stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    6028              :     }
    6029          428 :   Block (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6030          428 :   M2Quads_PopAuto ();
    6031          428 :   Ident (stopset0, stopset1, stopset2);
    6032          428 :   P0SymBuild_EndModule ();
    6033          428 :   M2Quads_PopAuto ();
    6034          428 : }
    6035              : 
    6036              : 
    6037              : /*
    6038              :    Priority := '[' ConstExpression ']' 
    6039              : 
    6040              :    first  symbols:lsbratok
    6041              :    
    6042              :    cannot reachend
    6043              : */
    6044              : 
    6045           50 : static void Priority (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6046              : {
    6047           50 :   Expect (M2Reserved_lsbratok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    6048           50 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6049           50 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    6050           50 : }
    6051              : 
    6052              : 
    6053              : /*
    6054              :    Export := 'EXPORT' ( 'QUALIFIED' IdentList  | 
    6055              :                         'UNQUALIFIED' IdentList  | 
    6056              :                         IdentList  ) 
    6057              :              % EnableImportCheck := TRUE  %
    6058              :              ';' 
    6059              :              % EnableImportCheck := FALSE  %
    6060              :              
    6061              : 
    6062              :    first  symbols:exporttok
    6063              :    
    6064              :    cannot reachend
    6065              : */
    6066              : 
    6067        86020 : static void Export (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6068              : {
    6069        86020 :   Expect (M2Reserved_exporttok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_qualifiedtok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_unqualifiedtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6070        86020 :   if (M2LexBuf_currenttoken == M2Reserved_qualifiedtok)
    6071              :     {
    6072        74100 :       Expect (M2Reserved_qualifiedtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6073        74100 :       IdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6074              :     }
    6075        11920 :   else if (M2LexBuf_currenttoken == M2Reserved_unqualifiedtok)
    6076              :     {
    6077              :       /* avoid dangling else.  */
    6078        11632 :       Expect (M2Reserved_unqualifiedtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6079        11632 :       IdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6080              :     }
    6081          288 :   else if (M2LexBuf_currenttoken == M2Reserved_identtok)
    6082              :     {
    6083              :       /* avoid dangling else.  */
    6084          288 :       IdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6085              :     }
    6086              :   else
    6087              :     {
    6088              :       /* avoid dangling else.  */
    6089            0 :       ErrorArray ((const char *) "expecting one of: {%Kidentifier} {%KUNQUALIFIED} {%KQUALIFIED}", 62);
    6090              :     }
    6091        86020 :   EnableImportCheck = true;
    6092        86020 :   Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    6093        86014 :   EnableImportCheck = false;
    6094        86014 : }
    6095              : 
    6096              : 
    6097              : /*
    6098              :    Import := 'FROM' Ident 'IMPORT' IdentList ';'  | 
    6099              :              'IMPORT' 
    6100              :              % PushTtok (ImportTok, GetTokenNo () -1)
    6101              :                 determines whether Ident or Module   %
    6102              :              IdentList ';' 
    6103              : 
    6104              :    first  symbols:importtok, fromtok
    6105              :    
    6106              :    cannot reachend
    6107              : */
    6108              : 
    6109       401813 : static void Import (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6110              : {
    6111       401813 :   if (M2LexBuf_currenttoken == M2Reserved_fromtok)
    6112              :     {
    6113       352465 :       Expect (M2Reserved_fromtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6114       352465 :       Ident (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_importtok-M2Reserved_arraytok))), stopset2);
    6115       352465 :       Expect (M2Reserved_importtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6116       352465 :       IdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6117       352465 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    6118              :     }
    6119        49348 :   else if (M2LexBuf_currenttoken == M2Reserved_importtok)
    6120              :     {
    6121              :       /* avoid dangling else.  */
    6122        49348 :       Expect (M2Reserved_importtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6123              :       /* determines whether Ident or Module  */
    6124        49348 :       M2Quads_PushTtok (M2Reserved_ImportTok, (M2LexBuf_GetTokenNo ())-1);
    6125        49348 :       IdentList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6126        49348 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    6127              :     }
    6128              :   else
    6129              :     {
    6130              :       /* avoid dangling else.  */
    6131            0 :       ErrorArray ((const char *) "expecting one of: {%KIMPORT} {%KFROM}", 37);
    6132              :     }
    6133       401813 : }
    6134              : 
    6135              : 
    6136              : /*
    6137              :    DefinitionModule := 
    6138              :                        % VAR forC: BOOLEAN ;  %
    6139              :                        
    6140              :                        % forC := FALSE  %
    6141              :                        'DEFINITION' 
    6142              :                        % M2Error.DefaultDefinitionModule  %
    6143              :                        'MODULE' [ 'FOR' string 
    6144              :                                   % forC := TRUE  %
    6145              :                                    ] 
    6146              :                        % PushAutoOn  %
    6147              :                        Ident 
    6148              :                        % RegisterDefinitionModule (forC)  %
    6149              :                        ';' { Import 
    6150              :                              % RegisterImports  %
    6151              :                               } 
    6152              :                        % PushAutoOff  %
    6153              :                        [ Export  ] { Definition  } 
    6154              :                        
    6155              :                        % PopAuto  %
    6156              :                        'END' Ident 
    6157              :                        % EndModule  %
    6158              :                        '.' 
    6159              :                        % PopAuto  %
    6160              :                        
    6161              : 
    6162              :    first  symbols:definitiontok
    6163              :    
    6164              :    cannot reachend
    6165              : */
    6166              : 
    6167       162090 : static void DefinitionModule (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6168              : {
    6169       162090 :   bool forC;
    6170              : 
    6171       162090 :   forC = false;
    6172       162090 :   Expect (M2Reserved_definitiontok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_moduletok-M2Reserved_arraytok))), stopset2);
    6173       162090 :   M2Error_DefaultDefinitionModule ();
    6174       162090 :   Expect (M2Reserved_moduletok, stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_fortok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6175       162090 :   if (M2LexBuf_currenttoken == M2Reserved_fortok)
    6176              :     {
    6177        13106 :       Expect (M2Reserved_fortok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok))));
    6178        13106 :       string (stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6179        13106 :       forC = true;
    6180              :     }
    6181       162090 :   M2Quads_PushAutoOn ();
    6182       162090 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6183       162090 :   P0SymBuild_RegisterDefinitionModule (forC);
    6184       162090 :   Expect (M2Reserved_semicolontok, stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok))));
    6185       434114 :   while (((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_fromtok-M2Reserved_arraytok)) | (1 << (M2Reserved_importtok-M2Reserved_arraytok))))) != 0)))
    6186              :     {
    6187       109934 :       Import (stopset0, stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6188       109934 :       P0SymBuild_RegisterImports ();
    6189              :     }
    6190              :    /* while  */
    6191       162090 :   M2Quads_PushAutoOff ();
    6192       162090 :   if (M2LexBuf_currenttoken == M2Reserved_exporttok)
    6193              :     {
    6194        85732 :       Export (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6195              :     }
    6196      3562151 :   while ((((M2LexBuf_currenttoken >= M2Reserved_arraytok) && (M2LexBuf_currenttoken < M2Reserved_unqualifiedtok)) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_arraytok)) & ((P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))))) != 0))) || ((M2LexBuf_currenttoken >= M2Reserved_unqualifiedtok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_unqualifiedtok)) & ((P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))))) != 0))))
    6197              :     {
    6198      3400061 :       Definition (stopset0, stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_endtok-M2Reserved_arraytok)) | (1 << (M2Reserved_consttok-M2Reserved_arraytok)) | (1 << (M2Reserved_proceduretok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_typetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_vartok-M2Reserved_unqualifiedtok))));
    6199              :     }
    6200              :    /* while  */
    6201       162090 :   M2Quads_PopAuto ();
    6202       162090 :   Expect (M2Reserved_endtok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6203       162090 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_periodtok-M2Reserved_eoftok))), stopset1, stopset2);
    6204       162090 :   P0SymBuild_EndModule ();
    6205       162090 :   Expect (M2Reserved_periodtok, stopset0, stopset1, stopset2);
    6206       162090 :   M2Quads_PopAuto ();
    6207       162090 : }
    6208              : 
    6209              : 
    6210              : /*
    6211              :    Definition := 'CONST' { ConstantDeclaration ';'  }  | 
    6212              :                  'TYPE' { Ident ( ';' 
    6213              :                                   % PutHiddenTypeDeclared  %
    6214              :                                    | '=' Type Alignment 
    6215              :                                   ';'  )  }  | 
    6216              :                  'VAR' { VariableDeclaration ';'  }  | 
    6217              :                  DefProcedureHeading ';' 
    6218              : 
    6219              :    first  symbols:proceduretok, vartok, typetok, consttok
    6220              :    
    6221              :    cannot reachend
    6222              : */
    6223              : 
    6224      3400061 : static void Definition (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6225              : {
    6226      3400061 :   if (M2LexBuf_currenttoken == M2Reserved_consttok)
    6227              :     {
    6228        23806 :       Expect (M2Reserved_consttok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6229       236740 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    6230              :         {
    6231       189128 :           ConstantDeclaration (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6232       189128 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6233              :         }
    6234              :        /* while  */
    6235              :     }
    6236      3376255 :   else if (M2LexBuf_currenttoken == M2Reserved_typetok)
    6237              :     {
    6238              :       /* avoid dangling else.  */
    6239        82726 :       Expect (M2Reserved_typetok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6240       313398 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    6241              :         {
    6242       147946 :           Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok)) | (1 << (M2Reserved_equaltok-M2Reserved_eoftok))), stopset1, stopset2);
    6243       147946 :           if (M2LexBuf_currenttoken == M2Reserved_semicolontok)
    6244              :             {
    6245        28601 :               Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6246        28601 :               SymbolTable_PutHiddenTypeDeclared ();
    6247              :             }
    6248       119345 :           else if (M2LexBuf_currenttoken == M2Reserved_equaltok)
    6249              :             {
    6250              :               /* avoid dangling else.  */
    6251       119345 :               Expect (M2Reserved_equaltok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lsbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_settok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_recordtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6252       119345 :               Type (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_ldirectivetok-M2Reserved_eoftok)) | (1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6253       119345 :               Alignment (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6254       119345 :               Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6255              :             }
    6256              :           else
    6257              :             {
    6258              :               /* avoid dangling else.  */
    6259            0 :               ErrorArray ((const char *) "expecting one of: {%K=} {%K;}", 29);
    6260              :             }
    6261              :         }
    6262              :        /* while  */
    6263              :     }
    6264      3293529 :   else if (M2LexBuf_currenttoken == M2Reserved_vartok)
    6265              :     {
    6266              :       /* avoid dangling else.  */
    6267         4328 :       Expect (M2Reserved_vartok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6268        12980 :       while (M2LexBuf_currenttoken == M2Reserved_identtok)
    6269              :         {
    6270         4324 :           VariableDeclaration (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6271         4324 :           Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6272              :         }
    6273              :        /* while  */
    6274              :     }
    6275      3289201 :   else if (M2LexBuf_currenttoken == M2Reserved_proceduretok)
    6276              :     {
    6277              :       /* avoid dangling else.  */
    6278      3289201 :       DefProcedureHeading (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_semicolontok-M2Reserved_eoftok))), stopset1, stopset2);
    6279      3289201 :       Expect (M2Reserved_semicolontok, stopset0, stopset1, stopset2);
    6280              :     }
    6281              :   else
    6282              :     {
    6283              :       /* avoid dangling else.  */
    6284            0 :       ErrorArray ((const char *) "expecting one of: {%KPROCEDURE} {%KVAR} {%KTYPE} {%KCONST}", 58);
    6285              :     }
    6286      3400061 : }
    6287              : 
    6288              : 
    6289              : /*
    6290              :    AsmStatement := 'ASM' [ 'VOLATILE'  ] '(' AsmOperands 
    6291              :                    ')' 
    6292              : 
    6293              :    first  symbols:asmtok
    6294              :    
    6295              :    cannot reachend
    6296              : */
    6297              : 
    6298           27 : static void AsmStatement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6299              : {
    6300           27 :   Expect (M2Reserved_asmtok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_volatiletok-M2Reserved_unqualifiedtok))));
    6301           27 :   if (M2LexBuf_currenttoken == M2Reserved_volatiletok)
    6302              :     {
    6303           15 :       Expect (M2Reserved_volatiletok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6304              :     }
    6305           27 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    6306           27 :   AsmOperands (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6307           27 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    6308           27 : }
    6309              : 
    6310              : 
    6311              : /*
    6312              :    NamedOperand := '[' Ident ']' 
    6313              : 
    6314              :    first  symbols:lsbratok
    6315              :    
    6316              :    cannot reachend
    6317              : */
    6318              : 
    6319            6 : static void NamedOperand (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6320              : {
    6321            6 :   Expect (M2Reserved_lsbratok, stopset0, stopset1, stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6322            6 :   Ident (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rsbratok-M2Reserved_eoftok))), stopset1, stopset2);
    6323            6 :   Expect (M2Reserved_rsbratok, stopset0, stopset1, stopset2);
    6324            6 : }
    6325              : 
    6326              : 
    6327              : /*
    6328              :    AsmOperandName := [ NamedOperand  ] 
    6329              : 
    6330              :    first  symbols:lsbratok
    6331              :    
    6332              :    reachend
    6333              : */
    6334              : 
    6335           33 : static void AsmOperandName (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6336              : {
    6337            0 :   if (M2LexBuf_currenttoken == M2Reserved_lsbratok)
    6338              :     {
    6339            6 :       NamedOperand (stopset0, stopset1, stopset2);
    6340              :     }
    6341            0 : }
    6342              : 
    6343              : 
    6344              : /*
    6345              :    AsmOperands := ConstExpression [ ':' AsmList [ ':' 
    6346              :                                                   AsmList 
    6347              :                                                   [ 
    6348              :    ':' TrashList  ]  ]  ] 
    6349              : 
    6350              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok
    6351              :    
    6352              :    cannot reachend
    6353              : */
    6354              : 
    6355           27 : static void AsmOperands (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6356              : {
    6357           27 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6358           27 :   if (M2LexBuf_currenttoken == M2Reserved_colontok)
    6359              :     {
    6360           21 :       Expect (M2Reserved_colontok, stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    6361           21 :       AsmList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6362           21 :       if (M2LexBuf_currenttoken == M2Reserved_colontok)
    6363              :         {
    6364           15 :           Expect (M2Reserved_colontok, stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    6365           15 :           AsmList (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_colontok-M2Reserved_eoftok))), stopset1, stopset2);
    6366           15 :           if (M2LexBuf_currenttoken == M2Reserved_colontok)
    6367              :             {
    6368            9 :               Expect (M2Reserved_colontok, stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    6369            9 :               TrashList (stopset0, stopset1, stopset2);
    6370              :             }
    6371              :         }
    6372              :     }
    6373           27 : }
    6374              : 
    6375              : 
    6376              : /*
    6377              :    AsmList := [ AsmElement  ] { ',' AsmElement  } 
    6378              : 
    6379              :    first  symbols:attributetok, lcbratok, identtok, stringtok, nottok, lparatok, integertok, realtok, minustok, plustok, lsbratok, commatok
    6380              :    
    6381              :    reachend
    6382              : */
    6383              : 
    6384           36 : static void AsmList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6385              : {
    6386           36 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_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))))
    6387              :     {
    6388           30 :       AsmElement (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6389              :     }
    6390           39 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    6391              :     {
    6392            3 :       Expect (M2Reserved_commatok, stopset0|(P0SyntaxCheck_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|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    6393            3 :       AsmElement (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6394              :     }
    6395              :    /* while  */
    6396           36 : }
    6397              : 
    6398              : 
    6399              : /*
    6400              :    AsmElement := AsmOperandName ConstExpression '(' 
    6401              :                  Expression ')' 
    6402              : 
    6403              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok, lsbratok
    6404              :    
    6405              :    cannot reachend
    6406              : */
    6407              : 
    6408           33 : static void AsmElement (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6409              : {
    6410           33 :   AsmOperandName (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    6411           33 :   ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_lparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6412           33 :   Expect (M2Reserved_lparatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_SetOfStop2) ((1 << (M2Reserved_realtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_integertok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_stringtok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_attributetok-M2Reserved_unqualifiedtok)) | (1 << (M2Reserved_identtok-M2Reserved_unqualifiedtok))));
    6413           33 :   Expression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_rparatok-M2Reserved_eoftok))), stopset1, stopset2);
    6414           33 :   Expect (M2Reserved_rparatok, stopset0, stopset1, stopset2);
    6415           33 : }
    6416              : 
    6417              : 
    6418              : /*
    6419              :    TrashList := [ ConstExpression  ] { ',' ConstExpression  } 
    6420              : 
    6421              :    first  symbols:stringtok, identtok, lcbratok, attributetok, realtok, integertok, lparatok, nottok, plustok, minustok, commatok
    6422              :    
    6423              :    reachend
    6424              : */
    6425              : 
    6426            9 : static void TrashList (P0SyntaxCheck_SetOfStop0 stopset0, P0SyntaxCheck_SetOfStop1 stopset1, P0SyntaxCheck_SetOfStop2 stopset2)
    6427              : {
    6428            9 :   if ((((M2LexBuf_currenttoken < M2Reserved_arraytok) && ((((1 << (M2LexBuf_currenttoken-M2Reserved_eoftok)) & ((P0SyntaxCheck_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)) & ((P0SyntaxCheck_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))))
    6429              :     {
    6430            3 :       ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6431              :     }
    6432            9 :   while (M2LexBuf_currenttoken == M2Reserved_commatok)
    6433              :     {
    6434            0 :       Expect (M2Reserved_commatok, stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_minustok-M2Reserved_eoftok)) | (1 << (M2Reserved_plustok-M2Reserved_eoftok)) | (1 << (M2Reserved_lparatok-M2Reserved_eoftok)) | (1 << (M2Reserved_lcbratok-M2Reserved_eoftok))), stopset1|(P0SyntaxCheck_SetOfStop1) ((1 << (M2Reserved_nottok-M2Reserved_arraytok))), stopset2|(P0SyntaxCheck_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))));
    6435            0 :       ConstExpression (stopset0|(P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_commatok-M2Reserved_eoftok))), stopset1, stopset2);
    6436              :     }
    6437              :    /* while  */
    6438            9 : }
    6439              : 
    6440              : 
    6441              : /*
    6442              :    CompilationUnit - returns TRUE if the input was correct enough to parse
    6443              :                      in future passes.
    6444              : */
    6445              : 
    6446       244909 : extern "C" bool P0SyntaxCheck_CompilationUnit (void)
    6447              : {
    6448       244909 :   seenError = false;
    6449       244909 :   EnableImportCheck = false;
    6450       244909 :   InsertCount = 0;
    6451       244909 :   FileUnit ((P0SyntaxCheck_SetOfStop0) ((1 << (M2Reserved_eoftok-M2Reserved_eoftok))), (P0SyntaxCheck_SetOfStop1) 0, (P0SyntaxCheck_SetOfStop2) 0);
    6452       244897 :   return ! seenError;
    6453              :   /* static analysis guarentees a RETURN statement will be used before here.  */
    6454              :   __builtin_unreachable ();
    6455              : }
    6456              : 
    6457            0 : extern "C" void _M2_P0SyntaxCheck_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
    6458              : {
    6459            0 : }
    6460              : 
    6461            0 : extern "C" void _M2_P0SyntaxCheck_fini (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
    6462              : {
    6463            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.