]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/CCode/Source/Pccts/antlr/parser.dlg
Fixed all scripts to use new directory layout.
[mirror_edk2.git] / Tools / CCode / Source / Pccts / antlr / parser.dlg
CommitLineData
878ddf1f 1<<\r
2/* parser.dlg -- DLG Description of scanner\r
3 *\r
4 * Generated from: antlr.g\r
5 *\r
6 * Terence Parr, Will Cohen, and Hank Dietz: 1989-2001\r
7 * Purdue University Electrical Engineering\r
8 * With AHPCRC, University of Minnesota\r
9 * ANTLR Version 1.33MR33\r
10 */\r
11\r
12#define ANTLR_VERSION 13333\r
13#include "pcctscfg.h"\r
14#include "pccts_stdio.h"\r
15\r
16#include "pcctscfg.h"\r
17#include "set.h"\r
18#include <ctype.h>\r
19#include "syn.h"\r
20#include "hash.h"\r
21#include "generic.h"\r
22#define zzcr_attr(attr,tok,t)\r
23#include "antlr.h"\r
24#include "tokens.h"\r
25#include "dlgdef.h"\r
26LOOKAHEAD\r
27\r
28void\r
29#ifdef __USE_PROTOS\r
30zzerraction(void)\r
31#else\r
32zzerraction()\r
33#endif\r
34{\r
35 (*zzerr)("invalid token");\r
36 zzadvance();\r
37 zzskip();\r
38}\r
39>>\r
40\r
41<<%%lexaction\r
42\r
43/* maintained, but not used for now */\r
44set AST_nodes_refd_in_actions = set_init;\r
45int inAlt = 0;\r
46set attribsRefdFromAction = set_init; /* MR20 */\r
47int UsedOldStyleAttrib = 0;\r
48int UsedNewStyleLabel = 0;\r
49#ifdef __USE_PROTOS\r
50char *inline_set(char *);\r
51#else\r
52char *inline_set();\r
53#endif\r
54\r
55/* MR1 10-Apr-97 MR1 Previously unable to put right shift operator */\r
56/* MR1 in DLG action */\r
57\r
58int tokenActionActive=0; /* MR1 */\r
59\r
60 \r
61>>\r
62\r
63<<%%lexaction\r
64\r
65\r
66static char *\r
67#ifdef __USE_PROTOS\r
68getFileNameFromTheLineInfo(char *toStr, char *fromStr)\r
69#else\r
70getFileNameFromTheLineInfo(toStr, fromStr)\r
71char *toStr, *fromStr;\r
72#endif\r
73{\r
74 int i, j, k;\r
75 \r
76 if (!fromStr || !toStr) return toStr;\r
77 \r
78 /* find the first " */\r
79 \r
80 for (i=0;\r
81 (i<MaxFileName) &&\r
82 (fromStr[i] != '\n') &&\r
83 (fromStr[i] != '\r') &&\r
84 (fromStr[i] != '\"');\r
85 i++) /* nothing */ ;\r
86 \r
87 if ( (i == MaxFileName) ||\r
88 (fromStr[i] == '\n') ||\r
89 (fromStr[i] == '\r') ) {\r
90 return toStr;\r
91}\r
92\r
93 /* find the second " */\r
94\r
95 for (j=i+1;\r
96(j<MaxFileName) &&\r
97(fromStr[j] != '\n') &&\r
98(fromStr[j] != '\r') &&\r
99(fromStr[j] != '\"');\r
100j++) /* nothing */ ;\r
101\r
102 if ((j == MaxFileName) ||\r
103(fromStr[j] == '\n') ||\r
104(fromStr[j] == '\r') ) {\r
105 return toStr;\r
106}\r
107\r
108 /* go back until the last / or \ */\r
109\r
110 for (k=j-1;\r
111(fromStr[k] != '\"') &&\r
112(fromStr[k] != '/') &&\r
113(fromStr[k] != '\\');\r
114k--) /* nothing */ ;\r
115\r
116 /* copy the string after " / or \ into toStr */\r
117\r
118 for (i=k+1; fromStr[i] != '\"'; i++) {\r
119toStr[i-k-1] = fromStr[i];\r
120}\r
121\r
122 toStr[i-k-1] = '\0';\r
123\r
124 return toStr;\r
125}\r
126\r
127/* MR14 end of a block to support #line in antlr source code */\r
128\r
129 \r
130>>\r
131\r
132<<%%lexaction\r
133\r
134#ifdef __USE_PROTOS\r
135void mark_label_used_in_sem_pred(LabelEntry *le) /* MR10 */\r
136#else\r
137void mark_label_used_in_sem_pred(le) /* MR10 */\r
138LabelEntry *le;\r
139#endif\r
140{\r
141 TokNode *tn;\r
142 require (le->elem->ntype == nToken,"mark_label_used... ntype != nToken");\r
143 tn=(TokNode *)le->elem;\r
144 require (tn->label != 0,"mark_label_used... TokNode has no label");\r
145 tn->label_used_in_semantic_pred=1;\r
146}\r
147>>\r
148\r
149\r
150%%START\r
151\r
152@\r
153 <<\r
154 NLA = Eof;\r
155 /* L o o k F o r A n o t h e r F i l e */\r
156 {\r
157 FILE *new_input;\r
158 new_input = NextFile();\r
159 if ( new_input == NULL ) { NLA=Eof; return; }\r
160 fclose( input );\r
161 input = new_input;\r
162 zzrdstream( input );\r
163 zzskip(); /* Skip the Eof (@) char i.e continue */\r
164 }\r
165 >>\r
166\r
167[\t\ ]+\r
168 <<\r
169 NLA = 76;\r
170 zzskip(); \r
171 >>\r
172\r
173\n|\r|\r\n\r
174 <<\r
175 NLA = 77;\r
176 zzline++; zzskip(); \r
177 >>\r
178\r
179\[\r
180 <<\r
181 NLA = 78;\r
182 zzmode(ACTIONS); zzmore();\r
183 istackreset();\r
184 pushint(']'); \r
185 >>\r
186\r
187\<\<\r
188 <<\r
189 NLA = 79;\r
190 action_file=CurFile; action_line=zzline;\r
191 zzmode(ACTIONS); zzmore();\r
192 list_free(&CurActionLabels,0); /* MR10 */\r
193 numericActionLabel=0; /* MR10 */\r
194 istackreset();\r
195 pushint('>'); \r
196 >>\r
197\r
198\"\r
199 <<\r
200 NLA = 80;\r
201 zzmode(STRINGS); zzmore(); \r
202 >>\r
203\r
204/\*\r
205 <<\r
206 NLA = 81;\r
207 zzmode(COMMENTS); zzskip(); \r
208 >>\r
209\r
210\*/\r
211 <<\r
212 NLA = 82;\r
213 warn("Missing /*; found dangling */"); zzskip(); \r
214 >>\r
215\r
216//\r
217 <<\r
218 NLA = 83;\r
219 zzmode(CPP_COMMENTS); zzskip(); \r
220 >>\r
221\r
222#line[\ \t]* [0-9]+ {[\ \t]* \"~[\"]+\" ([\ \t]* [0-9]*)* } (\n|\r|\r\n)\r
223 <<\r
224 NLA = 84;\r
225 \r
226 zzline = atoi(zzbegexpr+5) - 1; zzline++; zzmore();\r
227 getFileNameFromTheLineInfo(FileStr[CurFile], zzbegexpr);\r
228 >>\r
229\r
230#line ~[\n\r]* (\n|\r|\r\n)\r
231 <<\r
232 NLA = 85;\r
233 \r
234 zzline++; zzmore();\r
235 >>\r
236\r
237\>\>\r
238 <<\r
239 NLA = 86;\r
240 warn("Missing <<; found dangling \>\>"); zzskip(); \r
241 >>\r
242\r
243.\r
244 <<\r
245 NLA = WildCard;\r
246 >>\r
247\r
248\@\r
249 <<\r
250 NLA = 88;\r
251 FoundException = 1; /* MR6 */\r
252 FoundAtOperator = 1; \r
253 >>\r
254\r
255{\\}#pragma\r
256 <<\r
257 NLA = Pragma;\r
258 >>\r
259\r
260{\\}#FirstSetSymbol\r
261 <<\r
262 NLA = FirstSetSymbol;\r
263 >>\r
264\r
265{\\}#header\r
266 <<\r
267 NLA = 94;\r
268 >>\r
269\r
270{\\}#first\r
271 <<\r
272 NLA = 95;\r
273 >>\r
274\r
275{\\}#parser\r
276 <<\r
277 NLA = 96;\r
278 >>\r
279\r
280{\\}#tokdefs\r
281 <<\r
282 NLA = 97;\r
283 >>\r
284\r
285\}\r
286 <<\r
287 NLA = 98;\r
288 >>\r
289\r
290class\r
291 <<\r
292 NLA = 99;\r
293 >>\r
294\r
295\{\r
296 <<\r
297 NLA = 102;\r
298 >>\r
299\r
300!\r
301 <<\r
302 NLA = 103;\r
303 >>\r
304\r
305\<\r
306 <<\r
307 NLA = 104;\r
308 >>\r
309\r
310\>\r
311 <<\r
312 NLA = 105;\r
313 >>\r
314\r
315:\r
316 <<\r
317 NLA = 106;\r
318 >>\r
319\r
320;\r
321 <<\r
322 NLA = 107;\r
323 >>\r
324\r
325{\\}#lexaction\r
326 <<\r
327 NLA = 108;\r
328 >>\r
329\r
330{\\}#lexmember\r
331 <<\r
332 NLA = 109;\r
333 >>\r
334\r
335{\\}#lexprefix\r
336 <<\r
337 NLA = 110;\r
338 >>\r
339\r
340{\\}#pred\r
341 <<\r
342 NLA = 111;\r
343 >>\r
344\r
345\|\|\r
346 <<\r
347 NLA = 112;\r
348 >>\r
349\r
350&&\r
351 <<\r
352 NLA = 113;\r
353 >>\r
354\r
355\(\r
356 <<\r
357 NLA = 114;\r
358 >>\r
359\r
360\)\r
361 <<\r
362 NLA = 115;\r
363 >>\r
364\r
365{\\}#lexclass\r
366 <<\r
367 NLA = 116;\r
368 >>\r
369\r
370{\\}#errclass\r
371 <<\r
372 NLA = 117;\r
373 >>\r
374\r
375{\\}#tokclass\r
376 <<\r
377 NLA = 118;\r
378 >>\r
379\r
380..\r
381 <<\r
382 NLA = 119;\r
383 >>\r
384\r
385{\\}#token\r
386 <<\r
387 NLA = 120;\r
388 >>\r
389\r
390=\r
391 <<\r
392 NLA = 121;\r
393 >>\r
394\r
395[0-9]+\r
396 <<\r
397 NLA = 122;\r
398 >>\r
399\r
400\|\r
401 <<\r
402 NLA = 123;\r
403 >>\r
404\r
405\~\r
406 <<\r
407 NLA = 124;\r
408 >>\r
409\r
410^\r
411 <<\r
412 NLA = 125;\r
413 >>\r
414\r
415approx\r
416 <<\r
417 NLA = 126;\r
418 >>\r
419\r
420LL\(1\)\r
421 <<\r
422 NLA = 127;\r
423 >>\r
424\r
425LL\(2\)\r
426 <<\r
427 NLA = 128;\r
428 >>\r
429\r
430\*\r
431 <<\r
432 NLA = 129;\r
433 >>\r
434\r
435\+\r
436 <<\r
437 NLA = 130;\r
438 >>\r
439\r
440?\r
441 <<\r
442 NLA = 131;\r
443 >>\r
444\r
445=>\r
446 <<\r
447 NLA = 132;\r
448 >>\r
449\r
450exception\r
451 <<\r
452 NLA = 133;\r
453 >>\r
454\r
455default\r
456 <<\r
457 NLA = 134;\r
458 >>\r
459\r
460catch\r
461 <<\r
462 NLA = 135;\r
463 >>\r
464\r
465[a-z] [A-Za-z0-9_]*\r
466 <<\r
467 NLA = NonTerminal;\r
468 \r
469 while ( zzchar==' ' || zzchar=='\t' ) {\r
470 zzadvance();\r
471 }\r
472 if ( zzchar == ':' && inAlt ) NLA = LABEL;\r
473 >>\r
474\r
475[A-Z] [A-Za-z0-9_]*\r
476 <<\r
477 NLA = TokenTerm;\r
478 \r
479 while ( zzchar==' ' || zzchar=='\t' ) {\r
480 zzadvance();\r
481 }\r
482 if ( zzchar == ':' && inAlt ) NLA = LABEL;\r
483 >>\r
484\r
485{\\}#[A-Za-z0-9_]*\r
486 <<\r
487 NLA = 136;\r
488 warn(eMsg1("unknown meta-op: %s",LATEXT(1))); zzskip(); \r
489 >>\r
490\r
491\r
492%%STRINGS\r
493\r
494@\r
495 <<\r
496 NLA = Eof;\r
497 >>\r
498\r
499\"\r
500 <<\r
501 NLA = QuotedTerm;\r
502 zzmode(START); \r
503 >>\r
504\r
505\n|\r|\r\n\r
506 <<\r
507 NLA = 3;\r
508 \r
509 zzline++;\r
510 warn("eoln found in string");\r
511 zzskip();\r
512 >>\r
513\r
514\\(\n|\r|\r\n)\r
515 <<\r
516 NLA = 4;\r
517 zzline++; zzmore(); \r
518 >>\r
519\r
520\\~[]\r
521 <<\r
522 NLA = 5;\r
523 zzmore(); \r
524 >>\r
525\r
526~[\n\r\"\\]+\r
527 <<\r
528 NLA = 6;\r
529 zzmore(); \r
530 >>\r
531\r
532\r
533%%ACTION_STRINGS\r
534\r
535@\r
536 <<\r
537 NLA = Eof;\r
538 >>\r
539\r
540\"\r
541 <<\r
542 NLA = 7;\r
543 zzmode(ACTIONS); zzmore(); \r
544 >>\r
545\r
546\n|\r|\r\n\r
547 <<\r
548 NLA = 8;\r
549 \r
550 zzline++;\r
551 warn("eoln found in string (in user action)");\r
552 zzskip();\r
553 >>\r
554\r
555\\(\n|\r|\r\n)\r
556 <<\r
557 NLA = 9;\r
558 zzline++; zzmore(); \r
559 >>\r
560\r
561\\~[]\r
562 <<\r
563 NLA = 10;\r
564 zzmore(); \r
565 >>\r
566\r
567~[\n\r\"\\]+\r
568 <<\r
569 NLA = 11;\r
570 zzmore(); \r
571 >>\r
572\r
573\r
574%%ACTION_CHARS\r
575\r
576@\r
577 <<\r
578 NLA = Eof;\r
579 >>\r
580\r
581'\r
582 <<\r
583 NLA = 12;\r
584 zzmode(ACTIONS); zzmore(); \r
585 >>\r
586\r
587\n|\r|\r\n\r
588 <<\r
589 NLA = 13;\r
590 \r
591 zzline++;\r
592 warn("eoln found in char literal (in user action)");\r
593 zzskip();\r
594 >>\r
595\r
596\\~[]\r
597 <<\r
598 NLA = 14;\r
599 zzmore(); \r
600 >>\r
601\r
602~[\n\r'\\]+\r
603 <<\r
604 NLA = 15;\r
605 zzmore(); \r
606 >>\r
607\r
608\r
609%%ACTION_COMMENTS\r
610\r
611@\r
612 <<\r
613 NLA = Eof;\r
614 >>\r
615\r
616\*/\r
617 <<\r
618 NLA = 16;\r
619 zzmode(ACTIONS); zzmore(); \r
620 >>\r
621\r
622\*\r
623 <<\r
624 NLA = 17;\r
625 zzmore(); \r
626 >>\r
627\r
628\n|\r|\r\n\r
629 <<\r
630 NLA = 18;\r
631 zzline++; zzmore(); DAWDLE; \r
632 >>\r
633\r
634~[\n\r\*]+\r
635 <<\r
636 NLA = 19;\r
637 zzmore(); \r
638 >>\r
639\r
640\r
641%%TOK_DEF_COMMENTS\r
642\r
643@\r
644 <<\r
645 NLA = Eof;\r
646 >>\r
647\r
648\*/\r
649 <<\r
650 NLA = 20;\r
651 zzmode(PARSE_ENUM_FILE);\r
652 zzmore(); \r
653 >>\r
654\r
655\*\r
656 <<\r
657 NLA = 21;\r
658 zzmore(); \r
659 >>\r
660\r
661\n|\r|\r\n\r
662 <<\r
663 NLA = 22;\r
664 zzline++; zzmore(); DAWDLE; \r
665 >>\r
666\r
667~[\n\r\*]+\r
668 <<\r
669 NLA = 23;\r
670 zzmore(); \r
671 >>\r
672\r
673\r
674%%TOK_DEF_CPP_COMMENTS\r
675\r
676@\r
677 <<\r
678 NLA = Eof;\r
679 >>\r
680\r
681\n|\r|\r\n\r
682 <<\r
683 NLA = 24;\r
684 zzline++; zzmode(PARSE_ENUM_FILE); zzskip(); DAWDLE; \r
685 >>\r
686\r
687~[\n\r]+\r
688 <<\r
689 NLA = 25;\r
690 zzskip(); \r
691 >>\r
692\r
693\r
694%%ACTION_CPP_COMMENTS\r
695\r
696@\r
697 <<\r
698 NLA = Eof;\r
699 >>\r
700\r
701\n|\r|\r\n\r
702 <<\r
703 NLA = 26;\r
704 zzline++; zzmode(ACTIONS); zzmore(); DAWDLE; \r
705 >>\r
706\r
707~[\n\r]+\r
708 <<\r
709 NLA = 27;\r
710 zzmore(); \r
711 >>\r
712\r
713\r
714%%CPP_COMMENTS\r
715\r
716@\r
717 <<\r
718 NLA = Eof;\r
719 >>\r
720\r
721\n|\r|\r\n\r
722 <<\r
723 NLA = 28;\r
724 zzline++; zzmode(START); zzskip(); DAWDLE; \r
725 >>\r
726\r
727~[\n\r]+\r
728 <<\r
729 NLA = 29;\r
730 zzskip(); \r
731 >>\r
732\r
733\r
734%%COMMENTS\r
735\r
736@\r
737 <<\r
738 NLA = Eof;\r
739 >>\r
740\r
741\*/\r
742 <<\r
743 NLA = 30;\r
744 zzmode(START); zzskip(); \r
745 >>\r
746\r
747\*\r
748 <<\r
749 NLA = 31;\r
750 zzskip(); \r
751 >>\r
752\r
753\n|\r|\r\n\r
754 <<\r
755 NLA = 32;\r
756 zzline++; zzskip(); DAWDLE; \r
757 >>\r
758\r
759~[\n\r\*]+\r
760 <<\r
761 NLA = 33;\r
762 zzskip(); \r
763 >>\r
764\r
765\r
766%%ACTIONS\r
767\r
768@\r
769 <<\r
770 NLA = Eof;\r
771 >>\r
772\r
773\>\>\r
774 <<\r
775 NLA = Action;\r
776 /* these do not nest */\r
777 zzmode(START);\r
778 NLATEXT[0] = ' ';\r
779 NLATEXT[1] = ' ';\r
780 zzbegexpr[0] = ' ';\r
781 zzbegexpr[1] = ' ';\r
782 if ( zzbufovf ) {\r
783 err( eMsgd("action buffer overflow; size %d",ZZLEXBUFSIZE));\r
784 }\r
785 \r
786/* MR1 10-Apr-97 MR1 Previously unable to put right shift operator */\r
787 /* MR1 in DLG action */\r
788 /* MR1 Doesn't matter what kind of action it is - reset*/\r
789 \r
790 tokenActionActive=0; /* MR1 */\r
791 >>\r
792\r
793\>\>?\r
794 <<\r
795 NLA = Pred;\r
796 /* these do not nest */\r
797 zzmode(START);\r
798 NLATEXT[0] = ' ';\r
799 NLATEXT[1] = ' ';\r
800 zzbegexpr[0] = '\0';\r
801 if ( zzbufovf ) {\r
802 err( eMsgd("predicate buffer overflow; size %d",ZZLEXBUFSIZE));\r
803 };\r
804#ifdef __cplusplus__\r
805 /* MR10 */ list_apply(CurActionLabels, (void (*)(void *))mark_label_used_in_sem_pred);\r
806#else\r
807#ifdef __STDC__\r
808 /* MR10 */ list_apply(CurActionLabels, (void (*)(void *))mark_label_used_in_sem_pred);\r
809#else\r
810#ifdef __USE_PROTOS\r
811 /* MRxx */ list_apply(CurActionLabels, (void (*)(void *))mark_label_used_in_sem_pred);\r
812#else\r
813 /* MR10 */ list_apply(CurActionLabels,mark_label_used_in_sem_pred);\r
814#endif\r
815#endif\r
816#endif\r
817 >>\r
818\r
819\]\r
820 <<\r
821 NLA = PassAction;\r
822 if ( topint() == ']' ) {\r
823 popint();\r
824 if ( istackempty() ) /* terminate action */\r
825 {\r
826 zzmode(START);\r
827 NLATEXT[0] = ' ';\r
828 zzbegexpr[0] = ' ';\r
829 if ( zzbufovf ) {\r
830 err( eMsgd("parameter buffer overflow; size %d",ZZLEXBUFSIZE));\r
831 }\r
832 }\r
833 else {\r
834 /* terminate $[..] and #[..] */\r
835 if ( GenCC ) zzreplstr("))");\r
836 else zzreplstr(")");\r
837 zzmore();\r
838 }\r
839 }\r
840 else if ( topint() == '|' ) { /* end of simple [...] */\r
841 popint();\r
842 zzmore();\r
843 }\r
844 else zzmore();\r
845 >>\r
846\r
847consumeUntil\( [\ \t]* \{~[\}]+\} [\ \t]* \)\r
848 <<\r
849 NLA = 37;\r
850 \r
851 zzmore();\r
852 zzreplstr(inline_set(zzbegexpr+\r
853 strlen("consumeUntil(")));\r
854 >>\r
855\r
856consumeUntil\( ~[\)]+ \)\r
857 <<\r
858 NLA = 38;\r
859 zzmore(); \r
860 >>\r
861\r
862\n|\r|\r\n\r
863 <<\r
864 NLA = 39;\r
865 zzline++; zzmore(); DAWDLE; \r
866 >>\r
867\r
868\>\r
869 <<\r
870 NLA = 40;\r
871 zzmore(); \r
872 >>\r
873\r
874$\r
875 <<\r
876 NLA = 41;\r
877 zzmore(); \r
878 >>\r
879\r
880$$\r
881 <<\r
882 NLA = 42;\r
883 if ( !GenCC ) {zzreplstr("zzaRet"); zzmore();}\r
884 else err("$$ use invalid in C++ mode"); \r
885 >>\r
886\r
887$\[\]\r
888 <<\r
889 NLA = 43;\r
890 if ( !GenCC ) {zzreplstr("zzempty_attr"); zzmore();}\r
891 else err("$[] use invalid in C++ mode"); \r
892 >>\r
893\r
894$\[\r
895 <<\r
896 NLA = 44;\r
897 \r
898 pushint(']');\r
899 if ( !GenCC ) zzreplstr("zzconstr_attr(");\r
900 else err("$[..] use invalid in C++ mode");\r
901 zzmore();\r
902 >>\r
903\r
904$[0-9]+\r
905 <<\r
906 NLA = 45;\r
907 {\r
908 static char buf[100];\r
909 numericActionLabel=1; /* MR10 */\r
910 if ( strlen(zzbegexpr)>(size_t)85 )\r
911 fatal("$i attrib ref too big");\r
912 set_orel(atoi(zzbegexpr+1), &attribsRefdFromAction);\r
913 if ( !GenCC ) sprintf(buf,"zzaArg(zztasp%d,%s)",\r
914 BlkLevel-1,zzbegexpr+1);\r
915 else sprintf(buf,"_t%d%s",\r
916 BlkLevel-1,zzbegexpr+1);\r
917 zzreplstr(buf);\r
918 zzmore();\r
919 UsedOldStyleAttrib = 1;\r
920 if ( UsedNewStyleLabel )\r
921 err("cannot mix old-style $i with new-style labels");\r
922 }\r
923 >>\r
924\r
925$[0-9]+.\r
926 <<\r
927 NLA = 46;\r
928 {\r
929 static char buf[100];\r
930 numericActionLabel=1; /* MR10 */\r
931 if ( strlen(zzbegexpr)>(size_t)85 )\r
932 fatal("$i.field attrib ref too big");\r
933 zzbegexpr[strlen(zzbegexpr)-1] = ' ';\r
934 set_orel(atoi(zzbegexpr+1), &attribsRefdFromAction);\r
935 if ( !GenCC ) sprintf(buf,"zzaArg(zztasp%d,%s).",\r
936 BlkLevel-1,zzbegexpr+1);\r
937 else sprintf(buf,"_t%d%s.",\r
938 BlkLevel-1,zzbegexpr+1);\r
939 zzreplstr(buf);\r
940 zzmore();\r
941 UsedOldStyleAttrib = 1;\r
942 if ( UsedNewStyleLabel )\r
943 err("cannot mix old-style $i with new-style labels");\r
944 }\r
945 >>\r
946\r
947$[0-9]+.[0-9]+\r
948 <<\r
949 NLA = 47;\r
950 {\r
951 static char buf[100];\r
952 static char i[20], j[20];\r
953 char *p,*q;\r
954 numericActionLabel=1; /* MR10 */\r
955 if (strlen(zzbegexpr)>(size_t)85) fatal("$i.j attrib ref too big");\r
956 for (p=zzbegexpr+1,q= &i[0]; *p!='.'; p++) {\r
957 if ( q == &i[20] )\r
958 fatalFL("i of $i.j attrib ref too big",\r
959 FileStr[CurFile], zzline );\r
960 *q++ = *p;\r
961 }\r
962 *q = '\0';\r
963 for (p++, q= &j[0]; *p!='\0'; p++) {\r
964 if ( q == &j[20] )\r
965 fatalFL("j of $i.j attrib ref too big",\r
966 FileStr[CurFile], zzline );\r
967 *q++ = *p;\r
968 }\r
969 *q = '\0';\r
970 if ( !GenCC ) sprintf(buf,"zzaArg(zztasp%s,%s)",i,j);\r
971 else sprintf(buf,"_t%s%s",i,j);\r
972 zzreplstr(buf);\r
973 zzmore();\r
974 UsedOldStyleAttrib = 1;\r
975 if ( UsedNewStyleLabel )\r
976 err("cannot mix old-style $i with new-style labels");\r
977 }\r
978 >>\r
979\r
980$[_a-zA-Z][_a-zA-Z0-9]*\r
981 <<\r
982 NLA = 48;\r
983 { static char buf[300]; LabelEntry *el;\r
984 zzbegexpr[0] = ' ';\r
985 if ( CurRule != NULL &&\r
986 strcmp(CurRule, &zzbegexpr[1])==0 ) {\r
987 if ( !GenCC ) zzreplstr("zzaRet");\r
988 }\r
989 else if ( CurRetDef != NULL &&\r
990 strmember(CurRetDef, &zzbegexpr[1])) {\r
991 if ( hasMultipleOperands( CurRetDef ) ) {\r
992 require (strlen(zzbegexpr)<=(size_t)285,\r
993 "$retval attrib ref too big");\r
994 sprintf(buf,"_retv.%s",&zzbegexpr[1]);\r
995 zzreplstr(buf);\r
996 }\r
997 else zzreplstr("_retv");\r
998 }\r
999 else if ( CurParmDef != NULL &&\r
1000 strmember(CurParmDef, &zzbegexpr[1])) {\r
1001 ;\r
1002 }\r
1003 else if ( Elabel==NULL ) {\r
1004 { err("$-variables in actions outside of rules are not allowed"); }\r
1005 } else if ( (el=(LabelEntry *)hash_get(Elabel, &zzbegexpr[1]))!=NULL ) {\r
1006 /* MR10 */\r
1007 /* MR10 */ /* element labels might exist without an elem when */\r
1008 /* MR10 */ /* it is a forward reference (to a rule) */\r
1009 /* MR10 */\r
1010 /* MR10 */ if ( GenCC && (el->elem == NULL || el->elem->ntype==nRuleRef) )\r
1011 /* MR10 */ { err(eMsg1("There are no token ptrs for rule references: '$%s'",&zzbegexpr[1])); }\r
1012 /* MR10 */\r
1013 /* MR10 */ if ( !GenCC && (el->elem == NULL || el->elem->ntype==nRuleRef) && GenAST) {\r
1014 /* MR10 */ err("You can no longer use attributes returned by rules when also using ASTs");\r
1015 /* MR10 */ err(" Use upward inheritance (\"rule >[Attrib a] : ... <<$a=...\>\>\")");\r
1016 /* MR10 */ };\r
1017 /* MR10 */\r
1018 /* MR10 */ /* keep track of <<... $label ...>> for semantic predicates in guess mode */\r
1019 /* MR10 */ /* element labels contain pointer to the owners node */\r
1020 /* MR10 */\r
1021 /* MR10 */ if (el->elem != NULL && el->elem->ntype == nToken) {\r
1022 /* MR10 */ list_add(&CurActionLabels,el);\r
1023 /* MR10 */ };\r
1024}\r
1025else\r
1026warn(eMsg1("$%s not parameter, return value, (defined) element label",&zzbegexpr[1]));\r
1027}\r
1028zzmore();\r
1029 >>\r
1030\r
1031#0\r
1032 <<\r
1033 NLA = 49;\r
1034 zzreplstr("(*_root)"); zzmore(); chkGTFlag(); \r
1035 >>\r
1036\r
1037#\[\]\r
1038 <<\r
1039 NLA = 50;\r
1040 if ( GenCC ) {\r
1041 if (NewAST) zzreplstr("(newAST)");\r
1042 else zzreplstr("(new AST)");}\r
1043 else {zzreplstr("zzastnew()");} zzmore();\r
1044 chkGTFlag();\r
1045 >>\r
1046\r
1047#\(\)\r
1048 <<\r
1049 NLA = 51;\r
1050 zzreplstr("NULL"); zzmore(); chkGTFlag(); \r
1051 >>\r
1052\r
1053#[0-9]+\r
1054 <<\r
1055 NLA = 52;\r
1056 {\r
1057 static char buf[100];\r
1058 if ( strlen(zzbegexpr)>(size_t)85 )\r
1059 fatal("#i AST ref too big");\r
1060 if ( GenCC ) sprintf(buf,"_ast%d%s",BlkLevel-1,zzbegexpr+1);\r
1061 else sprintf(buf,"zzastArg(%s)",zzbegexpr+1);\r
1062 zzreplstr(buf);\r
1063 zzmore();\r
1064 set_orel(atoi(zzbegexpr+1), &AST_nodes_refd_in_actions);\r
1065 chkGTFlag();\r
1066 }\r
1067 >>\r
1068\r
1069#line[\ \t]* [0-9]+ {[\ \t]* \"~[\"]+\" ([\ \t]* [0-9]*)* } (\n|\r|\r\n)\r
1070 <<\r
1071 NLA = 53;\r
1072 \r
1073 zzline = atoi(zzbegexpr+5) - 1; zzline++; zzmore();\r
1074 getFileNameFromTheLineInfo(FileStr[CurFile], zzbegexpr);\r
1075 >>\r
1076\r
1077#line ~[\n\r]* (\n|\r|\r\n)\r
1078 <<\r
1079 NLA = 54;\r
1080 \r
1081 zzline++; zzmore();\r
1082 >>\r
1083\r
1084#[_a-zA-Z][_a-zA-Z0-9]*\r
1085 <<\r
1086 NLA = 55;\r
1087 \r
1088 if ( !(strcmp(zzbegexpr, "#ifdef")==0 ||\r
1089 strcmp(zzbegexpr, "#if")==0 ||\r
1090 strcmp(zzbegexpr, "#else")==0 ||\r
1091 strcmp(zzbegexpr, "#endif")==0 ||\r
1092 strcmp(zzbegexpr, "#ifndef")==0 ||\r
1093 strcmp(zzbegexpr, "#define")==0 ||\r
1094 strcmp(zzbegexpr, "#pragma")==0 ||\r
1095 strcmp(zzbegexpr, "#undef")==0 ||\r
1096 strcmp(zzbegexpr, "#import")==0 ||\r
1097 strcmp(zzbegexpr, "#line")==0 ||\r
1098 strcmp(zzbegexpr, "#include")==0 ||\r
1099 strcmp(zzbegexpr, "#error")==0) )\r
1100 {\r
1101 static char buf[100];\r
1102 sprintf(buf, "%s_ast", zzbegexpr+1);\r
1103 /* MR27 */ list_add(&CurAstLabelsInActions, mystrdup(zzbegexpr+1));\r
1104 zzreplstr(buf);\r
1105 chkGTFlag();\r
1106 }\r
1107 zzmore();\r
1108 >>\r
1109\r
1110#\[\r
1111 <<\r
1112 NLA = 56;\r
1113 \r
1114 pushint(']');\r
1115 if ( GenCC ) {\r
1116 if (NewAST) zzreplstr("(newAST(");\r
1117 else zzreplstr("(new AST("); }\r
1118 else zzreplstr("zzmk_ast(zzastnew(),");\r
1119 zzmore();\r
1120 chkGTFlag();\r
1121 >>\r
1122\r
1123#\(\r
1124 <<\r
1125 NLA = 57;\r
1126 \r
1127 pushint('}');\r
1128 if ( GenCC ) {\r
1129 if (tmakeInParser) {\r
1130 zzreplstr("tmake(");\r
1131 }\r
1132 else {\r
1133 zzreplstr("ASTBase::tmake(");\r
1134 }\r
1135 }\r
1136 else {\r
1137 zzreplstr("zztmake(");\r
1138 }\r
1139 zzmore();\r
1140 chkGTFlag();\r
1141 >>\r
1142\r
1143#\r
1144 <<\r
1145 NLA = 58;\r
1146 zzmore(); \r
1147 >>\r
1148\r
1149\)\r
1150 <<\r
1151 NLA = 59;\r
1152 \r
1153 if ( istackempty() )\r
1154 zzmore();\r
1155 else if ( topint()==')' ) {\r
1156 popint();\r
1157 }\r
1158 else if ( topint()=='}' ) {\r
1159 popint();\r
1160 /* terminate #(..) */\r
1161 zzreplstr(", NULL)");\r
1162 }\r
1163 zzmore();\r
1164 >>\r
1165\r
1166\[\r
1167 <<\r
1168 NLA = 60;\r
1169 \r
1170 pushint('|'); /* look for '|' to terminate simple [...] */\r
1171 zzmore();\r
1172 >>\r
1173\r
1174\(\r
1175 <<\r
1176 NLA = 61;\r
1177 \r
1178 pushint(')');\r
1179 zzmore();\r
1180 >>\r
1181\r
1182\\\]\r
1183 <<\r
1184 NLA = 62;\r
1185 zzreplstr("]"); zzmore(); \r
1186 >>\r
1187\r
1188\\\)\r
1189 <<\r
1190 NLA = 63;\r
1191 zzreplstr(")"); zzmore(); \r
1192 >>\r
1193\r
1194\\>\r
1195 <<\r
1196 NLA = 64;\r
1197 if (! tokenActionActive) zzreplstr(">"); /* MR1 */\r
1198 zzmore(); /* MR1 */\r
1199 >>\r
1200\r
1201'\r
1202 <<\r
1203 NLA = 65;\r
1204 zzmode(ACTION_CHARS); zzmore(); \r
1205 >>\r
1206\r
1207\"\r
1208 <<\r
1209 NLA = 66;\r
1210 zzmode(ACTION_STRINGS); zzmore(); \r
1211 >>\r
1212\r
1213\\$\r
1214 <<\r
1215 NLA = 67;\r
1216 zzreplstr("$"); zzmore(); \r
1217 >>\r
1218\r
1219\\#\r
1220 <<\r
1221 NLA = 68;\r
1222 zzreplstr("#"); zzmore(); \r
1223 >>\r
1224\r
1225\\(\n|\r|\r\n)\r
1226 <<\r
1227 NLA = 69;\r
1228 zzline++; zzmore(); \r
1229 >>\r
1230\r
1231\\~[\]\)>$#]\r
1232 <<\r
1233 NLA = 70;\r
1234 zzmore(); \r
1235 >>\r
1236\r
1237/\r
1238 <<\r
1239 NLA = 71;\r
1240 zzmore(); \r
1241 >>\r
1242\r
1243/\*\r
1244 <<\r
1245 NLA = 72;\r
1246 zzmode(ACTION_COMMENTS); zzmore(); \r
1247 >>\r
1248\r
1249\*/\r
1250 <<\r
1251 NLA = 73;\r
1252 warn("Missing /*; found dangling */ in action"); zzmore(); \r
1253 >>\r
1254\r
1255//\r
1256 <<\r
1257 NLA = 74;\r
1258 zzmode(ACTION_CPP_COMMENTS); zzmore(); \r
1259 >>\r
1260\r
1261~[\n\r\)\(\\$#\>\]\[\"'/]+\r
1262 <<\r
1263 NLA = 75;\r
1264 zzmore(); \r
1265 >>\r
1266\r
1267\r
1268%%PARSE_ENUM_FILE\r
1269\r
1270@\r
1271 <<\r
1272 NLA = Eof;\r
1273 ; \r
1274 >>\r
1275\r
1276[\t\ ]+\r
1277 <<\r
1278 NLA = 137;\r
1279 zzskip(); \r
1280 >>\r
1281\r
1282\n|\r|\r\n\r
1283 <<\r
1284 NLA = 138;\r
1285 zzline++; zzskip(); \r
1286 >>\r
1287\r
1288//\r
1289 <<\r
1290 NLA = 139;\r
1291 zzmode(TOK_DEF_CPP_COMMENTS); zzmore(); \r
1292 >>\r
1293\r
1294/\*\r
1295 <<\r
1296 NLA = 140;\r
1297 zzmode(TOK_DEF_COMMENTS); zzskip(); \r
1298 >>\r
1299\r
1300#ifdef\r
1301 <<\r
1302 NLA = 141;\r
1303 zzmode(TOK_DEF_CPP_COMMENTS); zzskip(); \r
1304 >>\r
1305\r
1306#if\r
1307 <<\r
1308 NLA = 142;\r
1309 zzmode(TOK_DEF_CPP_COMMENTS); zzskip(); \r
1310 >>\r
1311\r
1312#ifndef\r
1313 <<\r
1314 NLA = 143;\r
1315 ; \r
1316 >>\r
1317\r
1318#else\r
1319 <<\r
1320 NLA = 144;\r
1321 zzmode(TOK_DEF_CPP_COMMENTS); zzskip(); \r
1322 >>\r
1323\r
1324#endif\r
1325 <<\r
1326 NLA = 145;\r
1327 zzmode(TOK_DEF_CPP_COMMENTS); zzskip(); \r
1328 >>\r
1329\r
1330#undef\r
1331 <<\r
1332 NLA = 146;\r
1333 zzmode(TOK_DEF_CPP_COMMENTS); zzskip(); \r
1334 >>\r
1335\r
1336#import\r
1337 <<\r
1338 NLA = 147;\r
1339 zzmode(TOK_DEF_CPP_COMMENTS); zzskip(); \r
1340 >>\r
1341\r
1342#define\r
1343 <<\r
1344 NLA = 149;\r
1345 >>\r
1346\r
1347enum\r
1348 <<\r
1349 NLA = 151;\r
1350 >>\r
1351\r
1352\{\r
1353 <<\r
1354 NLA = 152;\r
1355 >>\r
1356\r
1357=\r
1358 <<\r
1359 NLA = 153;\r
1360 >>\r
1361\r
1362,\r
1363 <<\r
1364 NLA = 154;\r
1365 >>\r
1366\r
1367\}\r
1368 <<\r
1369 NLA = 155;\r
1370 >>\r
1371\r
1372;\r
1373 <<\r
1374 NLA = 156;\r
1375 >>\r
1376\r
1377[0-9]+\r
1378 <<\r
1379 NLA = INT;\r
1380 >>\r
1381\r
1382[a-zA-Z_][_a-zA-Z0-9]*\r
1383 <<\r
1384 NLA = ID;\r
1385 >>\r
1386\r
1387%%\r