]>
Commit | Line | Data |
---|---|---|
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 | |
21 | LOOKAHEAD\r | |
22 | \r | |
23 | void\r | |
24 | #ifdef __USE_PROTOS\r | |
25 | zzerraction(void)\r | |
26 | #else\r | |
27 | zzerraction()\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 | |
38 | int func_action; /* should actions be turned into functions?*/\r | |
39 | int 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 | |
44 | int lexMember = 0; /* <<%%lexmemeber ...>> MR1 */\r | |
45 | int lexAction = 0; /* <<%%lexaction ...>> MR1 */\r | |
46 | int parserClass = 0; /* <<%%parserclass ...>> MR1 */\r | |
47 | int lexPrefix = 0; /* <<%%lexprefix ...>> MR1 */\r | |
48 | char theClassName[100]; /* MR11 */\r | |
49 | char *pClassName=theClassName; /* MR11 */\r | |
50 | int firstLexMember=1; /* MR1 */\r | |
51 | \r | |
52 | #ifdef __USE_PROTOS\r | |
53 | void 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 |