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