git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1676 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			1388 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			1388 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| <<
 | |
| /* parser.dlg -- DLG Description of scanner
 | |
|  *
 | |
|  * Generated from: antlr.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 "pcctscfg.h"
 | |
| #include "set.h"
 | |
| #include <ctype.h>
 | |
| #include "syn.h"
 | |
| #include "hash.h"
 | |
| #include "generic.h"
 | |
| #define zzcr_attr(attr,tok,t)
 | |
| #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
 | |
| 
 | |
| /* maintained, but not used for now */
 | |
| set AST_nodes_refd_in_actions = set_init;
 | |
| int inAlt = 0;
 | |
| set attribsRefdFromAction = set_init; /* MR20 */
 | |
| int UsedOldStyleAttrib = 0;
 | |
| int UsedNewStyleLabel = 0;
 | |
| #ifdef __USE_PROTOS
 | |
| char *inline_set(char *);
 | |
| #else
 | |
| char *inline_set();
 | |
| #endif
 | |
| 
 | |
| /* MR1	10-Apr-97  MR1  Previously unable to put right shift operator	    */
 | |
| /* MR1					in DLG action			                    */
 | |
| 
 | |
| int tokenActionActive=0;                                            /* MR1 */
 | |
| 
 | |
|   
 | |
| >>
 | |
| 
 | |
| <<%%lexaction
 | |
| 
 | |
| 
 | |
| static char *
 | |
| #ifdef __USE_PROTOS
 | |
| getFileNameFromTheLineInfo(char *toStr, char *fromStr)
 | |
| #else
 | |
| getFileNameFromTheLineInfo(toStr, fromStr)
 | |
| char *toStr, *fromStr;
 | |
| #endif
 | |
| {
 | |
|   int i, j, k;
 | |
|   
 | |
|   if (!fromStr || !toStr) return toStr;
 | |
|   
 | |
|   /* find the first " */
 | |
|   
 | |
|   for (i=0;
 | |
|   (i<MaxFileName) &&
 | |
|   (fromStr[i] != '\n') &&
 | |
|   (fromStr[i] != '\r') &&
 | |
|   (fromStr[i] != '\"');
 | |
|   i++) /* nothing */ ;
 | |
|   
 | |
|   if ( (i == MaxFileName) ||
 | |
|   (fromStr[i] == '\n') ||
 | |
|   (fromStr[i] == '\r') ) {
 | |
|   return toStr;
 | |
| }
 | |
| 
 | |
|   /* find the second " */
 | |
| 
 | |
|   for (j=i+1;
 | |
| (j<MaxFileName) &&
 | |
| (fromStr[j] != '\n') &&
 | |
| (fromStr[j] != '\r') &&
 | |
| (fromStr[j] != '\"');
 | |
| j++) /* nothing */ ;
 | |
| 
 | |
|   if ((j == MaxFileName) ||
 | |
| (fromStr[j] == '\n') ||
 | |
| (fromStr[j] == '\r') ) {
 | |
|   return toStr;
 | |
| }
 | |
| 
 | |
|   /* go back until the last / or \ */
 | |
| 
 | |
|   for (k=j-1;
 | |
| (fromStr[k] != '\"') &&
 | |
| (fromStr[k] != '/') &&
 | |
| (fromStr[k] != '\\');
 | |
| k--) /* nothing */ ;
 | |
| 
 | |
|   /* copy the string after " / or \ into toStr */
 | |
| 
 | |
|   for (i=k+1; fromStr[i] != '\"'; i++) {
 | |
| toStr[i-k-1] = fromStr[i];
 | |
| }
 | |
| 
 | |
|   toStr[i-k-1] = '\0';
 | |
| 
 | |
|   return toStr;
 | |
| }
 | |
| 
 | |
| /* MR14 end of a block to support #line in antlr source code */
 | |
| 
 | |
|   
 | |
| >>
 | |
| 
 | |
| <<%%lexaction
 | |
| 
 | |
| #ifdef __USE_PROTOS
 | |
| void mark_label_used_in_sem_pred(LabelEntry *le)              /* MR10 */
 | |
| #else
 | |
| void mark_label_used_in_sem_pred(le)                          /* MR10 */
 | |
| LabelEntry    *le;
 | |
| #endif
 | |
| {
 | |
|   TokNode   *tn;
 | |
|   require (le->elem->ntype == nToken,"mark_label_used... ntype != nToken");
 | |
|   tn=(TokNode *)le->elem;
 | |
|   require (tn->label != 0,"mark_label_used... TokNode has no label");
 | |
|   tn->label_used_in_semantic_pred=1;
 | |
| }
 | |
| >>
 | |
| 
 | |
| 
 | |
| %%START
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
|     /* L o o k  F o r  A n o t h e r  F i l e */
 | |
|     {
 | |
|       FILE *new_input;
 | |
|       new_input = NextFile();
 | |
|       if ( new_input == NULL ) { NLA=Eof; return; }
 | |
|       fclose( input );
 | |
|       input = new_input;
 | |
|       zzrdstream( input );
 | |
|       zzskip();	/* Skip the Eof (@) char i.e continue */
 | |
|     }
 | |
| 	>>
 | |
| 
 | |
