| << | |
| /* parser.dlg -- DLG Description of scanner | |
| * | |
| * Generated from: dlg_p.g | |
| * | |
| * Terence Parr, Will Cohen, and Hank Dietz: 1989-2001 | |
| * Purdue University Electrical Engineering | |
| * With AHPCRC, University of Minnesota | |
| * ANTLR Version 1.33MR33 | |
| */ | |
| #define ANTLR_VERSION 13333 | |
| #include "pcctscfg.h" | |
| #include "pccts_stdio.h" | |
| #include <ctype.h> | |
| #include "dlg.h" | |
| #include "antlr.h" | |
| #include "tokens.h" | |
| #include "dlgdef.h" | |
| LOOKAHEAD | |
| void | |
| #ifdef __USE_PROTOS | |
| zzerraction(void) | |
| #else | |
| zzerraction() | |
| #endif | |
| { | |
| (*zzerr)("invalid token"); | |
| zzadvance(); | |
| zzskip(); | |
| } | |
| >> | |
| <<%%lexaction | |
| int func_action; /* should actions be turned into functions?*/ | |
| int lex_mode_counter = 0; /* keeps track of the number of %%names */ | |
| /* MR1 */ | |
| /* MR1 11-Apr-97 Provide mechanism for inserting code into DLG class */ | |
| /* MR1 via <<%%lexmember...>> */ | |
| /* MR1 */ | |
| int lexMember = 0; /* <<%%lexmemeber ...>> MR1 */ | |
| int lexAction = 0; /* <<%%lexaction ...>> MR1 */ | |
| int parserClass = 0; /* <<%%parserclass ...>> MR1 */ | |
| int lexPrefix = 0; /* <<%%lexprefix ...>> MR1 */ | |
| char theClassName[100]; /* MR11 */ | |
| char *pClassName=theClassName; /* MR11 */ | |
| int firstLexMember=1; /* MR1 */ | |
| #ifdef __USE_PROTOS | |
| void xxputc(int c) { /* MR1 */ | |
| #else | |
| void xxputc(c) /* MR1 */ | |
| int c; /* MR1 */ | |
| { /* MR1 */ | |
| #endif | |
| if (parserClass) { /* MR1 */ | |
| *pClassName++=c; /* MR1 */ | |
| *pClassName=0; /* MR1 */ | |
| } else if (lexMember || lexPrefix) { /* MR1 */ | |
| if (class_stream != NULL) fputc(c,class_stream); /* MR1 */ | |
| } else { /* MR1 */ | |
| fputc(c,OUT); /* MR1 */ | |
| }; /* MR1 */ | |
| } /* MR1 */ | |
| #ifdef __USE_PROTOS | |
| void xxprintf(char *format,char *string) { /* MR1 */ | |
| #else | |
| void xxprintf(format,string) /* MR1 */ | |
| char *format; /* MR1 */ | |
| char *string; /* MR1 */ | |
| { /* MR1 */ | |
| #endif | |
| if (lexMember || lexPrefix || parserClass) { /* MR1 */ | |
| if (class_stream != NULL) /* MR1 */ | |
| fprintf(class_stream,format,string); /* MR1 */ | |
| } else { /* MR1 */ | |
| fprintf(OUT,format,string); /* MR1 */ | |
| }; /* MR1 */ | |
| } /* MR1 */ | |
| >> | |
| %%START | |
| @ | |
| << | |
| NLA = 1; | |
| >> | |
| [\r\t\ ]+ | |
| << | |
| NLA = 2; | |
| zzskip(); | |
| >> | |
| \n | |
| << | |
| NLA = 3; | |
| zzline++; zzskip(); DAWDLE; | |
| >> | |
| \@ | |
| << | |
| NLA = L_EOF; | |
| >> | |
| \%\% | |
| << | |
| NLA = PER_PER; | |
| >> | |
| \%\%[a-zA-Z_][a-zA-Z0-9_]* | |
| << | |
| NLA = NAME_PER_PER; | |
| p_mode_def(&zzlextext[2],lex_mode_counter++); | |
| >> | |
| \<\<\%\%lexmember | |
| << | |
| NLA = LEXMEMBER; | |
| lexMember=1; /* MR1 */ | |
| if (firstLexMember != 0) { /* MR1 */ | |
| firstLexMember=0; /* MR1 */ | |
| p_class_def1(); /* MR1 */ | |
| }; /* MR1 */ | |
| zzmode(ACT); /* MR1 */ | |
| >> | |
| \<\<\%\%lexaction | |
| << | |
| NLA = LEXACTION; | |
| lexAction=1;zzmode(ACT); | |
| >> | |
| \<\<\%\%parserclass | |
| << | |
| NLA = PARSERCLASS; | |
| parserClass=1; /* MR1 */ | |
| zzmode(ACT); /* MR1 */ | |
| >> | |
| \<\<\%\%lexprefix | |
| << | |
| NLA = LEXPREFIX; | |
| lexPrefix=1;zzmode(ACT); | |
| >> | |
| \<\< | |
| << | |
| NLA = ACTION; | |
| if (func_action) | |
| fprintf(OUT,"\n%s %sact%d()\n{ ", | |
| gen_cpp?"ANTLRTokenType":"static void", | |
| gen_cpp?ClassName("::"):"", ++action_no); | |
| zzmode(ACT); zzskip(); | |
| >> | |
| \>\> | |
| << | |
| NLA = GREAT_GREAT; | |
| >> | |
| \{ | |
| << | |
| NLA = L_BRACE; | |
| >> | |
| \} | |
| << | |
| NLA = R_BRACE; | |
| >> | |
| \( | |
| << | |
| NLA = L_PAR; | |
| >> | |
| \) | |
| << | |
| NLA = R_PAR; | |
| >> | |
| \[ | |
| << | |
| NLA = L_BRACK; | |
| >> | |
| \] | |
| << | |
| NLA = R_BRACK; | |
| >> | |
| \* | |
| << | |
| NLA = ZERO_MORE; | |
| >> | |
| \+ | |
| << | |
| NLA = ONE_MORE; | |
| >> | |
| \| | |
| << | |
| NLA = OR; | |
| >> | |
| \- | |
| << | |
| NLA = RANGE; | |
| >> | |
| \~ | |
| << | |
| NLA = NOT; | |
| >> | |
| \\0[0-7]* | |
| << | |
| NLA = OCTAL_VALUE; | |
| {int t; sscanf(&zzlextext[1],"%o",&t); zzlextext[0] = t;} | |
| >> | |
| \\0[Xx][0-9a-fA-F]+ | |
| << | |
| NLA = HEX_VALUE; | |
| {int t; sscanf(&zzlextext[3],"%x",&t); zzlextext[0] = t;} | |
| >> | |
| \\[1-9][0-9]* | |
| << | |
| NLA = DEC_VALUE; | |
| {int t; sscanf(&zzlextext[1],"%d",&t); zzlextext[0] = t;} | |
| >> | |
| \\t | |
| << | |
| NLA = TAB; | |
| zzlextext[0] = '\t'; | |
| >> | |
| \\n | |
| << | |
| NLA = NL; | |
| zzlextext[0] = '\n'; | |
| >> | |
| \\r | |
| << | |
| NLA = CR; | |
| zzlextext[0] = '\r'; | |
| >> | |
| \\b | |
| << | |
| NLA = BS; | |
| zzlextext[0] = '\b'; | |
| >> | |
| \\ \n | |
| << | |
| NLA = CONTINUATION; | |
| zzline++; zzskip(); | |
| >> | |
| \\~[tnrb] | |
| << | |
| NLA = LIT; | |
| zzlextext[0] = zzlextext[1]; | |
| >> | |
| ~[\\] | |
| << | |
| NLA = REGCHAR; | |
| >> | |
| %%ACT | |
| @ | |
| << | |
| NLA = 1; | |
| error("unterminated action", zzline); zzmode(START); | |
| >> | |
| \>\> | |
| << | |
| NLA = ACTION; | |
| if (func_action) fprintf(OUT,"}\n\n"); | |
| zzmode(START); | |
| /* MR1 */ | |
| /* MR1 11-Apr-97 Provide mechanism for inserting code into DLG class */ | |
| /* MR1 via <<%%lexmember ...>> */ | |
| /* MR1 This is a consequence of not saving actions */ | |
| /* MR1 */ | |
| /* MR1 */ parserClass=0; | |
| /* MR1 */ lexPrefix=0; | |
| /* MR1 */ lexAction=0; | |
| /* MR1 */ lexMember=0; | |
| >> | |
| \> | |
| << | |
| NLA = 34; | |
| xxputc(zzlextext[0]); zzskip(); | |
| >> | |
| \\\> | |
| << | |
| NLA = 35; | |
| xxputc('>'); zzskip(); | |
| >> | |
| \\ | |
| << | |
| NLA = 36; | |
| xxputc('\\'); zzskip(); | |
| >> | |
| \n | |
| << | |
| NLA = 37; | |
| xxputc(zzlextext[0]); ++zzline; zzskip(); | |
| >> | |
| /\* | |
| << | |
| NLA = 38; | |
| zzmode(ACTION_COMMENTS); /* MR1 */ | |
| xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */ | |
| >> | |
| // | |
| << | |
| NLA = 39; | |
| zzmode(ACTION_CPP_COMMENTS); /* MR1 */ | |
| xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */ | |
| >> | |
| ~[] | |
| << | |
| NLA = 40; | |
| xxputc(zzlextext[0]); zzskip(); | |
| >> | |
| %%ACTION_COMMENTS | |
| @ | |
| << | |
| NLA = 1; | |
| >> | |
| \*/ | |
| << | |
| NLA = 41; | |
| zzmode(ACT); /* MR1 */ | |
| xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */ | |
| >> | |
| [\n\r] | |
| << | |
| NLA = 42; | |
| zzline++; xxputc(zzlextext[0]); zzskip(); | |
| >> | |
| ~[] | |
| << | |
| NLA = 43; | |
| xxputc(zzlextext[0]); zzskip(); | |
| >> | |
| %%ACTION_CPP_COMMENTS | |
| @ | |
| << | |
| NLA = 1; | |
| >> | |
| [\n\r] | |
| << | |
| NLA = 44; | |
| zzmode(ACT); zzline++; /* MR1 */ | |
| xxprintf("%s", &(zzlextext[0])); zzskip(); /* MR1 */ | |
| >> | |
| ~[] | |
| << | |
| NLA = 45; | |
| xxputc(zzlextext[0]); zzskip(); | |
| >> | |
| %% |