mirror of https://github.com/acidanthera/audk.git
399 lines
6.2 KiB
Plaintext
399 lines
6.2 KiB
Plaintext
<<
|
|
/* 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();
|
|
>>
|
|
|
|
%%
|