| [\t\ ]+
 | |
| 	<<
 | |
| 		NLA = 76;
 | |
|     zzskip();   
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 77;
 | |
|     zzline++; zzskip();   
 | |
| 	>>
 | |
| 
 | |
| \[
 | |
| 	<<
 | |
| 		NLA = 78;
 | |
|     zzmode(ACTIONS); zzmore();
 | |
|     istackreset();
 | |
|     pushint(']');   
 | |
| 	>>
 | |
| 
 | |
| \<\<
 | |
| 	<<
 | |
| 		NLA = 79;
 | |
|     action_file=CurFile; action_line=zzline;
 | |
|     zzmode(ACTIONS); zzmore();
 | |
|     list_free(&CurActionLabels,0);       /* MR10 */
 | |
|     numericActionLabel=0;                /* MR10 */
 | |
|     istackreset();
 | |
|     pushint('>');   
 | |
| 	>>
 | |
| 
 | |
| \"
 | |
| 	<<
 | |
| 		NLA = 80;
 | |
|     zzmode(STRINGS); zzmore();   
 | |
| 	>>
 | |
| 
 | |
| /\*
 | |
| 	<<
 | |
| 		NLA = 81;
 | |
|     zzmode(COMMENTS); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| \*/
 | |
| 	<<
 | |
| 		NLA = 82;
 | |
|     warn("Missing /*; found dangling */"); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| //
 | |
| 	<<
 | |
| 		NLA = 83;
 | |
|     zzmode(CPP_COMMENTS); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| #line[\ \t]* [0-9]+ {[\ \t]* \"~[\"]+\" ([\ \t]* [0-9]*)* } (\n|\r|\r\n)
 | |
| 	<<
 | |
| 		NLA = 84;
 | |
|     
 | |
|     zzline = atoi(zzbegexpr+5) - 1; zzline++; zzmore();
 | |
|     getFileNameFromTheLineInfo(FileStr[CurFile], zzbegexpr);
 | |
| 	>>
 | |
| 
 | |
| #line ~[\n\r]* (\n|\r|\r\n)
 | |
| 	<<
 | |
| 		NLA = 85;
 | |
|     
 | |
|     zzline++; zzmore();
 | |
| 	>>
 | |
| 
 | |
| \>\>
 | |
| 	<<
 | |
| 		NLA = 86;
 | |
|     warn("Missing <<; found dangling \>\>"); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| .
 | |
| 	<<
 | |
| 		NLA = WildCard;
 | |
| 	>>
 | |
| 
 | |
| \@
 | |
| 	<<
 | |
| 		NLA = 88;
 | |
|     FoundException = 1;		/* MR6 */
 | |
|     FoundAtOperator = 1;  
 | |
| 	>>
 | |
| 
 | |
| {\\}#pragma
 | |
| 	<<
 | |
| 		NLA = Pragma;
 | |
| 	>>
 | |
| 
 | |
| {\\}#FirstSetSymbol
 | |
| 	<<
 | |
| 		NLA = FirstSetSymbol;
 | |
| 	>>
 | |
| 
 | |
| {\\}#header
 | |
| 	<<
 | |
| 		NLA = 94;
 | |
| 	>>
 | |
| 
 | |
| {\\}#first
 | |
| 	<<
 | |
| 		NLA = 95;
 | |
| 	>>
 | |
| 
 | |
| {\\}#parser
 | |
| 	<<
 | |
| 		NLA = 96;
 | |
| 	>>
 | |
| 
 | |
| {\\}#tokdefs
 | |
| 	<<
 | |
| 		NLA = 97;
 | |
| 	>>
 | |
| 
 | |
| \}
 | |
| 	<<
 | |
| 		NLA = 98;
 | |
| 	>>
 | |
| 
 | |
| class
 | |
| 	<<
 | |
| 		NLA = 99;
 | |
| 	>>
 | |
| 
 | |
