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

📄 parser.dlg

📁 本工具提供一个词法分析器和语法分析器的集成开发环境
💻 DLG
字号:
<</* parser.dlg -- DLG Description of scanner * * Generated from: dlg_p.g * * Terence Parr, Will Cohen, and Hank Dietz: 1989-1998 * Purdue University Electrical Engineering * With AHPCRC, University of Minnesota * ANTLR Version 1.33MR14 */#define ANTLR_VERSION	13314#include "pcctscfg.h"#include PCCTS_STDIO_H#include <ctype.h>#include "dlg.h"#ifdef MEMCHK#include "trax.h"#endif#include "antlr.h"#include "tokens.h"#include "dlgdef.h"LOOKAHEADvoid zzerraction(){	(*zzerr)("invalid token");	zzadvance();	zzskip();}>><<%%lexactionint	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_PROTOSvoid  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();  	>>%%

⌨️ 快捷键说明

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