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