| \{
 | |
| 	<<
 | |
| 		NLA = 102;
 | |
| 	>>
 | |
| 
 | |
| !
 | |
| 	<<
 | |
| 		NLA = 103;
 | |
| 	>>
 | |
| 
 | |
| \<
 | |
| 	<<
 | |
| 		NLA = 104;
 | |
| 	>>
 | |
| 
 | |
| \>
 | |
| 	<<
 | |
| 		NLA = 105;
 | |
| 	>>
 | |
| 
 | |
| :
 | |
| 	<<
 | |
| 		NLA = 106;
 | |
| 	>>
 | |
| 
 | |
| ;
 | |
| 	<<
 | |
| 		NLA = 107;
 | |
| 	>>
 | |
| 
 | |
| {\\}#lexaction
 | |
| 	<<
 | |
| 		NLA = 108;
 | |
| 	>>
 | |
| 
 | |
| {\\}#lexmember
 | |
| 	<<
 | |
| 		NLA = 109;
 | |
| 	>>
 | |
| 
 | |
| {\\}#lexprefix
 | |
| 	<<
 | |
| 		NLA = 110;
 | |
| 	>>
 | |
| 
 | |
| {\\}#pred
 | |
| 	<<
 | |
| 		NLA = 111;
 | |
| 	>>
 | |
| 
 | |
| \|\|
 | |
| 	<<
 | |
| 		NLA = 112;
 | |
| 	>>
 | |
| 
 | |
| &&
 | |
| 	<<
 | |
| 		NLA = 113;
 | |
| 	>>
 | |
| 
 | |
| \(
 | |
| 	<<
 | |
| 		NLA = 114;
 | |
| 	>>
 | |
| 
 | |
| \)
 | |
| 	<<
 | |
| 		NLA = 115;
 | |
| 	>>
 | |
| 
 | |
| {\\}#lexclass
 | |
| 	<<
 | |
| 		NLA = 116;
 | |
| 	>>
 | |
| 
 | |
| {\\}#errclass
 | |
| 	<<
 | |
| 		NLA = 117;
 | |
| 	>>
 | |
| 
 | |
| {\\}#tokclass
 | |
| 	<<
 | |
| 		NLA = 118;
 | |
| 	>>
 | |
| 
 | |
| ..
 | |
| 	<<
 | |
| 		NLA = 119;
 | |
| 	>>
 | |
| 
 | |
| {\\}#token
 | |
| 	<<
 | |
| 		NLA = 120;
 | |
| 	>>
 | |
| 
 | |
| =
 | |
| 	<<
 | |
| 		NLA = 121;
 | |
| 	>>
 | |
| 
 | |
| [0-9]+
 | |
| 	<<
 | |
| 		NLA = 122;
 | |
| 	>>
 | |
| 
 | |
| \|
 | |
| 	<<
 | |
| 		NLA = 123;
 | |
| 	>>
 | |
| 
 | |
| \~
 | |
| 	<<
 | |
| 		NLA = 124;
 | |
| 	>>
 | |
| 
 | |
| ^
 | |
| 	<<
 | |
| 		NLA = 125;
 | |
| 	>>
 | |
| 
 | |
| approx
 | |
| 	<<
 | |
| 		NLA = 126;
 | |
| 	>>
 | |
| 
 | |
| LL\(1\)
 | |
| 	<<
 | |
| 		NLA = 127;
 | |
| 	>>
 | |
| 
 | |
| LL\(2\)
 | |
| 	<<
 | |
| 		NLA = 128;
 | |
| 	>>
 | |
| 
 | |
| \*
 | |
| 	<<
 | |
| 		NLA = 129;
 | |
| 	>>
 | |
| 
 | |
| \+
 | |
| 	<<
 | |
| 		NLA = 130;
 | |
| 	>>
 | |
| 
 | |
| ?
 | |
| 	<<
 | |
| 		NLA = 131;
 | |
| 	>>
 | |
| 
 | |
| =>
 | |
| 	<<
 | |
| 		NLA = 132;
 | |
| 	>>
 | |
| 
 | |
| exception
 | |
| 	<<
 | |
| 		NLA = 133;
 | |
| 	>>
 | |
| 
 | |
| default
 | |
| 	<<
 | |
| 		NLA = 134;
 | |
| 	>>
 | |
| 
 | |
| catch
 | |
| 	<<
 | |
| 		NLA = 135;
 | |
| 	>>
 | |
| 
 | |
| [a-z] [A-Za-z0-9_]*
 | |
| 	<<
 | |
| 		NLA = NonTerminal;
 | |
|     
 | |
|     while ( zzchar==' ' || zzchar=='\t' ) {
 | |
|       zzadvance();
 | |
|     }
 | |
|     if ( zzchar == ':' && inAlt ) NLA = LABEL;
 | |
| 	>>
 | |
| 
 | |
| [A-Z] [A-Za-z0-9_]*
 | |
| 	<<
 | |
| 		NLA = TokenTerm;
 | |
|     
 | |
|     while ( zzchar==' ' || zzchar=='\t' ) {
 | |
|       zzadvance();
 | |
|     }
 | |
|     if ( zzchar == ':' && inAlt ) NLA = LABEL;
 | |
| 	>>
 | |
| 
 | |
| {\\}#[A-Za-z0-9_]*
 | |
| 	<<
 | |
| 		NLA = 136;
 | |
|     warn(eMsg1("unknown meta-op: %s",LATEXT(1))); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%STRINGS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| \"
 | |
| 	<<
 | |
| 		NLA = QuotedTerm;
 | |
|     zzmode(START);   
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 3;
 | |
|     
 | |
|     zzline++;
 | |
|     warn("eoln found in string");
 | |
|     zzskip();
 | |
| 	>>
 | |
| 
 | |
| \\(\n|\r|\r\n)
 | |
| 	<<
 | |
| 		NLA = 4;
 | |
|     zzline++; zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \\~[]
 | |
| 	<<
 | |
| 		NLA = 5;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r\"\\]+
 | |
| 	<<
 | |
| 		NLA = 6;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%ACTION_STRINGS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| \"
 | |
| 	<<
 | |
| 		NLA = 7;
 | |
|     zzmode(ACTIONS); zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 8;
 | |
|     
 | |
|     zzline++;
 | |
|     warn("eoln found in string (in user action)");
 | |
|     zzskip();
 | |
| 	>>
 | |
| 
 | |
| \\(\n|\r|\r\n)
 | |
| 	<<
 | |
| 		NLA = 9;
 | |
|     zzline++; zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \\~[]
 | |
| 	<<
 | |
| 		NLA = 10;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r\"\\]+
 | |
| 	<<
 | |
| 		NLA = 11;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%ACTION_CHARS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| '
 | |
| 	<<
 | |
| 		NLA = 12;
 | |
|     zzmode(ACTIONS); zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 13;
 | |
|     
 | |
|     zzline++;
 | |
|     warn("eoln found in char literal (in user action)");
 | |
|     zzskip();
 | |
| 	>>
 | |
| 
 | |
| \\~[]
 | |
| 	<<
 | |
| 		NLA = 14;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r'\\]+
 | |
| 	<<
 | |
| 		NLA = 15;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%ACTION_COMMENTS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| \*/
 | |
| 	<<
 | |
| 		NLA = 16;
 | |
|     zzmode(ACTIONS); zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \*
 | |
| 	<<
 | |
| 		NLA = 17;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 18;
 | |
|     zzline++; zzmore(); DAWDLE;   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r\*]+
 | |
