git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1676 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			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();  
 | |
| 	>>
 | |
| 
 | |
| %%
 |