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