| 	<<
 | |
| 		NLA = 19;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%TOK_DEF_COMMENTS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| \*/
 | |
| 	<<
 | |
| 		NLA = 20;
 | |
|     zzmode(PARSE_ENUM_FILE);
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \*
 | |
| 	<<
 | |
| 		NLA = 21;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 22;
 | |
|     zzline++; zzmore(); DAWDLE;   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r\*]+
 | |
| 	<<
 | |
| 		NLA = 23;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%TOK_DEF_CPP_COMMENTS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 24;
 | |
|     zzline++; zzmode(PARSE_ENUM_FILE); zzskip(); DAWDLE;   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r]+
 | |
| 	<<
 | |
| 		NLA = 25;
 | |
|     zzskip();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%ACTION_CPP_COMMENTS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 26;
 | |
|     zzline++; zzmode(ACTIONS); zzmore(); DAWDLE;   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r]+
 | |
| 	<<
 | |
| 		NLA = 27;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%CPP_COMMENTS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 28;
 | |
|     zzline++; zzmode(START); zzskip(); DAWDLE;   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r]+
 | |
| 	<<
 | |
| 		NLA = 29;
 | |
|     zzskip();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%COMMENTS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| \*/
 | |
| 	<<
 | |
| 		NLA = 30;
 | |
|     zzmode(START); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| \*
 | |
| 	<<
 | |
| 		NLA = 31;
 | |
|     zzskip();   
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 32;
 | |
|     zzline++; zzskip(); DAWDLE;   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r\*]+
 | |
| 	<<
 | |
| 		NLA = 33;
 | |
|     zzskip();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%ACTIONS
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
| 	>>
 | |
| 
 | |
| \>\>
 | |
| 	<<
 | |
| 		NLA = Action;
 | |
|     /* these do not nest */
 | |
|     zzmode(START);
 | |
|     NLATEXT[0] = ' ';
 | |
|     NLATEXT[1] = ' ';
 | |
|     zzbegexpr[0] = ' ';
 | |
|     zzbegexpr[1] = ' ';
 | |
|     if ( zzbufovf ) {
 | |
|       err( eMsgd("action buffer overflow; size %d",ZZLEXBUFSIZE));
 | |
|     }
 | |
|     
 | |
| /* MR1	10-Apr-97  MR1  Previously unable to put right shift operator	*/
 | |
|     /* MR1					in DLG action			*/
 | |
|     /* MR1			Doesn't matter what kind of action it is - reset*/
 | |
|     
 | |
| 			      tokenActionActive=0;		 /* MR1 */
 | |
| 	>>
 | |
| 
 | |
| \>\>?
 | |
| 	<<
 | |
| 		NLA = Pred;
 | |
|     /* these do not nest */
 | |
|     zzmode(START);
 | |
|     NLATEXT[0] = ' ';
 | |
|     NLATEXT[1] = ' ';
 | |
|     zzbegexpr[0] = '\0';
 | |
|     if ( zzbufovf ) {
 | |
|       err( eMsgd("predicate buffer overflow; size %d",ZZLEXBUFSIZE));
 | |
|     };
 | |
| #ifdef __cplusplus__
 | |
|     /* MR10 */                    list_apply(CurActionLabels, (void (*)(void *))mark_label_used_in_sem_pred);
 | |
| #else
 | |
| #ifdef __STDC__
 | |
|     /* MR10 */                    list_apply(CurActionLabels, (void (*)(void *))mark_label_used_in_sem_pred);
 | |
| #else
 | |
| #ifdef __USE_PROTOS
 | |
|     /* MRxx */                    list_apply(CurActionLabels, (void (*)(void *))mark_label_used_in_sem_pred);
 | |
| #else
 | |
|     /* MR10 */                    list_apply(CurActionLabels,mark_label_used_in_sem_pred);
 | |
| #endif
 | |
| #endif
 | |
| #endif
 | |
| 	>>
 | |
| 
 | |
| \]
 | |
| 	<<
 | |
| 		NLA = PassAction;
 | |
