Home | History | Annotate | Download | only in 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 %%
    399