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