|     if ( topint() == ']' ) {
 | |
|       popint();
 | |
|       if ( istackempty() )	/* terminate action */
 | |
|       {
 | |
|         zzmode(START);
 | |
|         NLATEXT[0] = ' ';
 | |
|         zzbegexpr[0] = ' ';
 | |
|         if ( zzbufovf ) {
 | |
|           err( eMsgd("parameter buffer overflow; size %d",ZZLEXBUFSIZE));
 | |
|         }
 | |
|       }
 | |
|       else {
 | |
|         /* terminate $[..] and #[..] */
 | |
|         if ( GenCC ) zzreplstr("))");
 | |
|         else zzreplstr(")");
 | |
|         zzmore();
 | |
|       }
 | |
|     }
 | |
|     else if ( topint() == '|' ) { /* end of simple [...] */
 | |
|       popint();
 | |
|       zzmore();
 | |
|     }
 | |
|     else zzmore();
 | |
| 	>>
 | |
| 
 | |
| consumeUntil\( [\ \t]* \{~[\}]+\} [\ \t]* \)
 | |
| 	<<
 | |
| 		NLA = 37;
 | |
|     
 | |
|     zzmore();
 | |
|     zzreplstr(inline_set(zzbegexpr+
 | |
|     strlen("consumeUntil(")));
 | |
| 	>>
 | |
| 
 | |
| consumeUntil\( ~[\)]+ \)
 | |
| 	<<
 | |
| 		NLA = 38;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 39;
 | |
|     zzline++; zzmore(); DAWDLE;   
 | |
| 	>>
 | |
| 
 | |
| \>
 | |
| 	<<
 | |
| 		NLA = 40;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| $
 | |
| 	<<
 | |
| 		NLA = 41;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| $$
 | |
| 	<<
 | |
| 		NLA = 42;
 | |
|     if ( !GenCC ) {zzreplstr("zzaRet"); zzmore();}
 | |
|     else err("$$ use invalid in C++ mode");   
 | |
| 	>>
 | |
| 
 | |
| $\[\]
 | |
| 	<<
 | |
| 		NLA = 43;
 | |
|     if ( !GenCC ) {zzreplstr("zzempty_attr"); zzmore();}
 | |
|     else err("$[] use invalid in C++ mode");   
 | |
| 	>>
 | |
| 
 | |
