⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parser.dlg

📁 本工具提供一个词法分析器和语法分析器的集成开发环境
💻 DLG
📖 第 1 页 / 共 2 页
字号:
@	<<		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		/* MR10 */                    list_apply(CurActionLabels,mark_label_used_in_sem_pred);#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 ( HasComma( 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 */                      };}elsewarn(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);			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 )		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 = 136;		zzskip();   	>>\n|\r|\r\n	<<		NLA = 137;		zzline++; zzskip();   	>>//	<<		NLA = 138;		zzmode(TOK_DEF_CPP_COMMENTS); zzmore();   	>>/\*	<<		NLA = 139;		zzmode(TOK_DEF_COMMENTS); zzskip();   	>>#ifdef	<<		NLA = 140;		zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   	>>#if	<<		NLA = 141;		zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   	>>#ifndef	<<		NLA = 142;		;   	>>#else	<<		NLA = 143;		zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   	>>#endif	<<		NLA = 144;		zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   	>>#undef	<<		NLA = 145;		zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   	>>#import	<<		NLA = 146;		zzmode(TOK_DEF_CPP_COMMENTS); zzskip();   	>>#define	<<		NLA = 148;	>>enum	<<		NLA = 150;	>>\{	<<		NLA = 151;	>>=	<<		NLA = 152;	>>,	<<		NLA = 153;	>>\}	<<		NLA = 154;	>>;	<<		NLA = 155;	>>[0-9]+	<<		NLA = INT;	>>[a-zA-Z_][_a-zA-Z0-9]*	<<		NLA = ID;	>>%%

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -