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