| $\[
 | |
| 	<<
 | |
| 		NLA = 44;
 | |
|     
 | |
|     pushint(']');
 | |
|     if ( !GenCC ) zzreplstr("zzconstr_attr(");
 | |
|     else err("$[..] use invalid in C++ mode");
 | |
|     zzmore();
 | |
| 	>>
 | |
| 
 | |
| $[0-9]+
 | |
| 	<<
 | |
| 		NLA = 45;
 | |
|     {
 | |
|       static char buf[100];
 | |
|       numericActionLabel=1;       /* MR10 */
 | |
|       if ( strlen(zzbegexpr)>(size_t)85 )
 | |
|       fatal("$i attrib ref too big");
 | |
|       set_orel(atoi(zzbegexpr+1), &attribsRefdFromAction);
 | |
|       if ( !GenCC ) sprintf(buf,"zzaArg(zztasp%d,%s)",
 | |
|       BlkLevel-1,zzbegexpr+1);
 | |
|       else sprintf(buf,"_t%d%s",
 | |
|       BlkLevel-1,zzbegexpr+1);
 | |
|       zzreplstr(buf);
 | |
|       zzmore();
 | |
|       UsedOldStyleAttrib = 1;
 | |
|       if ( UsedNewStyleLabel )
 | |
|       err("cannot mix old-style $i with new-style labels");
 | |
|     }
 | |
| 	>>
 | |
| 
 | |
| $[0-9]+.
 | |
| 	<<
 | |
| 		NLA = 46;
 | |
|     {
 | |
|       static char buf[100];
 | |
|       numericActionLabel=1;       /* MR10 */
 | |
|       if ( strlen(zzbegexpr)>(size_t)85 )
 | |
|       fatal("$i.field attrib ref too big");
 | |
|       zzbegexpr[strlen(zzbegexpr)-1] = ' ';
 | |
|       set_orel(atoi(zzbegexpr+1), &attribsRefdFromAction);
 | |
|       if ( !GenCC ) sprintf(buf,"zzaArg(zztasp%d,%s).",
 | |
|       BlkLevel-1,zzbegexpr+1);
 | |
|       else sprintf(buf,"_t%d%s.",
 | |
|       BlkLevel-1,zzbegexpr+1);
 | |
|       zzreplstr(buf);
 | |
|       zzmore();
 | |
|       UsedOldStyleAttrib = 1;
 | |
|       if ( UsedNewStyleLabel )
 | |
|       err("cannot mix old-style $i with new-style labels");
 | |
|     }
 | |
| 	>>
 | |
| 
 | |
| $[0-9]+.[0-9]+
 | |
| 	<<
 | |
| 		NLA = 47;
 | |
|     {
 | |
|       static char buf[100];
 | |
|       static char i[20], j[20];
 | |
|       char *p,*q;
 | |
|       numericActionLabel=1;       /* MR10 */
 | |
|       if (strlen(zzbegexpr)>(size_t)85) fatal("$i.j attrib ref too big");
 | |
|       for (p=zzbegexpr+1,q= &i[0]; *p!='.'; p++) {
 | |
|         if ( q == &i[20] )
 | |
|         fatalFL("i of $i.j attrib ref too big",
 | |
|         FileStr[CurFile], zzline );
 | |
|         *q++ = *p;
 | |
|       }
 | |
|       *q = '\0';
 | |
|       for (p++, q= &j[0]; *p!='\0'; p++) {
 | |
|         if ( q == &j[20] )
 | |
|         fatalFL("j of $i.j attrib ref too big",
 | |
|         FileStr[CurFile], zzline );
 | |
|         *q++ = *p;
 | |
|       }
 | |
|       *q = '\0';
 | |
|       if ( !GenCC ) sprintf(buf,"zzaArg(zztasp%s,%s)",i,j);
 | |
|       else sprintf(buf,"_t%s%s",i,j);
 | |
|       zzreplstr(buf);
 | |
|       zzmore();
 | |
|       UsedOldStyleAttrib = 1;
 | |
|       if ( UsedNewStyleLabel )
 | |
|       err("cannot mix old-style $i with new-style labels");
 | |
|     }
 | |
| 	>>
 | |
| 
 | |
| $[_a-zA-Z][_a-zA-Z0-9]*
 | |
| 	<<
 | |
| 		NLA = 48;
 | |
|     { static char buf[300]; LabelEntry *el;
 | |
|       zzbegexpr[0] = ' ';
 | |
|       if ( CurRule != NULL &&
 | |
|       strcmp(CurRule, &zzbegexpr[1])==0 ) {
 | |
|         if ( !GenCC ) zzreplstr("zzaRet");
 | |
|       }
 | |
|       else if ( CurRetDef != NULL &&
 | |
|       strmember(CurRetDef, &zzbegexpr[1])) {
 | |
|         if ( hasMultipleOperands( CurRetDef ) ) {
 | |
|           require (strlen(zzbegexpr)<=(size_t)285,
 | |
|           "$retval attrib ref too big");
 | |
|           sprintf(buf,"_retv.%s",&zzbegexpr[1]);
 | |
|           zzreplstr(buf);
 | |
|         }
 | |
|         else zzreplstr("_retv");
 | |
|       }
 | |
|       else if ( CurParmDef != NULL &&
 | |
|       strmember(CurParmDef, &zzbegexpr[1])) {
 | |
|       ;
 | |
|     }
 | |
|     else if ( Elabel==NULL ) {
 | |
|     { err("$-variables in actions outside of rules are not allowed"); }
 | |
|   } else if ( (el=(LabelEntry *)hash_get(Elabel, &zzbegexpr[1]))!=NULL ) {
 | |
|   /* MR10 */
 | |
|   /* MR10 */                      /* element labels might exist without an elem when */
 | |
|   /* MR10 */                      /*  it is a forward reference (to a rule)          */
 | |
|   /* MR10 */
 | |
|   /* MR10 */						if ( GenCC && (el->elem == NULL || el->elem->ntype==nRuleRef) )
 | |
|   /* MR10 */							{ err(eMsg1("There are no token ptrs for rule references: '$%s'",&zzbegexpr[1])); }
 | |
|   /* MR10 */
 | |
|   /* MR10 */						if ( !GenCC && (el->elem == NULL || el->elem->ntype==nRuleRef) && GenAST) {
 | |
|   /* MR10 */                          err("You can no longer use attributes returned by rules when also using ASTs");
 | |
|   /* MR10 */                          err("   Use upward inheritance (\"rule >[Attrib a] : ... <<$a=...\>\>\")");
 | |
|   /* MR10 */                      };
 | |
|   /* MR10 */
 | |
|   /* MR10 */                      /* keep track of <<... $label ...>> for semantic predicates in guess mode */
 | |
|   /* MR10 */                      /* element labels contain pointer to the owners node                      */
 | |
|   /* MR10 */
 | |
|   /* MR10 */                      if (el->elem != NULL && el->elem->ntype == nToken) {
 | |
|   /* MR10 */                        list_add(&CurActionLabels,el);
 | |
|   /* MR10 */                      };
 | |
| }
 | |
| else
 | |
| warn(eMsg1("$%s not parameter, return value, (defined) element label",&zzbegexpr[1]));
 | |
| }
 | |
| zzmore();
 | |
| 	>>
 | |
| 
 | |
| #0
 | |
| 	<<
 | |
| 		NLA = 49;
 | |
|     zzreplstr("(*_root)"); zzmore(); chkGTFlag();   
 | |
| 	>>
 | |
| 
 | |
| #\[\]
 | |
| 	<<
 | |
| 		NLA = 50;
 | |
|     if ( GenCC ) {
 | |
|       if (NewAST) zzreplstr("(newAST)");
 | |
|       else zzreplstr("(new AST)");}
 | |
|     else {zzreplstr("zzastnew()");} zzmore();
 | |
|     chkGTFlag();
 | |
| 	>>
 | |
| 
 | |
| #\(\)
 | |
| 	<<
 | |
| 		NLA = 51;
 | |
|     zzreplstr("NULL"); zzmore(); chkGTFlag();   
 | |
| 	>>
 | |
| 
 | |
| #[0-9]+
 | |
| 	<<
 | |
| 		NLA = 52;
 | |
|     {
 | |
|       static char buf[100];
 | |
|       if ( strlen(zzbegexpr)>(size_t)85 )
 | |
|       fatal("#i AST ref too big");
 | |
|       if ( GenCC ) sprintf(buf,"_ast%d%s",BlkLevel-1,zzbegexpr+1);
 | |
|       else sprintf(buf,"zzastArg(%s)",zzbegexpr+1);
 | |
|       zzreplstr(buf);
 | |
|       zzmore();
 | |
|       set_orel(atoi(zzbegexpr+1), &AST_nodes_refd_in_actions);
 | |
|       chkGTFlag();
 | |
|     }
 | |
| 	>>
 | |
| 
 | |
| #line[\ \t]* [0-9]+ {[\ \t]* \"~[\"]+\" ([\ \t]* [0-9]*)* } (\n|\r|\r\n)
 | |
| 	<<
 | |
| 		NLA = 53;
 | |
|     
 | |
|     zzline = atoi(zzbegexpr+5) - 1; zzline++; zzmore();
 | |
|     getFileNameFromTheLineInfo(FileStr[CurFile], zzbegexpr);
 | |
| 	>>
 | |
| 
 | |
| #line ~[\n\r]* (\n|\r|\r\n)
 | |
| 	<<
 | |
| 		NLA = 54;
 | |
|     
 | |
|     zzline++; zzmore();
 | |
| 	>>
 | |
| 
 | |
| #[_a-zA-Z][_a-zA-Z0-9]*
 | |
| 	<<
 | |
| 		NLA = 55;
 | |
|     
 | |
|     if ( !(strcmp(zzbegexpr, "#ifdef")==0 ||
 | |
|     strcmp(zzbegexpr, "#if")==0 ||
 | |
|     strcmp(zzbegexpr, "#else")==0 ||
 | |
|     strcmp(zzbegexpr, "#endif")==0 ||
 | |
|     strcmp(zzbegexpr, "#ifndef")==0 ||
 | |
|     strcmp(zzbegexpr, "#define")==0 ||
 | |
|     strcmp(zzbegexpr, "#pragma")==0 ||
 | |
|     strcmp(zzbegexpr, "#undef")==0 ||
 | |
|     strcmp(zzbegexpr, "#import")==0 ||
 | |
|     strcmp(zzbegexpr, "#line")==0 ||
 | |
|     strcmp(zzbegexpr, "#include")==0 ||
 | |
|     strcmp(zzbegexpr, "#error")==0) )
 | |
|     {
 | |
|       static char buf[100];
 | |
|       sprintf(buf, "%s_ast", zzbegexpr+1);
 | |
|       /* MR27 */						list_add(&CurAstLabelsInActions, mystrdup(zzbegexpr+1));
 | |
|       zzreplstr(buf);
 | |
|       chkGTFlag();
 | |
|     }
 | |
|     zzmore();
 | |
| 	>>
 | |
| 
 | |
| #\[
 | |
| 	<<
 | |
| 		NLA = 56;
 | |
|     
 | |
|     pushint(']');
 | |
|     if ( GenCC ) {
 | |
|       if (NewAST) zzreplstr("(newAST(");
 | |
|       else zzreplstr("(new AST("); }
 | |
|     else zzreplstr("zzmk_ast(zzastnew(),");
 | |
|     zzmore();
 | |
|     chkGTFlag();
 | |
| 	>>
 | |
| 
 | |
| #\(
 | |
| 	<<
 | |
| 		NLA = 57;
 | |
|     
 | |
|     pushint('}');
 | |
|     if ( GenCC ) {
 | |
|       if (tmakeInParser) {
 | |
|         zzreplstr("tmake(");
 | |
|       }
 | |
|       else {
 | |
|         zzreplstr("ASTBase::tmake(");
 | |
|       }
 | |
|     }
 | |
|     else {
 | |
|       zzreplstr("zztmake(");
 | |
|     }
 | |
|     zzmore();
 | |
|     chkGTFlag();
 | |
| 	>>
 | |
| 
 | |
| #
 | |
| 	<<
 | |
| 		NLA = 58;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \)
 | |
