~ubuntu-branches/ubuntu/utopic/cccc/utopic

« back to all changes in this revision

Viewing changes to pccts/dlg/parser.dlg

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2003-08-23 04:34:05 UTC
  • Revision ID: james.westby@ubuntu.com-20030823043405-xnzd3mn3hwtvi6dr
Tags: upstream-3.pre81
ImportĀ upstreamĀ versionĀ 3.pre81

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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-1999
 
7
 * Purdue University Electrical Engineering
 
8
 * With AHPCRC, University of Minnesota
 
9
 * ANTLR Version 1.33MR20
 
10
 */
 
11
 
 
12
#define ANTLR_VERSION   13320
 
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
%%