antlr.h

来自「本工具提供一个词法分析器和语法分析器的集成开发环境」· C头文件 代码 · 共 733 行 · 第 1/2 页

H
733
字号
#else#define zzPrimeLookAhead  zzgettok()#endif#endif	/* LL_K */#endif	/* ZZINF_LOOK */#ifdef LL_K#define zzenterANTLRs(s)                            \        zzlextext = &(zztextLA[0][0]); zzrdstr( s ); zzPrimeLookAhead;#define zzenterANTLRf(f)							\		zzlextext = &(zztextLA[0][0]); zzrdfunc( f ); zzPrimeLookAhead;#define zzenterANTLR(f)							\		zzlextext = &(zztextLA[0][0]); zzrdstream( f ); zzPrimeLookAhead;#ifdef ZZINF_LOOK#define zzleaveANTLR(f)			free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);#define zzleaveANTLRf(f)	   	free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);#define zzleaveANTLRs(f)		free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);#else#define zzleaveANTLR(f)#define zzleaveANTLRf(f)#define zzleaveANTLRs(f)#endif#else#define zzenterANTLRs(s)                            \        {static char zztoktext[ZZLEXBUFSIZE];   \        zzlextext = zztoktext; zzrdstr( s ); zzPrimeLookAhead;}#define zzenterANTLRf(f)							\		{static char zztoktext[ZZLEXBUFSIZE];	\		zzlextext = zztoktext; zzrdfunc( f ); zzPrimeLookAhead;}#define zzenterANTLR(f)							\		{static char zztoktext[ZZLEXBUFSIZE];	\		zzlextext = zztoktext; zzrdstream( f ); zzPrimeLookAhead;}#ifdef ZZINF_LOOK#define zzleaveANTLR(f)			free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);#define zzleaveANTLRf(f)	   	free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);#define zzleaveANTLRs(f)		free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);#else#define zzleaveANTLR(f)#define zzleaveANTLRf(f)#define zzleaveANTLRs(f)#endif#endif#define ANTLR(st, f)	zzbufsize = ZZLEXBUFSIZE;	\						zzenterANTLR(f);			\						st; ++zzasp;				\						zzleaveANTLR(f);						#define ANTLRm(st, f, _m)	zzbufsize = ZZLEXBUFSIZE;	\						zzmode(_m);				\						zzenterANTLR(f);			\						st; ++zzasp;				\						zzleaveANTLR(f);						#define ANTLRf(st, f)	zzbufsize = ZZLEXBUFSIZE;	\						zzenterANTLRf(f);			\						st; ++zzasp;				\						zzleaveANTLRf(f);#define ANTLRs(st, s)   zzbufsize = ZZLEXBUFSIZE;	\                        zzenterANTLRs(s);           \                        st; ++zzasp;				\                        zzleaveANTLRs(s);#ifdef LL_K#define zztext		(&(zztextLA[zzlap][0]))#else#define zztext		zzlextext#endif					/* A r g u m e n t  A c c e s s */#define zzaCur			(zzaStack[zzasp])#define zzaRet			(*zzaRetPtr)#define zzaArg(v,n)		zzaStack[v-n]#define zzMakeAttr		{ zzNON_GUESS_MODE {zzOvfChk; --zzasp; zzcr_attr(&(zzaStack[zzasp]),LA(1),LATEXT(1));}}#ifdef zzdef0#define zzMake0			{ zzOvfChk; --zzasp; zzdef0(&(zzaStack[zzasp]));}#else#define zzMake0			{ zzOvfChk; --zzasp;}#endif#define zzaPush(_v)		{ zzOvfChk; zzaStack[--zzasp] = _v;}#ifndef zzd_attr#define zzREL(t)		zzasp=(t);		/* Restore state of stack */#else#define zzREL(t)		for (; zzasp<(t); zzasp++)				\						{ zzd_attr(&(zzaStack[zzasp])); }#endif#define zzsetmatch(_es)						\	if ( !_zzsetmatch(_es, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet) ) goto fail;#ifdef ZZCAN_GUESS#define zzsetmatch_wsig(_es, handler)		\	if ( !_zzsetmatch_wsig(_es) ) if (zzguessing) { zzGUESS_FAIL; } else {_signal=MismatchedToken; goto handler;}#else#define zzsetmatch_wsig(_es, handler)		\	if ( !_zzsetmatch_wsig(_es) ) {_signal=MismatchedToken; goto handler;}#endif#ifdef __USE_PROTOSextern int _zzsetmatch(SetWordType *, char **, char **, int *, int *, SetWordType **);extern int _zzsetmatch_wsig(SetWordType *);#elseextern int _zzsetmatch();extern int _zzsetmatch_wsig();#endif#define zzmatch(_t)							\	if ( !_zzmatch(_t, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet) ) goto fail;#ifdef ZZCAN_GUESS#define zzmatch_wsig(_t,handler)			\	if ( !_zzmatch_wsig(_t) ) if (zzguessing) { zzGUESS_FAIL; } else {_signal=MismatchedToken; goto handler;}#else#define zzmatch_wsig(_t,handler)			\	if ( !_zzmatch_wsig(_t) ) {_signal=MismatchedToken; goto handler;}#endif#ifdef __USE_PROTOSextern int _zzmatch(int, char **, char **, int *, int *, SetWordType **);extern int _zzmatch_wsig(int);#elseextern int _zzmatch();extern int _zzmatch_wsig();#endif#define zzmatch_wdfltsig(_t,_f)			\	if ( !_zzmatch_wdfltsig(_t,_f) ) _signal=MismatchedToken;#define zzsetmatch_wdfltsig(tw,tt,wf)		\	if ( !_zzsetmatch_wdfltsig(tw,tt,wf) ) _signal=MismatchedToken;#ifdef __USE_PROTOSextern int _zzmatch_wdfltsig(int, SetWordType *);extern int _zzsetmatch_wdfltsig(SetWordType *tokensWanted,								int tokenTypeOfSet,								SetWordType *whatFollows);#elseextern int _zzmatch_wdfltsig();extern int _zzsetmatch_wdfltsig();#endif#ifdef GENAST#define zzRULE		Attrib *zzaRetPtr = &(zzaStack[zzasp-1]);	\					SetWordType *zzMissSet=NULL; int zzMissTok=0;		\					int zzBadTok=0; char *zzBadText="";		\					int zzErrk=1,zzpf=0;					\                    zzTRACEdata \					char *zzMissText=""; zzASTVars#else#define zzRULE		Attrib *zzaRetPtr = &(zzaStack[zzasp-1]);	\					int zzBadTok=0; char *zzBadText="";		\					int zzErrk=1,zzpf=0;								\                    zzTRACEdata \					SetWordType *zzMissSet=NULL; int zzMissTok=0; char *zzMissText=""#endif#ifdef GENAST#define zzBLOCK(i)	int i = zzasp - 1; int zztsp = zzast_sp#define zzEXIT(i)	zzREL(i); zzastREL; zzNON_GUESS_MODE { zzastPush(*_root); }#define zzLOOP(i)	zzREL(i); zzastREL#else#define zzBLOCK(i)	int i = zzasp - 1#define zzEXIT(i)	zzREL(i)#define zzLOOP(i)	zzREL(i)#endif#ifdef LL_K#ifdef DEMAND_LOOK#define LOOK(_k)	{int i,stop=_k-(LL_K-zzdirty); for (i=1; i<=stop; i++)	\					zzCONSUME;}#define zzCONSUME	{zzgettok(); zzdirty--;							\					zzlap = (zzlap+1)&(LL_K-1);						\					zzlextext = &(zztextLA[zzlap][0]);}#else#ifdef ZZINF_LOOK#define zzCONSUME	{inf_zzgettok; 									\					zzlap = (zzlap+1)&(LL_K-1);						\					zzlextext = &(zztextLA[zzlap][0]);				\					}#else#define zzCONSUME	{zzgettok(); 									\					zzlap = (zzlap+1)&(LL_K-1);						\					zzlextext = &(zztextLA[zzlap][0]);}#endif /* ZZINF_LOOK */#endif /* DEMAND_LOOK */#else /* LL_K */#ifdef DEMAND_LOOK#define LOOK(_k)	if ( zzdirty) zzCONSUME;#ifdef ZZINF_LOOK#define zzCONSUME	inf_zzgettok; zzdirty=0;#else#define zzCONSUME	zzgettok(); zzdirty=0;#endif /* ZZINF_LOOK */#else  /* DEMAND_LOOK */#ifdef ZZINF_LOOK#define zzCONSUME	inf_zzgettok#else#define zzCONSUME	zzgettok();#endif#endif /* DEMAND_LOOK */#endif /* LL_K */#ifdef LL_K#define NLA			zztokenLA[zzlap&(LL_K-1)]	/* --> next LA */#define NLATEXT		zztextLA[zzlap&(LL_K-1)]	/* --> next text of LA */#ifdef DEMAND_LOOK#define LA(i)       zztokenLA[(zzlabase+(i)-1)&(LL_K-1)]#define LATEXT(i)   (&(zztextLA[(zzlabase+(i)-1)&(LL_K-1)][0]))#else#define LA(i)       zztokenLA[(zzlap+(i)-1)&(LL_K-1)]#define LATEXT(i)   (&(zztextLA[(zzlap+(i)-1)&(LL_K-1)][0]))#endif#else#define NLA			zztoken#define NLATEXT		zztext#define LA(i)       zztoken#define LATEXT(i)   zztext#endif           /* S t a n d a r d  S i g n a l s */#define NoSignal			0#define MismatchedToken		1#define NoViableAlt			2#define NoSemViableAlt		3/* MR7  Allow more control over signalling                                  *//*        by adding "Unwind" and "zzsetSignal"                              */#define Unwind              4#define zzsetSignal(newValue) *_retsignal=_signal=(newValue)#define zzsuppressSignal *_retsignal=_signal=0#define zzexportSignal    *_retsignal=_signal           /* F u n c t i o n  T r a c i n g */#ifndef zzTRACE_RULES#define zzTRACEdata#else#ifndef zzTRACEdata#define zzTRACEdata     ANTLRChar *zzTracePrevRuleName;#endif#endif#ifndef zzTRACEIN#define zzTRACEIN(r)	zzTracePrevRuleName=zzTraceCurrentRuleName;zzTraceIn(r);#endif#ifndef zzTRACEOUT#define zzTRACEOUT(r)	zzTraceOut(r);zzTraceCurrentRuleName=zzTracePrevRuleName;#endif#ifdef ZZWCHAR_T#define zzchar_t wchar_t#else#define zzchar_t char#endif				/* E x t e r n  D e f s */#ifdef __USE_PROTOSextern Attrib zzempty_attr();extern Attrib zzconstr_attr(int, char *);extern void zzsyn(char *, int, char *, SetWordType *, int, int, char *);extern int zzset_el(unsigned, SetWordType *);extern int zzset_deg(SetWordType *);extern void zzedecode(SetWordType *);extern void zzFAIL(int k, ...);extern void zzresynch(SetWordType *, SetWordType);extern void zzsave_antlr_state(zzantlr_state *);extern void zzrestore_antlr_state(zzantlr_state *);extern void zzfill_inf_look(void);extern void zzconsumeUntil(SetWordType *st);                         /* MR7 */extern void zzconsumeUntilToken(int t);                              /* MR7 */extern void zzTraceIn(char * ruleName);                              /* MR10 */extern void zzTraceOut(char * ruleName);                             /* MR10 */extern int  zzTraceOption(int delta);                                /* MR10 */extern int  zzTraceGuessOption(int delta);                           /* MR10 */extern void zzTraceReset();                                          /* MR10 */extern void zzTraceGuessFail();                                      /* MR10 */#ifdef EXCEPTION_HANDLINGextern void zzdflthandlers(int, int *);#endif#elseextern Attrib zzempty_attr();extern Attrib zzconstr_attr();extern void zzsyn();extern int zzset_el();extern int zzset_deg();extern void zzedecode();extern void zzFAIL();extern void zzresynch();extern void zzsave_antlr_state();extern void zzrestore_antlr_state();extern void zzfill_inf_look();extern void zzconsumeUntil();                                        /* MR7 */extern void zzconsumeUntilToken();                                   /* MR7 */extern void zzTraceIn();                                             /* MR10 */extern void zzTraceOut();                                            /* MR10 */extern int  zzTraceOption();                                         /* MR10 */extern int  zzTraceGuessOption();                                    /* MR10 */extern void zzTraceReset();                                          /* MR10 */extern void zzTraceGuessFail();                                      /* MR10 */#ifdef EXCEPTION_HANDLINGextern void zzdflthandlers();#endif#endif				/* G l o b a l  V a r i a b l e s *//* Define a parser; user should do a "#parser myname" in their grammar file *//*extern struct pccts_parser zzparser;*/extern char *zztokens[];#ifdef LL_Kextern int zztokenLA[];extern char zztextLA[][ZZLEXBUFSIZE];extern int zzlap;extern int zzlabase;#elseextern int zztoken;#endifextern char zzStackOvfMsg[];extern int zzasp;extern Attrib zzaStack[];#ifdef ZZINF_LOOKextern int *zzinf_tokens;extern char **zzinf_text;extern char *zzinf_text_buffer;extern int *zzinf_line;extern int zzinf_labase;extern int zzinf_last;#endif#ifdef DEMAND_LOOKextern int zzdirty;#endif#ifdef ZZCAN_GUESSextern int zzguessing;extern zzjmp_buf zzguess_start;#endif/* Define global veriables that refer to values exported by the scanner. * These declarations duplicate those in dlgdef.h, but are needed * if ANTLR is not to generate a .dlg file (-gx); PS, this is a hack. */extern zzchar_t *zzlextext;     /* text of most recently matched token */extern int      zzbufsize;      /* how long zzlextext is */#endif

⌨️ 快捷键说明

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