| 	<<
 | |
| 		NLA = 59;
 | |
|     
 | |
|     if ( istackempty() )
 | |
|     zzmore();
 | |
|     else if ( topint()==')' ) {
 | |
|       popint();
 | |
|     }
 | |
|     else if ( topint()=='}' ) {
 | |
|       popint();
 | |
|       /* terminate #(..) */
 | |
|       zzreplstr(", NULL)");
 | |
|     }
 | |
|     zzmore();
 | |
| 	>>
 | |
| 
 | |
| \[
 | |
| 	<<
 | |
| 		NLA = 60;
 | |
|     
 | |
|     pushint('|');	/* look for '|' to terminate simple [...] */
 | |
|     zzmore();
 | |
| 	>>
 | |
| 
 | |
| \(
 | |
| 	<<
 | |
| 		NLA = 61;
 | |
|     
 | |
|     pushint(')');
 | |
|     zzmore();
 | |
| 	>>
 | |
| 
 | |
| \\\]
 | |
| 	<<
 | |
| 		NLA = 62;
 | |
|     zzreplstr("]");  zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \\\)
 | |
| 	<<
 | |
| 		NLA = 63;
 | |
|     zzreplstr(")");  zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \\>
 | |
| 	<<
 | |
| 		NLA = 64;
 | |
