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