antlr.h

来自「SRI international 发布的OAA框架软件」· C头文件 代码 · 共 808 行 · 第 1/2 页

H
808
字号
        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

/* MR19 Paul D. Smith (psmith@baynetworks.com)
   Need to adjust AST stack pointer at exit.
   Referenced in ANTLRx macros.
*/

#ifdef GENAST
#define ZZAST_ADJUST ++zzast_sp;
#else
#define ZZAST_ADJUST
#endif

#define ANTLR(st, f)	zzbufsize = ZZLEXBUFSIZE;	\
						zzenterANTLR(f);			\
            {                                            \
              zzBLOCK(zztasp1);                          \
						  st; /* ++zzasp; Removed MR20 G. Hobbelt */     \
						      /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
              /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */  \
              zzEXIT_ANTLR(zztasp1 + 1);                 \
            }                                            \
						zzleaveANTLR(f);
						
#define ANTLRm(st, f, _m)	zzbufsize = ZZLEXBUFSIZE;	\
						zzmode(_m);				\
						zzenterANTLR(f);			\
            {                                            \
              zzBLOCK(zztasp1);                          \
						  st; /* ++zzasp; Removed MR20 G. Hobbelt */     \
						      /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
              /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */  \
              zzEXIT_ANTLR(zztasp1 + 1);                 \
            }                                            \
						zzleaveANTLR(f);
						
#define ANTLRf(st, f)	zzbufsize = ZZLEXBUFSIZE;	\
						zzenterANTLRf(f);			\
            {                                            \
              zzBLOCK(zztasp1);                          \
						  st; /* ++zzasp; Removed MR20 G. Hobbelt */     \
						      /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
              /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */  \
              zzEXIT_ANTLR(zztasp1 + 1);                 \
            }                                            \
						zzleaveANTLRf(f);

#define ANTLRs(st, s)   zzbufsize = ZZLEXBUFSIZE;	\
                        zzenterANTLRs(s);           \
            {                                            \
              zzBLOCK(zztasp1);                          \
						  st; /* ++zzasp; Removed MR20 G. Hobbelt */     \
						      /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \
              /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */  \
              zzEXIT_ANTLR(zztasp1 + 1);                 \
            }                                            \
                        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,_tokclassErrset)						\
	if ( !_zzsetmatch(_es, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet, _tokclassErrset) ) goto fail; /* MR23 */

#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_PROTOS
extern int _zzsetmatch(SetWordType *, char **, char **, int *, int *, SetWordType **, SetWordType * /* MR23 */); 
extern int _zzsetmatch_wsig(SetWordType *);
#else
extern 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_PROTOS
extern int _zzmatch(int, char **, char **, int *, int *, SetWordType **);
extern int _zzmatch_wsig(int);
#else
extern 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_PROTOS
extern int _zzmatch_wdfltsig(int, SetWordType *);
extern int _zzsetmatch_wdfltsig(SetWordType *tokensWanted,
								int tokenTypeOfSet,
								SetWordType *whatFollows);
#else
extern 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 zzEXIT_ANTLR(i)	zzREL(i); zzastREL /* [i_a] added as we want this for the ANTLRx() macros */
#define zzLOOP(i)	zzREL(i); zzastREL
#else
#define zzBLOCK(i)	int i = zzasp - 1
#define zzEXIT(i)	zzREL(i)
#define zzEXIT_ANTLR(i)	zzREL(i)           /* [i_a] added as we want this for the ANTLRx() macros */
#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 = NULL;
#endif
#endif

#ifndef zzTRACEIN
#define zzTRACEIN(r)	zzTracePrevRuleName=zzTraceCurrentRuleName;zzTraceIn(r);
#endif
#ifndef zzTRACEOUT
#define zzTRACEOUT(r)	zzTraceOut(r);zzTraceCurrentRuleName=zzTracePrevRuleName;
#endif

/* MR19 zzchar_t additions */

#ifndef zzchar_t
#ifdef ZZWCHAR_T
#define zzchar_t wchar_t
#else
#define zzchar_t char
#endif
#endif


/* MR26 */

#ifdef PCCTS_USE_STDARG
extern void zzFAIL(int k, ...);
#else
extern void zzFAIL();
#endif
				/* E x t e r n  D e f s */

#ifdef __USE_PROTOS
extern Attrib zzempty_attr(void);
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 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(void);                                      /* MR10 */
extern void zzTraceGuessFail(void);                                  /* MR10 */
#ifdef EXCEPTION_HANDLING
extern void zzdflthandlers(int, int *);
#endif
#else
extern Attrib zzempty_attr();
extern Attrib zzconstr_attr();
extern void zzsyn();
extern int zzset_el();
extern int zzset_deg();
extern void zzedecode();
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_HANDLING
extern 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_K
extern int zztokenLA[];
extern zzchar_t zztextLA[][ZZLEXBUFSIZE];
extern int zzlap;
extern int zzlabase;
#else
extern int zztoken;
#endif

extern char zzStackOvfMsg[];
extern int zzasp;
extern Attrib zzaStack[];
#ifdef ZZINF_LOOK
extern 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_LOOK
extern int zzdirty;
#endif
#ifdef ZZCAN_GUESS
extern 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 + -
显示快捷键?