|     if (! tokenActionActive) zzreplstr(">");	 /* MR1 */
 | |
|     zzmore();				         /* MR1 */
 | |
| 	>>
 | |
| 
 | |
| '
 | |
| 	<<
 | |
| 		NLA = 65;
 | |
|     zzmode(ACTION_CHARS); zzmore();  
 | |
| 	>>
 | |
| 
 | |
| \"
 | |
| 	<<
 | |
| 		NLA = 66;
 | |
|     zzmode(ACTION_STRINGS); zzmore();  
 | |
| 	>>
 | |
| 
 | |
| \\$
 | |
| 	<<
 | |
| 		NLA = 67;
 | |
|     zzreplstr("$");  zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \\#
 | |
| 	<<
 | |
| 		NLA = 68;
 | |
|     zzreplstr("#");  zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \\(\n|\r|\r\n)
 | |
| 	<<
 | |
| 		NLA = 69;
 | |
|     zzline++; zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \\~[\]\)>$#]
 | |
| 	<<
 | |
| 		NLA = 70;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| /
 | |
| 	<<
 | |
| 		NLA = 71;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| /\*
 | |
| 	<<
 | |
| 		NLA = 72;
 | |
|     zzmode(ACTION_COMMENTS); zzmore();   
 | |
| 	>>
 | |
| 
 | |
| \*/
 | |
| 	<<
 | |
| 		NLA = 73;
 | |
|     warn("Missing /*; found dangling */ in action"); zzmore();   
 | |
| 	>>
 | |
| 
 | |
| //
 | |
| 	<<
 | |
| 		NLA = 74;
 | |
|     zzmode(ACTION_CPP_COMMENTS); zzmore();   
 | |
| 	>>
 | |
| 
 | |
| ~[\n\r\)\(\\$#\>\]\[\"'/]+
 | |
| 	<<
 | |
| 		NLA = 75;
 | |
|     zzmore();   
 | |
| 	>>
 | |
| 
 | |
| 
 | |
| %%PARSE_ENUM_FILE
 | |
| 
 | |
| @
 | |
| 	<<
 | |
| 		NLA = Eof;
 | |
|     ;   
 | |
| 	>>
 | |
| 
 | |
| [\t\ ]+
 | |
| 	<<
 | |
| 		NLA = 137;
 | |
|     zzskip();   
 | |
| 	>>
 | |
| 
 | |
| \n|\r|\r\n
 | |
| 	<<
 | |
| 		NLA = 138;
 | |
|     zzline++; zzskip();   
 | |
| 	>>
 | |
| 
 | |
| //
 | |
| 	<<
 | |
| 		NLA = 139;
 | |
|     zzmode(TOK_DEF_CPP_COMMENTS); zzmore();   
 | |
| 	>>
 | |
| 
 | |
| /\*
 | |
| 	<<
 | |
| 		NLA = 140;
 | |
|     zzmode(TOK_DEF_COMMENTS); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| #ifdef
 | |
| 	<<
 | |
| 		NLA = 141;
 | |
|     zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| #if
 | |
| 	<<
 | |
| 		NLA = 142;
 | |
|     zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| #ifndef
 | |
| 	<<
 | |
| 		NLA = 143;
 | |
|     ;   
 | |
| 	>>
 | |
| 
 | |
| #else
 | |
| 	<<
 | |
| 		NLA = 144;
 | |
|     zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| #endif
 | |
| 	<<
 | |
| 		NLA = 145;
 | |
|     zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| #undef
 | |
| 	<<
 | |
| 		NLA = 146;
 | |
|     zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| #import
 | |
| 	<<
 | |
| 		NLA = 147;
 | |
|     zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   
 | |
| 	>>
 | |
| 
 | |
| #define
 | |
| 	<<
 | |
| 		NLA = 149;
 | |
| 	>>
 | |
| 
 | |
| enum
 | |
| 	<<
 | |
| 		NLA = 151;
 | |
| 	>>
 | |
| 
 | |
| \{
 | |
| 	<<
 | |
| 		NLA = 152;
 | |
| 	>>
 | |
| 
 | |
| =
 | |
| 	<<
 | |
| 		NLA = 153;
 | |
| 	>>
 | |
| 
 | |
| ,
 | |
| 	<<
 | |
| 		NLA = 154;
 | |
| 	>>
 | |
| 
 | |
| \}
 | |
| 	<<
 | |
| 		NLA = 155;
 | |
| 	>>
 | |
| 
 | |
| ;
 | |
| 	<<
 | |
| 		NLA = 156;
 | |
| 	>>
 | |
| 
 | |
| [0-9]+
 | |
| 	<<
 | |
| 		NLA = INT;
 | |
| 	>>
 | |
| 
 | |
| [a-zA-Z_][_a-zA-Z0-9]*
 | |
| 	<<
 | |
| 		NLA = ID;
 | |
| 	>>
 | |
| 
 | |
| %%
 |