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