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