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