]> git.proxmox.com Git - mirror_edk2.git/blame - Tools/CodeTools/TianoTools/Pccts/dlg/parser.dlg
Restructuring for better separation of Tool packages.
[mirror_edk2.git] / Tools / CodeTools / TianoTools / Pccts / dlg / parser.dlg
CommitLineData
878ddf1f 1<<\r
2/* parser.dlg -- DLG Description of scanner\r
3 *\r
4 * Generated from: dlg_p.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 <ctype.h>\r
17#include "dlg.h"\r
18#include "antlr.h"\r
19#include "tokens.h"\r
20#include "dlgdef.h"\r
21LOOKAHEAD\r
22\r
23void\r
24#ifdef __USE_PROTOS\r
25zzerraction(void)\r
26#else\r
27zzerraction()\r
28#endif\r
29{\r
30 (*zzerr)("invalid token");\r
31 zzadvance();\r
32 zzskip();\r
33}\r
34>>\r
35\r
36<<%%lexaction\r
37\r
38int func_action; /* should actions be turned into functions?*/\r
39int lex_mode_counter = 0; /* keeps track of the number of %%names */\r
40/* MR1 */\r
41/* MR1 11-Apr-97 Provide mechanism for inserting code into DLG class */\r
42/* MR1 via <<%%lexmember...>> */\r
43/* MR1 */\r
44int lexMember = 0; /* <<%%lexmemeber ...>> MR1 */\r
45int lexAction = 0; /* <<%%lexaction ...>> MR1 */\r
46int parserClass = 0; /* <<%%parserclass ...>> MR1 */\r
47int lexPrefix = 0; /* <<%%lexprefix ...>> MR1 */\r
48char theClassName[100]; /* MR11 */\r
49char *pClassName=theClassName; /* MR11 */\r
50int firstLexMember=1; /* MR1 */\r
51\r
52#ifdef __USE_PROTOS\r
53void xxputc(int c) { /* MR1 */\r
54#else\r
55 void xxputc(c) /* MR1 */\r
56 int c; /* MR1 */\r
57 { /* MR1 */\r
58#endif\r
59 if (parserClass) { /* MR1 */\r
60 *pClassName++=c; /* MR1 */\r
61 *pClassName=0; /* MR1 */\r
62 } else if (lexMember || lexPrefix) { /* MR1 */\r
63 if (class_stream != NULL) fputc(c,class_stream); /* MR1 */\r
64 } else { /* MR1 */\r
65 fputc(c,OUT); /* MR1 */\r
66 }; /* MR1 */\r
67 } /* MR1 */\r
68 \r
69#ifdef __USE_PROTOS\r
70 void xxprintf(char *format,char *string) { /* MR1 */\r
71#else\r
72 void xxprintf(format,string) /* MR1 */\r
73 char *format; /* MR1 */\r
74 char *string; /* MR1 */\r
75 { /* MR1 */\r
76#endif\r
77 if (lexMember || lexPrefix || parserClass) { /* MR1 */\r
78 if (class_stream != NULL) /* MR1 */\r
79 fprintf(class_stream,format,string); /* MR1 */\r
80 } else { /* MR1 */\r
81 fprintf(OUT,format,string); /* MR1 */\r
82 }; /* MR1 */\r
83 } /* MR1 */\r
84>>\r
85\r
86\r
87%%START\r
88\r
89@\r
90 <<\r
91 NLA = 1;\r
92 >>\r
93\r
94[\r\t\ ]+\r
95 <<\r
96 NLA = 2;\r
97 zzskip(); \r
98 >>\r
99\r
100\n\r
101 <<\r
102 NLA = 3;\r
103 zzline++; zzskip(); DAWDLE; \r
104 >>\r
105\r
106\@\r
107 <<\r
108 NLA = L_EOF;\r
109 >>\r
110\r
111\%\%\r
112 <<\r
113 NLA = PER_PER;\r
114 >>\r
115\r
116\%\%[a-zA-Z_][a-zA-Z0-9_]*\r
117 <<\r
118 NLA = NAME_PER_PER;\r
119 p_mode_def(&zzlextext[2],lex_mode_counter++); \r
120 >>\r
121\r
122\<\<\%\%lexmember\r
123 <<\r
124 NLA = LEXMEMBER;\r
125 lexMember=1; /* MR1 */\r
126 if (firstLexMember != 0) { /* MR1 */\r
127 firstLexMember=0; /* MR1 */\r
128 p_class_def1(); /* MR1 */\r
129 }; /* MR1 */\r
130 zzmode(ACT); /* MR1 */\r
131 >>\r
132\r
133\<\<\%\%lexaction\r
134 <<\r
135 NLA = LEXACTION;\r
136 lexAction=1;zzmode(ACT); \r
137 >>\r
138\r
139\<\<\%\%parserclass\r
140 <<\r
141 NLA = PARSERCLASS;\r
142 parserClass=1; /* MR1 */\r
143 zzmode(ACT); /* MR1 */\r
144 >>\r
145\r
146\<\<\%\%lexprefix\r
147 <<\r
148 NLA = LEXPREFIX;\r
149 lexPrefix=1;zzmode(ACT); \r
150 >>\r
151\r
152\<\<\r
153 <<\r
154 NLA = ACTION;\r
155 if (func_action)\r
156 fprintf(OUT,"\n%s %sact%d()\n{ ",\r
157 gen_cpp?"ANTLRTokenType":"static void",\r
158 gen_cpp?ClassName("::"):"", ++action_no);\r
159 zzmode(ACT); zzskip();\r
160 >>\r
161\r
162\>\>\r
163 <<\r
164 NLA = GREAT_GREAT;\r
165 >>\r
166\r
167\{\r
168 <<\r
169 NLA = L_BRACE;\r
170 >>\r
171\r
172\}\r
173 <<\r
174 NLA = R_BRACE;\r
175 >>\r
176\r
177\(\r
178 <<\r
179 NLA = L_PAR;\r
180 >>\r
181\r
182\)\r
183 <<\r
184 NLA = R_PAR;\r
185 >>\r
186\r
187\[\r
188 <<\r
189 NLA = L_BRACK;\r
190 >>\r
191\r
192\]\r
193 <<\r
194 NLA = R_BRACK;\r
195 >>\r
196\r
197\*\r
198 <<\r
199 NLA = ZERO_MORE;\r
200 >>\r
201\r
202\+\r
203 <<\r
204 NLA = ONE_MORE;\r
205 >>\r
206\r
207\|\r
208 <<\r
209 NLA = OR;\r
210 >>\r
211\r
212\-\r
213 <<\r
214 NLA = RANGE;\r
215 >>\r
216\r
217\~\r
218 <<\r
219 NLA = NOT;\r
220 >>\r
221\r
222\\0[0-7]*\r
223 <<\r
224 NLA = OCTAL_VALUE;\r
225 {int t; sscanf(&zzlextext[1],"%o",&t); zzlextext[0] = t;} \r
226 >>\r
227\r
228\\0[Xx][0-9a-fA-F]+\r
229 <<\r
230 NLA = HEX_VALUE;\r
231 {int t; sscanf(&zzlextext[3],"%x",&t); zzlextext[0] = t;} \r
232 >>\r
233\r
234\\[1-9][0-9]*\r
235 <<\r
236 NLA = DEC_VALUE;\r
237 {int t; sscanf(&zzlextext[1],"%d",&t); zzlextext[0] = t;} \r
238 >>\r
239\r
240\\t\r
241 <<\r
242 NLA = TAB;\r
243 zzlextext[0] = '\t'; \r
244 >>\r
245\r
246\\n\r
247 <<\r
248 NLA = NL;\r
249 zzlextext[0] = '\n'; \r
250 >>\r
251\r
252\\r\r
253 <<\r
254 NLA = CR;\r
255 zzlextext[0] = '\r'; \r
256 >>\r
257\r
258\\b\r
259 <<\r
260 NLA = BS;\r
261 zzlextext[0] = '\b'; \r
262 >>\r
263\r
264\\ \n\r
265 <<\r
266 NLA = CONTINUATION;\r
267 zzline++; zzskip(); \r
268 >>\r
269\r
270\\~[tnrb]\r
271 <<\r
272 NLA = LIT;\r
273 zzlextext[0] = zzlextext[1]; \r
274 >>\r
275\r
276~[\\]\r
277 <<\r
278 NLA = REGCHAR;\r
279 >>\r
280\r
281\r
282%%ACT\r
283\r
284@\r
285 <<\r
286 NLA = 1;\r
287 error("unterminated action", zzline); zzmode(START); \r
288 >>\r
289\r
290\>\>\r
291 <<\r
292 NLA = ACTION;\r
293 if (func_action) fprintf(OUT,"}\n\n");\r
294 zzmode(START);\r
295 /* MR1 */\r
296 /* MR1 11-Apr-97 Provide mechanism for inserting code into DLG class */\r
297 /* MR1 via <<%%lexmember ...>> */\r
298 /* MR1 This is a consequence of not saving actions */\r
299 /* MR1 */\r
300 /* MR1 */ parserClass=0; \r
301 /* MR1 */ lexPrefix=0;\r
302 /* MR1 */ lexAction=0;\r
303 /* MR1 */ lexMember=0;\r
304 >>\r
305\r
306\>\r
307 <<\r
308 NLA = 34;\r
309 xxputc(zzlextext[0]); zzskip(); \r
310 >>\r
311\r
312\\\>\r
313 <<\r
314 NLA = 35;\r
315 xxputc('>'); zzskip(); \r
316 >>\r
317\r
318\\\r
319 <<\r
320 NLA = 36;\r
321 xxputc('\\'); zzskip(); \r
322 >>\r
323\r
324\n\r
325 <<\r
326 NLA = 37;\r
327 xxputc(zzlextext[0]); ++zzline; zzskip(); \r
328 >>\r
329\r
330/\*\r
331 <<\r
332 NLA = 38;\r
333 zzmode(ACTION_COMMENTS); /* MR1 */\r
334 xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */\r
335 >>\r
336\r
337//\r
338 <<\r
339 NLA = 39;\r
340 zzmode(ACTION_CPP_COMMENTS); /* MR1 */\r
341 xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */\r
342 >>\r
343\r
344~[]\r
345 <<\r
346 NLA = 40;\r
347 xxputc(zzlextext[0]); zzskip(); \r
348 >>\r
349\r
350\r
351%%ACTION_COMMENTS\r
352\r
353@\r
354 <<\r
355 NLA = 1;\r
356 >>\r
357\r
358\*/\r
359 <<\r
360 NLA = 41;\r
361 zzmode(ACT); /* MR1 */\r
362 xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */\r
363 >>\r
364\r
365[\n\r]\r
366 <<\r
367 NLA = 42;\r
368 zzline++; xxputc(zzlextext[0]); zzskip(); \r
369 >>\r
370\r
371~[]\r
372 <<\r
373 NLA = 43;\r
374 xxputc(zzlextext[0]); zzskip(); \r
375 >>\r
376\r
377\r
378%%ACTION_CPP_COMMENTS\r
379\r
380@\r
381 <<\r
382 NLA = 1;\r
383 >>\r
384\r
385[\n\r]\r
386 <<\r
387 NLA = 44;\r
388 zzmode(ACT); zzline++; /* MR1 */\r
389 xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */\r
390 >>\r
391\r
392~[]\r
393 <<\r
394 NLA = 45;\r
395 xxputc(zzlextext[0]); zzskip(); \r
396 >>\r
397\r
398%%\r