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

📄 antlr.c

📁 本工具提供一个词法分析器和语法分析器的集成开发环境
💻 C
📖 第 1 页 / 共 5 页
字号:
}}	zzmatch(104); zzCONSUME;	zzEXIT(zztasp1);	return _retv;fail:	zzEXIT(zztasp1);	zzsyn(zzMissText, zzBadTok, (ANTLRChar *)"", zzMissSet, zzMissTok, zzErrk, zzBadText);	zzresynch(setwd4, 0x8);	return _retv;	}} Node *#ifdef __USE_PROTOSelement( int not, int first_on_line, int use_def_MT_handler )#elseelement(not,first_on_line,use_def_MT_handler) int not;int first_on_line;int use_def_MT_handler ;#endif{	 Node * 	 _retv;	zzRULE;	zzBLOCK(zztasp1);	PURIFY(_retv,sizeof( Node * 	))	zzMake0;	{		Attrib blk;	Predicate *pred = NULL;	int local_use_def_MT_handler=0;	ActionNode *act;	RuleRefNode *rr;	set toksrefd, rulesrefd;	TermEntry *term;	TokNode *p=NULL; RuleRefNode *q; int approx=0;	LabelEntry *label=NULL;	int predMsgDone=0;	int semDepth=0;	int   ampersandStyle;	int   height;         /* MR11 */	int   equal_height;   /* MR11 */			  _retv = NULL;	if ( (setwd4[LA(1)]&0x10) ) {		{			zzBLOCK(zztasp2);			zzMake0;			{			if ( (LA(1)==LABEL) ) {				 label  = element_label();			}			zzEXIT(zztasp2);			}		}		{			zzBLOCK(zztasp2);			zzMake0;			{			if ( (LA(1)==TokenTerm) ) {				zzmatch(TokenTerm);								term = (TermEntry *) hash_get(Tname, LATEXT(1));				if ( term==NULL && UserDefdTokens ) {					err("implicit token definition not allowed with #tokdefs");					zzaRet.left = zzaRet.right = NULL;				}				else {					zzaRet = buildToken(LATEXT(1));					p=((TokNode *)((Junction *)zzaRet.left)->p1);					term = (TermEntry *) hash_get(Tname, LATEXT(1));					require( term!= NULL, "hash table mechanism is broken");					p->tclass = term->tclass;					p->complement =  not;					if ( label!=NULL ) {						p->el_label = label->str;						label->elem = (Node *)p;					}				} zzCONSUME;				{					zzBLOCK(zztasp3);					zzMake0;					{					if ( (LA(1)==117) ) {						zzmatch(117); zzCONSUME;						{							zzBLOCK(zztasp4);							zzMake0;							{							if ( (LA(1)==QuotedTerm) ) {								zzmatch(QuotedTerm);								if ( p!=NULL ) setUpperRange(p, LATEXT(1)); zzCONSUME;							}							else {								if ( (LA(1)==TokenTerm) ) {									zzmatch(TokenTerm);									if ( p!=NULL ) setUpperRange(p, LATEXT(1)); zzCONSUME;								}								else {zzFAIL(1,zzerr9,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}							}							zzEXIT(zztasp4);							}						}					}					zzEXIT(zztasp3);					}				}								if ( p!=NULL && (p->upper_range!=0 || p->tclass ||  not) )				list_add(&MetaTokenNodes, (void *)p);				{					zzBLOCK(zztasp3);					zzMake0;					{					if ( (LA(1)==123) ) {						zzmatch(123);						if ( p!=NULL ) p->astnode=ASTroot; zzCONSUME;					}					else {						if ( (setwd4[LA(1)]&0x20) ) {							if ( p!=NULL ) p->astnode=ASTchild;						}						else {							if ( (LA(1)==101) ) {								zzmatch(101);								if ( p!=NULL ) p->astnode=ASTexclude; zzCONSUME;							}							else {zzFAIL(1,zzerr10,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}						}					}					zzEXIT(zztasp3);					}				}				{					zzBLOCK(zztasp3);					zzMake0;					{					if ( (LA(1)==88) ) {						zzmatch(88);						local_use_def_MT_handler = 1; zzCONSUME;					}					zzEXIT(zztasp3);					}				}								if ( p!=NULL &&  first_on_line ) {					CurAltStart = (Junction *)zzaRet.left;					altAdd(CurAltStart);                                 /* MR7 */					p->altstart = CurAltStart;				}				if ( p!=NULL )				p->use_def_MT_handler =  use_def_MT_handler || local_use_def_MT_handler;				_retv = (Node *)p;			}			else {				if ( (LA(1)==QuotedTerm) ) {					zzmatch(QuotedTerm);										term = (TermEntry *) hash_get(Texpr, LATEXT(1));					if ( term==NULL && UserDefdTokens ) {						err("implicit token definition not allowed with #tokdefs");						zzaRet.left = zzaRet.right = NULL;					}					else {						zzaRet = buildToken(LATEXT(1)); p=((TokNode *)((Junction *)zzaRet.left)->p1);						p->complement =  not;						if ( label!=NULL ) {							p->el_label = label->str;							label->elem = (Node *)p;						}					} zzCONSUME;					{						zzBLOCK(zztasp3);						zzMake0;						{						if ( (LA(1)==117) ) {							zzmatch(117); zzCONSUME;							{								zzBLOCK(zztasp4);								zzMake0;								{								if ( (LA(1)==QuotedTerm) ) {									zzmatch(QuotedTerm);									if ( p!=NULL ) setUpperRange(p, LATEXT(1)); zzCONSUME;								}								else {									if ( (LA(1)==TokenTerm) ) {										zzmatch(TokenTerm);										if ( p!=NULL ) setUpperRange(p, LATEXT(1)); zzCONSUME;									}									else {zzFAIL(1,zzerr11,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}								}								zzEXIT(zztasp4);								}							}						}						zzEXIT(zztasp3);						}					}					{						zzBLOCK(zztasp3);						zzMake0;						{						if ( (LA(1)==123) ) {							zzmatch(123);							if ( p!=NULL ) p->astnode=ASTroot; zzCONSUME;						}						else {							if ( (setwd4[LA(1)]&0x40) ) {								if ( p!=NULL ) p->astnode=ASTchild;							}							else {								if ( (LA(1)==101) ) {									zzmatch(101);									if ( p!=NULL ) p->astnode=ASTexclude; zzCONSUME;								}								else {zzFAIL(1,zzerr12,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}							}						}						zzEXIT(zztasp3);						}					}					{						zzBLOCK(zztasp3);						zzMake0;						{						if ( (LA(1)==88) ) {							zzmatch(88);							local_use_def_MT_handler = 1; zzCONSUME;						}						zzEXIT(zztasp3);						}					}										if ( p!=NULL && (p->upper_range!=0 || p->tclass ||  not) )					list_add(&MetaTokenNodes, (void *)p);										if (  first_on_line ) {						CurAltStart = (Junction *)zzaRet.left;						altAdd(CurAltStart);                                 /* MR7 */						p->altstart = CurAltStart;					}					if ( p!=NULL )					p->use_def_MT_handler =  use_def_MT_handler || local_use_def_MT_handler;					_retv = (Node *)p;				}				else {					if ( (LA(1)==WildCard) ) {						if (  not ) warn("~ WILDCARD is an undefined operation (implies 'nothing')");						zzmatch(WildCard);						zzaRet = buildWildCard(LATEXT(1)); p=((TokNode *)((Junction *)zzaRet.left)->p1); zzCONSUME;						{							zzBLOCK(zztasp3);							zzMake0;							{							if ( (LA(1)==123) ) {								zzmatch(123);								p->astnode=ASTroot; zzCONSUME;							}							else {								if ( (setwd4[LA(1)]&0x80) ) {									p->astnode=ASTchild;								}								else {									if ( (LA(1)==101) ) {										zzmatch(101);										p->astnode=ASTexclude; zzCONSUME;									}									else {zzFAIL(1,zzerr13,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}								}							}							zzEXIT(zztasp3);							}						}						list_add(&MetaTokenNodes, (void *)p);												if (  first_on_line ) {							CurAltStart = (Junction *)zzaRet.left;							altAdd(CurAltStart);                                 /* MR7 */							p->altstart = CurAltStart;							if ( label!=NULL ) {								p->el_label = label->str;								label->elem = (Node *)p;							}						}						_retv = (Node *)p;					}					else {						if ( (LA(1)==NonTerminal) ) {							if (  not ) warn("~ NONTERMINAL is an undefined operation");							zzmatch(NonTerminal);							zzaRet = buildRuleRef(LATEXT(1)); zzCONSUME;							{								zzBLOCK(zztasp3);								zzMake0;								{								if ( (LA(1)==101) ) {									zzmatch(101);									q = (RuleRefNode *) ((Junction *)zzaRet.left)->p1;									q->astnode=ASTexclude; zzCONSUME;								}								zzEXIT(zztasp3);								}							}							{								zzBLOCK(zztasp3);								zzMake0;								{								if ( (setwd5[LA(1)]&0x1) ) {									{										zzBLOCK(zztasp4);										zzMake0;										{										if ( (LA(1)==102) ) {											zzmatch(102); zzCONSUME;										}										zzEXIT(zztasp4);										}									}									zzmatch(PassAction);									addParm(((Junction *)zzaRet.left)->p1, LATEXT(1)); zzCONSUME;								}								zzEXIT(zztasp3);								}							}							rr=(RuleRefNode *) ((Junction *)zzaRet.left)->p1;							{								zzBLOCK(zztasp3);								zzMake0;								{								char *a;								if ( (LA(1)==103) ) {									zzmatch(103); zzCONSUME;									zzmatch(PassAction);																		a = (char *) calloc(strlen(LATEXT(1))+1, sizeof(char));									require(a!=NULL, "rule element: cannot allocate assignment");									strcpy(a, LATEXT(1));									rr->assign = a; zzCONSUME;								}								zzEXIT(zztasp3);								}							}														if ( label!=NULL ) {								rr->el_label = label->str;								label->elem = (Node *)rr;							}							if (  first_on_line ) {								CurAltStart = (Junction *)zzaRet.left;								altAdd(CurAltStart);                                 /* MR7 */								((RuleRefNode *)((Junction *)zzaRet.left)->p1)->altstart = CurAltStart;							}							_retv = (Node *)rr;						}						else {zzFAIL(1,zzerr14,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}					}				}			}			zzEXIT(zztasp2);			}		}	}	else {		if ( (LA(1)==Action) ) {			if (  not )	warn("~ ACTION is an undefined operation");			zzmatch(Action);			zzaArg(zztasp1,0) = buildAction(LATEXT(1),action_file,action_line, 0); zzCONSUME;			if (  first_on_line ) {                                /* MR7 */				CurAltStart = (Junction *)zzaArg(zztasp1,0 ).left;                   /* MR7 */				altAdd(CurAltStart);                                 /* MR7 */			};			_retv = (Node *) ((Junction *)zzaArg(zztasp1,0 ).left)->p1;		}		else {			if ( (LA(1)==Pred) ) {				if (  not )	warn("~ SEMANTIC-PREDICATE is an undefined operation");				zzmatch(Pred);				zzaArg(zztasp1,0) = buildAction(LATEXT(1),action_file,action_line, 1); zzCONSUME;				act = (ActionNode *) ((Junction *)zzaArg(zztasp1,0 ).left)->p1;				if (numericActionLabel) {             /* MR10 */					list_add(&NumericPredLabels,act);   /* MR10 */					numericActionLabel=0;               /* MR10 */				};                                    /* MR10 */				{					zzBLOCK(zztasp2);					zzMake0;					{					char *a;					if ( (LA(1)==PassAction) ) {						zzmatch(PassAction);												a = (char *) calloc(strlen(LATEXT(1))+1, sizeof(char));						require(a!=NULL, "rule element: cannot allocate predicate fail action");						strcpy(a, LATEXT(1));						act->pred_fail = a; zzCONSUME;					}					zzEXIT(zztasp2);					}				}				if (  first_on_line ) {                                /* MR7 */					CurAltStart = (Junction *)zzaArg(zztasp1,0 ).left;                   /* MR7 */					altAdd(CurAltStart);                                 /* MR7 */				};				_retv = (Node *)act;			}			else {				if ( (setwd5[LA(1)]&0x2) ) {					if (  not )	warn("~ BLOCK is an undefined operation");					BlkLevel++;					{						zzBLOCK(zztasp2);						zzMake0;						{						if ( (LA(1)==124) ) {							zzmatch(124); zzCONSUME;							{								zzBLOCK(zztasp3);								zzMake0;								{								if ( (LA(1)==125) ) {									zzmatch(125);									approx=LL_k; zzCONSUME;								}								else {									if ( (LA(1)==126) ) {										zzmatch(126);										approx = 1; zzCONSUME;									}									else {										if ( (LA(1)==127) ) {											zzmatch(127);											approx = 2; zzCONSUME;										}										else {zzFAIL(1,zzerr15,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}									}								}								zzEXIT(zztasp3);								}							}						}						zzEXIT(zztasp2);						}					}					{						zzBLOCK(zztasp2);						zzMake0;						{						if ( (LA(1)==112) ) {							zzmatch(112); zzCONSUME;							block( &toksrefd,&rulesrefd );							zzmatch(113);							blk = zzaRet = zzaArg(zztasp2,2); --BlkLevel; zzCONSUME;							{								zzBLOCK(zztasp3);								zzMake0;								{								if ( (LA(1)==128) ) {									zzmatch(128);									zzaRet = makeLoop(zzaRet,approx); zzCONSUME;								}								else {									if ( (LA(1)==129) ) {										zzmatch(129);										zzaRet = makePlus(zzaRet,approx); zzCONSUME;									}									else {										if ( (LA(1)==130) ) {											zzmatch(130); zzCONSUME;											{												zzBLOCK(zztasp4);												zzMake0;												{												if ( (setwd5[LA(1)]&0x4) ) {													{														zzBLOCK(zztasp5);														zzMake0;														{														if ( (LA(1)==131) ) {															zzmatch(131);															ampersandStyle=0; zzCONSUME;														}														else {															if ( (LA(1)==111) ) {																zzmatch(111);																ampersandStyle=1; zzCONSUME;															}															else {zzFAIL(1,zzerr16,&zzMissSet,&zzMissText,&zzBadTok,&zzBadText,&zzErrk); goto fail;}														}														zzEXIT(zztasp5);														}													}													zzmatch(Pred);													zzaRet = buildAction(LATEXT(1),action_file,action_line,1); zzCONSUME;													act = (ActionNode *) ((Junction *)zzaRet.left)->p1;													semDepth=predicateLookaheadDepth(act);													if (numericActionLabel) {             /* MR10 */														list_add(&NumericPredLabels,act);   /* MR10 */														numericActionLabel=0;               /* MR10 */													};                                    /* MR10 */													{														zzBLOCK(zztasp5);														zzMake0;														{														char *a;														if ( (LA(1)==PassAction) ) {															zzmatch(PassAction);																														a = (char *)calloc(strlen(LATEXT(1))+1, sizeof(char));															require(a!=NULL, "rule element: cannot allocate predicate fail action");															strcpy(a, LATEXT(1));															act->pred_fail = a; zzCONSUME;														}														zzEXIT(zztasp5);														}													}													if ( first_on_line) {                      /* MR7 */														CurAltStart=(Junction *)zzaRet.left;         /* MR7 */														altAdd(CurAltStart);                     /* MR7 */													};													_retv = (Node *)act;																										pred = computePredicateFromContextGuard(blk,&predMsgDone);      /* MR10 */													if ( pred==NULL) {                                              /* MR10 */														if ( !predMsgDone) err("invalid or missing context guard");   /* MR10 */

⌨️ 快捷键说明

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