+++ /dev/null
-/* antlr.h \r
- *\r
- * SOFTWARE RIGHTS\r
- *\r
- * We reserve no LEGAL rights to the Purdue Compiler Construction Tool\r
- * Set (PCCTS) -- PCCTS is in the public domain. An individual or\r
- * company may do whatever they wish with source code distributed with\r
- * PCCTS or the code generated by PCCTS, including the incorporation of\r
- * PCCTS, or its output, into commerical software.\r
- *\r
- * We encourage users to develop software with PCCTS. However, we do ask\r
- * that credit is given to us for developing PCCTS. By "credit",\r
- * we mean that if you incorporate our source code into one of your\r
- * programs (commercial product, research project, or otherwise) that you\r
- * acknowledge this fact somewhere in the documentation, research report,\r
- * etc... If you like PCCTS and have developed a nice tool with the\r
- * output, please mention that you developed it using PCCTS. In\r
- * addition, we ask that this header remain intact in our source code.\r
- * As long as these guidelines are kept, we expect to continue enhancing\r
- * this system and expect to make other tools available as they are\r
- * completed.\r
- *\r
- * ANTLR 1.33\r
- * Terence Parr\r
- * Parr Research Corporation\r
- * with Purdue University and AHPCRC, University of Minnesota\r
- * 1989-2000\r
- */\r
-\r
-#ifndef ANTLR_H\r
-#define ANTLR_H\r
-\r
-#include "pcctscfg.h"\r
-\r
-#include "pccts_stdio.h"\r
-\r
-/* turn off warnings for unreferenced labels */\r
-\r
-#ifdef _MSC_VER\r
-#pragma warning(disable:4102)\r
-#endif\r
-\r
-/*\r
- * Define all of the stack setup and manipulation of $i, #i variables.\r
- *\r
- * Notes:\r
- * The type 'Attrib' must be defined before entry into this .h file.\r
- */\r
-\r
-\r
-#ifdef __USE_PROTOS\r
-#include "pccts_stdlib.h"\r
-#else\r
-#ifdef VAXC\r
-#include <stdlib.h>\r
-#else\r
-#include <malloc.h>\r
-#endif\r
-#endif\r
-#include "pccts_string.h"\r
-\r
-#if 0\r
-#include "set.h"\r
-#endif\r
-\r
-\r
-typedef int ANTLRTokenType;\r
-typedef unsigned char SetWordType;\r
-\r
-typedef char ANTLRChar;\r
-\r
- /* G u e s s S t u f f */\r
-\r
-#ifdef ZZCAN_GUESS\r
-#ifndef ZZINF_LOOK\r
-#define ZZINF_LOOK\r
-#endif\r
-#endif\r
-\r
-#ifdef ZZCAN_GUESS\r
-typedef struct _zzjmp_buf {\r
- jmp_buf state;\r
- } zzjmp_buf;\r
-#endif\r
-\r
-\r
-/* can make this a power of 2 for more efficient lookup */\r
-\r
-#ifndef ZZLEXBUFSIZE\r
-#define ZZLEXBUFSIZE 8000 /* MR22 raise from 2k to 8k */\r
-#endif\r
-\r
-#define zzOvfChk \\r
- if ( zzasp <= 0 ) \\r
- { \\r
- fprintf(stderr, zzStackOvfMsg, __FILE__, __LINE__); \\r
- exit(PCCTS_EXIT_FAILURE); \\r
- }\r
-\r
-#ifndef ZZA_STACKSIZE\r
-#define ZZA_STACKSIZE 400\r
-#endif\r
-#ifndef ZZAST_STACKSIZE\r
-#define ZZAST_STACKSIZE 400\r
-#endif\r
-\r
-#ifndef zzfailed_pred\r
-#ifdef ZZCAN_GUESS\r
-#define zzfailed_pred(_p,_hasuseraction,_useraction) \\r
- if (zzguessing) { \\r
- zzGUESS_FAIL; \\r
- } else { \\r
- zzfailed_pred_action(_p,_hasuseraction,_useraction); \\r
- }\r
-#else\r
-#define zzfailed_pred(_p,_hasuseraction,_useraction) \\r
- zzfailed_pred_action(_p,_hasuseraction,_useraction);\r
-#endif\r
-#endif\r
-\r
-/* MR23 Provide more control over failed predicate action\r
- without any need for user to worry about guessing internals.\r
- _hasuseraction == 0 => no user specified error action\r
- _hasuseraction == 1 => user specified error action\r
-*/\r
-\r
-#ifndef zzfailed_pred_action\r
-#define zzfailed_pred_action(_p,_hasuseraction,_useraction) \\r
- if (_hasuseraction) { _useraction } \\r
- else { fprintf(stderr, "semantic error; failed predicate: '%s'\n",_p); }\r
-#endif\r
-\r
-/* MR19 zzchar_t additions */\r
-\r
-#ifdef LL_K\r
-#define LOOKAHEAD \\r
- int zztokenLA[LL_K]; \\r
- zzchar_t zztextLA[LL_K][ZZLEXBUFSIZE]; \\r
- int zzlap = 0, zzlabase=0; /* labase only used for DEMAND_LOOK */\r
-#else\r
-#define LOOKAHEAD \\r
- int zztoken;\r
-#endif\r
-\r
-#ifndef zzcr_ast\r
-#define zzcr_ast(ast,attr,tok,text)\r
-#endif\r
-\r
-#ifdef DEMAND_LOOK\r
-#define DemandLookData int zzdirty=1;\r
-#else\r
-#define DemandLookData\r
-#endif\r
-\r
-#ifndef zzUSER_GUESS_HOOK\r
-#define zzUSER_GUESS_HOOK(seqFrozen,zzrv)\r
-#endif\r
-\r
-#ifndef zzUSER_GUESS_DONE_HOOK\r
-#define zzUSER_GUESS_DONE_HOOK(seqFrozen)\r
-#endif\r
-\r
- /* S t a t e S t u f f */\r
-\r
-#ifdef ZZCAN_GUESS\r
-#define zzGUESS_BLOCK zzantlr_state zzst; int zzrv; int zzGuessSeqFrozen;\r
-\r
-/* MR10 change zzGUESS: do zzGUESS_DONE when zzrv==1 after longjmp as in C++ mode */\r
-\r
-#define zzGUESS zzsave_antlr_state(&zzst); \\r
- zzguessing = 1; \\r
- zzGuessSeqFrozen=++zzGuessSeq; \\r
- zzrv = setjmp(zzguess_start.state); \\r
- zzUSER_GUESS_HOOK(zzGuessSeqFrozen,zzrv) \\r
- if (zzrv) zzGUESS_DONE;\r
-#ifdef zzTRACE_RULES\r
-#define zzGUESS_FAIL { zzTraceGuessFail(); longjmp(zzguess_start.state, 1); }\r
-#else\r
-#define zzGUESS_FAIL longjmp(zzguess_start.state, 1)\r
-#endif\r
-\r
-/* MR10 change zzGUESS_DONE: zzrv=1 to simulate longjmp() return value as in C++ mode */\r
-\r
-#define zzGUESS_DONE { zzrestore_antlr_state(&zzst); zzrv=1; zzUSER_GUESS_DONE_HOOK(zzGuessSeqFrozen) }\r
-#define zzNON_GUESS_MODE if ( !zzguessing )\r
-#define zzGuessData \\r
- zzjmp_buf zzguess_start; \\r
- int zzguessing;\r
-#else\r
-#define zzGUESS_BLOCK\r
-#define zzGUESS\r
-#define zzGUESS_FAIL\r
-#define zzGUESS_DONE\r
-#define zzNON_GUESS_MODE\r
-#define zzGuessData\r
-#endif\r
-\r
-typedef struct _zzantlr_state {\r
-#ifdef ZZCAN_GUESS\r
- zzjmp_buf guess_start;\r
- int guessing;\r
-#endif\r
- int asp;\r
- int ast_sp;\r
-#ifdef ZZINF_LOOK\r
- int inf_lap; /* not sure we need to save this one */\r
- int inf_labase;\r
- int inf_last;\r
-\r
-/* MR6 Gunnar Rxnning (gunnar@candleweb.no) */\r
-/* MR6 Additional state needs to be saved/restored */\r
-/* MR6 Matching changes in err.h */\r
-\r
- int *inf_tokens; /* MR6 */\r
- char **inf_text; /* MR6 */\r
- char *inf_text_buffer; /* MR6 */\r
- int *inf_line; /* MR6 */\r
-#endif\r
-#ifdef DEMAND_LOOK\r
- int dirty;\r
-#endif\r
-\r
-#ifdef LL_K\r
- int tokenLA[LL_K];\r
- char textLA[LL_K][ZZLEXBUFSIZE];\r
- int lap;\r
- int labase;\r
-#else\r
- int token;\r
- char text[ZZLEXBUFSIZE];\r
-#endif\r
-#ifdef zzTRACE_RULES\r
- int traceOptionValue; /* MR10 */\r
- int traceGuessOptionValue; /* MR10 */\r
- char *traceCurrentRuleName; /* MR10 */\r
- int traceDepth; /* MR10 */\r
-#endif\r
-\r
- } zzantlr_state;\r
-\r
-#ifdef zzTRACE_RULES\r
-extern int zzTraceOptionValueDefault;\r
-extern int zzTraceOptionValue;\r
-extern int zzTraceGuessOptionValue;\r
-extern char *zzTraceCurrentRuleName;\r
-extern int zzTraceDepth;\r
-#endif\r
-\r
-extern int zzGuessSeq; /* MR10 */\r
-extern int zzSyntaxErrCount; /* MR11 */\r
-extern int zzLexErrCount; /* MR11 */\r
-\r
- /* I n f i n i t e L o o k a h e a d */\r
-\r
-\r
-#ifdef ZZINF_LOOK\r
-#define InfLookData \\r
- int *zzinf_tokens; \\r
- char **zzinf_text; \\r
- char *zzinf_text_buffer; \\r
- int *zzinf_line; \\r
- int zzinf_labase; \\r
- int zzinf_last;\r
-#else\r
-#define InfLookData\r
-#endif\r
-\r
-#ifdef ZZINF_LOOK\r
-\r
-#ifndef ZZINF_DEF_TEXT_BUFFER_SIZE\r
-#define ZZINF_DEF_TEXT_BUFFER_SIZE 20000\r
-#endif\r
-#ifndef ZZINF_DEF_TOKEN_BUFFER_SIZE\r
-#define ZZINF_DEF_TOKEN_BUFFER_SIZE 2000\r
-#endif\r
-/* WARNING!!!!!!\r
- * ZZINF_BUFFER_TEXT_CHUNK_SIZE must be > sizeof(text) largest possible token.\r
- */\r
-#ifndef ZZINF_BUFFER_TEXT_CHUNK_SIZE\r
-#define ZZINF_BUFFER_TEXT_CHUNK_SIZE 5000\r
-#endif\r
-#ifndef ZZINF_BUFFER_TOKEN_CHUNK_SIZE\r
-#define ZZINF_BUFFER_TOKEN_CHUNK_SIZE 1000\r
-#endif\r
-\r
-#if ZZLEXBUFSIZE > ZZINF_BUFFER_TEXT_CHUNK_SIZE\r
-#define ZZINF_BUFFER_TEXT_CHUNK_SIZE ZZLEXBUFSIZE+5\r
-#endif\r
-\r
-/* make inf_look user-access macros */\r
-#ifdef LL_K\r
-#define ZZINF_LA_VALID(i) (((zzinf_labase+i-1)-LL_K+1) <= zzinf_last)\r
-#define ZZINF_LA(i) zzinf_tokens[(zzinf_labase+i-1)-LL_K+1]\r
-#define ZZINF_LATEXT(i) zzinf_text[(zzinf_labase+i-1)-LL_K+1]\r
-/* MR6 In 1.33 vanilla the #define ZZINF_LINE(i) is was commented out */\r
-#define ZZINF_LINE(i) zzinf_line[(zzinf_labase+i-1)-LL_K+1]\r
-#else\r
-#define ZZINF_LA_VALID(i) (((zzinf_labase+i-1)) <= zzinf_last)\r
-#define ZZINF_LA(i) zzinf_tokens[(zzinf_labase+i-1)]\r
-#define ZZINF_LATEXT(i) zzinf_text[(zzinf_labase+i-1)]\r
-#endif\r
-\r
-#define inf_zzgettok _inf_zzgettok()\r
-extern void _inf_zzgettok();\r
-\r
-#endif /* ZZINF_LOOK */\r
-\r
-\r
-#ifdef LL_K\r
-\r
-#ifdef __USE_PROTOS\r
-#define ANTLR_INFO \\r
- Attrib zzempty_attr(void) {static Attrib a; return a;} \\r
- Attrib zzconstr_attr(int _tok, char *_text) \\r
- {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \\r
- int zzasp=ZZA_STACKSIZE; \\r
- char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \\r
- Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \\r
- InfLookData \\r
- zzGuessData\r
-#else\r
-#define ANTLR_INFO \\r
- Attrib zzempty_attr() {static Attrib a; return a;} \\r
- Attrib zzconstr_attr(_tok, _text) int _tok; char *_text; \\r
- {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \\r
- int zzasp=ZZA_STACKSIZE; \\r
- char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \\r
- Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \\r
- InfLookData \\r
- zzGuessData\r
-#endif\r
-\r
-#else\r
-\r
-#ifdef __USE_PROTOS\r
-#define ANTLR_INFO \\r
- Attrib zzempty_attr(void) {static Attrib a; return a;} \\r
- Attrib zzconstr_attr(int _tok, char *_text) \\r
- {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \\r
- int zzasp=ZZA_STACKSIZE; \\r
- char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \\r
- Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \\r
- InfLookData \\r
- zzGuessData\r
-#else\r
-#define ANTLR_INFO \\r
- Attrib zzempty_attr() {static Attrib a; return a;} \\r
- Attrib zzconstr_attr(_tok, _text) int _tok; char *_text; \\r
- {Attrib a; zzcr_attr((&a),_tok,_text); return a;} \\r
- int zzasp=ZZA_STACKSIZE; \\r
- char zzStackOvfMsg[]="fatal: attrib/AST stack overflow %s(%d)!\n"; \\r
- Attrib zzaStack[ZZA_STACKSIZE]; DemandLookData \\r
- InfLookData \\r
- zzGuessData\r
-#endif\r
- \r
-#endif /* LL_k */\r
-\r
-\r
-#ifdef ZZINF_LOOK\r
-\r
-#ifdef LL_K\r
-#ifdef DEMAND_LOOK\r
-#define zzPrimeLookAhead {zzdirty=LL_K; zzlap = zzlabase = 0;}\r
-#else\r
-#define zzPrimeLookAhead {zzlap = zzlabase = 0; zzfill_inf_look();\\r
- {int _i; for(_i=1;_i<=LL_K; _i++) \\r
- {zzCONSUME;} zzlap = zzlabase = 0;}}\r
-#endif\r
-\r
-#else /* LL_K */\r
-\r
-#ifdef DEMAND_LOOK\r
-#define zzPrimeLookAhead zzfill_inf_look(); zzdirty=1\r
-#else\r
-#define zzPrimeLookAhead zzfill_inf_look(); inf_zzgettok\r
-\r
-#endif\r
-#endif /* LL_K */\r
-\r
-#else /* ZZINF_LOOK */\r
-\r
-#ifdef LL_K\r
-#ifdef DEMAND_LOOK\r
-#define zzPrimeLookAhead {zzdirty=LL_K; zzlap = zzlabase = 0;}\r
-#else\r
-#define zzPrimeLookAhead {int _i; zzlap = 0; for(_i=1;_i<=LL_K; _i++) \\r
- {zzCONSUME;} zzlap = 0;}\r
-#endif\r
-\r
-#else\r
-\r
-#ifdef DEMAND_LOOK\r
-#define zzPrimeLookAhead zzdirty=1\r
-#else\r
-#define zzPrimeLookAhead zzgettok()\r
-#endif\r
-#endif /* LL_K */\r
-\r
-#endif /* ZZINF_LOOK */\r
-\r
-\r
-#ifdef LL_K\r
-#define zzenterANTLRs(s) \\r
- zzlextext = &(zztextLA[0][0]); zzrdstr( s ); zzPrimeLookAhead;\r
-#define zzenterANTLRf(f) \\r
- zzlextext = &(zztextLA[0][0]); zzrdfunc( f ); zzPrimeLookAhead;\r
-#define zzenterANTLR(f) \\r
- zzlextext = &(zztextLA[0][0]); zzrdstream( f ); zzPrimeLookAhead;\r
-#ifdef ZZINF_LOOK\r
-#define zzleaveANTLR(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);\r
-#define zzleaveANTLRf(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);\r
-#define zzleaveANTLRs(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);\r
-#else\r
-#define zzleaveANTLR(f)\r
-#define zzleaveANTLRf(f)\r
-#define zzleaveANTLRs(f)\r
-#endif\r
-\r
-#else\r
-\r
-#define zzenterANTLRs(s) \\r
- {static char zztoktext[ZZLEXBUFSIZE]; \\r
- zzlextext = zztoktext; zzrdstr( s ); zzPrimeLookAhead;}\r
-#define zzenterANTLRf(f) \\r
- {static char zztoktext[ZZLEXBUFSIZE]; \\r
- zzlextext = zztoktext; zzrdfunc( f ); zzPrimeLookAhead;}\r
-#define zzenterANTLR(f) \\r
- {static char zztoktext[ZZLEXBUFSIZE]; \\r
- zzlextext = zztoktext; zzrdstream( f ); zzPrimeLookAhead;}\r
-#ifdef ZZINF_LOOK\r
-#define zzleaveANTLR(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);\r
-#define zzleaveANTLRf(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);\r
-#define zzleaveANTLRs(f) free(zzinf_text_buffer); free(zzinf_text); free(zzinf_tokens); free(zzinf_line);\r
-#else\r
-#define zzleaveANTLR(f)\r
-#define zzleaveANTLRf(f)\r
-#define zzleaveANTLRs(f)\r
-#endif\r
-\r
-#endif\r
-\r
-/* MR19 Paul D. Smith (psmith@baynetworks.com)\r
- Need to adjust AST stack pointer at exit.\r
- Referenced in ANTLRx macros.\r
-*/\r
-\r
-#ifdef GENAST\r
-#define ZZAST_ADJUST ++zzast_sp;\r
-#else\r
-#define ZZAST_ADJUST\r
-#endif\r
-\r
-#define ANTLR(st, f) zzbufsize = ZZLEXBUFSIZE; \\r
- zzenterANTLR(f); \\r
- { \\r
- zzBLOCK(zztasp1); \\r
- st; /* ++zzasp; Removed MR20 G. Hobbelt */ \\r
- /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \\r
- /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \\r
- zzEXIT_ANTLR(zztasp1 + 1); \\r
- } \\r
- zzleaveANTLR(f);\r
- \r
-#define ANTLRm(st, f, _m) zzbufsize = ZZLEXBUFSIZE; \\r
- zzmode(_m); \\r
- zzenterANTLR(f); \\r
- { \\r
- zzBLOCK(zztasp1); \\r
- st; /* ++zzasp; Removed MR20 G. Hobbelt */ \\r
- /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \\r
- /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \\r
- zzEXIT_ANTLR(zztasp1 + 1); \\r
- } \\r
- zzleaveANTLR(f);\r
- \r
-#define ANTLRf(st, f) zzbufsize = ZZLEXBUFSIZE; \\r
- zzenterANTLRf(f); \\r
- { \\r
- zzBLOCK(zztasp1); \\r
- st; /* ++zzasp; Removed MR20 G. Hobbelt */ \\r
- /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \\r
- /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \\r
- zzEXIT_ANTLR(zztasp1 + 1); \\r
- } \\r
- zzleaveANTLRf(f);\r
-\r
-#define ANTLRs(st, s) zzbufsize = ZZLEXBUFSIZE; \\r
- zzenterANTLRs(s); \\r
- { \\r
- zzBLOCK(zztasp1); \\r
- st; /* ++zzasp; Removed MR20 G. Hobbelt */ \\r
- /* ZZAST_ADJUST Removed MR20 G. Hobbelt */ \\r
- /* MR20 G. Hobbelt. Kill the top' attribute (+AST stack corr.) */ \\r
- zzEXIT_ANTLR(zztasp1 + 1); \\r
- } \\r
- zzleaveANTLRs(s);\r
-\r
-#ifdef LL_K\r
-#define zztext (&(zztextLA[zzlap][0]))\r
-#else\r
-#define zztext zzlextext\r
-#endif\r
-\r
-\r
- /* A r g u m e n t A c c e s s */\r
-\r
-#define zzaCur (zzaStack[zzasp])\r
-#define zzaRet (*zzaRetPtr)\r
-#define zzaArg(v,n) zzaStack[v-n]\r
-#define zzMakeAttr { zzNON_GUESS_MODE {zzOvfChk; --zzasp; zzcr_attr(&(zzaStack[zzasp]),LA(1),LATEXT(1));}}\r
-#ifdef zzdef0\r
-#define zzMake0 { zzOvfChk; --zzasp; zzdef0(&(zzaStack[zzasp]));}\r
-#else\r
-#define zzMake0 { zzOvfChk; --zzasp;}\r
-#endif\r
-#define zzaPush(_v) { zzOvfChk; zzaStack[--zzasp] = _v;}\r
-#ifndef zzd_attr\r
-#define zzREL(t) zzasp=(t); /* Restore state of stack */\r
-#else\r
-#define zzREL(t) for (; zzasp<(t); zzasp++) \\r
- { zzd_attr(&(zzaStack[zzasp])); }\r
-#endif\r
-\r
-\r
-#define zzsetmatch(_es,_tokclassErrset) \\r
- if ( !_zzsetmatch(_es, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet, _tokclassErrset) ) goto fail; /* MR23 */\r
-\r
-#ifdef ZZCAN_GUESS\r
-#define zzsetmatch_wsig(_es, handler) \\r
- if ( !_zzsetmatch_wsig(_es) ) if (zzguessing) { zzGUESS_FAIL; } else {_signal=MismatchedToken; goto handler;}\r
-#else\r
-#define zzsetmatch_wsig(_es, handler) \\r
- if ( !_zzsetmatch_wsig(_es) ) {_signal=MismatchedToken; goto handler;}\r
-#endif\r
-\r
-#ifdef __USE_PROTOS\r
-extern int _zzsetmatch(SetWordType *, char **, char **, int *, int *, SetWordType **, SetWordType * /* MR23 */); \r
-extern int _zzsetmatch_wsig(SetWordType *);\r
-#else\r
-extern int _zzsetmatch();\r
-extern int _zzsetmatch_wsig();\r
-#endif\r
-\r
-#define zzmatch(_t) \\r
- if ( !_zzmatch(_t, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet) ) goto fail;\r
-\r
-#ifdef ZZCAN_GUESS\r
-#define zzmatch_wsig(_t,handler) \\r
- if ( !_zzmatch_wsig(_t) ) if (zzguessing) { zzGUESS_FAIL; } else {_signal=MismatchedToken; goto handler;}\r
-#else\r
-#define zzmatch_wsig(_t,handler) \\r
- if ( !_zzmatch_wsig(_t) ) {_signal=MismatchedToken; goto handler;}\r
-#endif\r
-\r
-#ifdef __USE_PROTOS\r
-extern int _zzmatch(int, char **, char **, int *, int *, SetWordType **);\r
-extern int _zzmatch_wsig(int);\r
-#else\r
-extern int _zzmatch();\r
-extern int _zzmatch_wsig();\r
-#endif\r
-\r
-#define zzmatch_wdfltsig(_t,_f) \\r
- if ( !_zzmatch_wdfltsig(_t,_f) ) _signal=MismatchedToken;\r
-#define zzsetmatch_wdfltsig(tw,tt,wf) \\r
- if ( !_zzsetmatch_wdfltsig(tw,tt,wf) ) _signal=MismatchedToken;\r
-\r
-#ifdef __USE_PROTOS\r
-extern int _zzmatch_wdfltsig(int, SetWordType *);\r
-extern int _zzsetmatch_wdfltsig(SetWordType *tokensWanted,\r
- int tokenTypeOfSet,\r
- SetWordType *whatFollows);\r
-#else\r
-extern int _zzmatch_wdfltsig();\r
-extern int _zzsetmatch_wdfltsig();\r
-#endif\r
-\r
-#ifdef GENAST\r
-#define zzRULE Attrib *zzaRetPtr = &(zzaStack[zzasp-1]); \\r
- SetWordType *zzMissSet=NULL; int zzMissTok=0; \\r
- int zzBadTok=0; char *zzBadText=""; \\r
- int zzErrk=1,zzpf=0; \\r
- zzTRACEdata \\r
- char *zzMissText=""; zzASTVars\r
-#else\r
-#define zzRULE Attrib *zzaRetPtr = &(zzaStack[zzasp-1]); \\r
- int zzBadTok=0; char *zzBadText=""; \\r
- int zzErrk=1,zzpf=0; \\r
- zzTRACEdata \\r
- SetWordType *zzMissSet=NULL; int zzMissTok=0; char *zzMissText=""\r
-#endif\r
-\r
-#ifdef GENAST\r
-#define zzBLOCK(i) int i = zzasp - 1; int zztsp = zzast_sp\r
-#define zzEXIT(i) zzREL(i); zzastREL; zzNON_GUESS_MODE { zzastPush(*_root); }\r
-#define zzEXIT_ANTLR(i) zzREL(i); zzastREL /* [i_a] added as we want this for the ANTLRx() macros */\r
-#define zzLOOP(i) zzREL(i); zzastREL\r
-#else\r
-#define zzBLOCK(i) int i = zzasp - 1\r
-#define zzEXIT(i) zzREL(i)\r
-#define zzEXIT_ANTLR(i) zzREL(i) /* [i_a] added as we want this for the ANTLRx() macros */\r
-#define zzLOOP(i) zzREL(i)\r
-#endif\r
-\r
-#ifdef LL_K\r
-\r
-#ifdef DEMAND_LOOK\r
-#define LOOK(_k) {int i,stop=_k-(LL_K-zzdirty); for (i=1; i<=stop; i++) \\r
- zzCONSUME;}\r
-#define zzCONSUME {zzgettok(); zzdirty--; \\r
- zzlap = (zzlap+1)&(LL_K-1); \\r
- zzlextext = &(zztextLA[zzlap][0]);}\r
-#else\r
-#ifdef ZZINF_LOOK\r
-#define zzCONSUME {inf_zzgettok; \\r
- zzlap = (zzlap+1)&(LL_K-1); \\r
- zzlextext = &(zztextLA[zzlap][0]); \\r
- }\r
-#else\r
-#define zzCONSUME {zzgettok(); \\r
- zzlap = (zzlap+1)&(LL_K-1); \\r
- zzlextext = &(zztextLA[zzlap][0]);}\r
-#endif /* ZZINF_LOOK */\r
-#endif /* DEMAND_LOOK */\r
-\r
-#else /* LL_K */\r
-\r
-#ifdef DEMAND_LOOK\r
-#define LOOK(_k) if ( zzdirty) zzCONSUME;\r
-#ifdef ZZINF_LOOK\r
-#define zzCONSUME inf_zzgettok; zzdirty=0;\r
-#else\r
-#define zzCONSUME zzgettok(); zzdirty=0;\r
-#endif /* ZZINF_LOOK */\r
-\r
-#else /* DEMAND_LOOK */\r
-\r
-#ifdef ZZINF_LOOK\r
-#define zzCONSUME inf_zzgettok\r
-#else\r
-#define zzCONSUME zzgettok();\r
-#endif\r
-\r
-#endif /* DEMAND_LOOK */\r
-\r
-#endif /* LL_K */\r
-\r
-#ifdef LL_K\r
-#define NLA zztokenLA[zzlap&(LL_K-1)] /* --> next LA */\r
-#define NLATEXT zztextLA[zzlap&(LL_K-1)] /* --> next text of LA */\r
-#ifdef DEMAND_LOOK\r
-#define LA(i) zztokenLA[(zzlabase+(i)-1)&(LL_K-1)]\r
-#define LATEXT(i) (&(zztextLA[(zzlabase+(i)-1)&(LL_K-1)][0]))\r
-#else\r
-#define LA(i) zztokenLA[(zzlap+(i)-1)&(LL_K-1)]\r
-#define LATEXT(i) (&(zztextLA[(zzlap+(i)-1)&(LL_K-1)][0]))\r
-#endif\r
-#else\r
-#define NLA zztoken\r
-#define NLATEXT zztext\r
-#define LA(i) zztoken\r
-#define LATEXT(i) zztext\r
-#endif\r
-\r
-\r
- /* S t a n d a r d S i g n a l s */\r
-\r
-#define NoSignal 0\r
-#define MismatchedToken 1\r
-#define NoViableAlt 2\r
-#define NoSemViableAlt 3\r
-\r
-/* MR7 Allow more control over signalling */\r
-/* by adding "Unwind" and "zzsetSignal" */\r
-\r
-#define Unwind 4\r
-#define zzsetSignal(newValue) *_retsignal=_signal=(newValue)\r
-#define zzsuppressSignal *_retsignal=_signal=0\r
-#define zzexportSignal *_retsignal=_signal\r
-\r
- /* F u n c t i o n T r a c i n g */\r
-\r
-#ifndef zzTRACE_RULES\r
-#define zzTRACEdata\r
-#else\r
-#ifndef zzTRACEdata\r
-#define zzTRACEdata ANTLRChar *zzTracePrevRuleName = NULL;\r
-#endif\r
-#endif\r
-\r
-#ifndef zzTRACEIN\r
-#define zzTRACEIN(r) zzTracePrevRuleName=zzTraceCurrentRuleName;zzTraceIn(r);\r
-#endif\r
-#ifndef zzTRACEOUT\r
-#define zzTRACEOUT(r) zzTraceOut(r);zzTraceCurrentRuleName=zzTracePrevRuleName;\r
-#endif\r
-\r
-/* MR19 zzchar_t additions */\r
-\r
-#ifndef zzchar_t\r
-#ifdef ZZWCHAR_T\r
-#define zzchar_t wchar_t\r
-#else\r
-#define zzchar_t char\r
-#endif\r
-#endif\r
-\r
-\r
-/* MR26 */\r
-\r
-#ifdef PCCTS_USE_STDARG\r
-extern void zzFAIL(int k, ...);\r
-#else\r
-extern void zzFAIL();\r
-#endif\r
- /* E x t e r n D e f s */\r
-\r
-#ifdef __USE_PROTOS\r
-extern Attrib zzempty_attr(void);\r
-extern Attrib zzconstr_attr(int, char *);\r
-extern void zzsyn(char *, int, char *, SetWordType *, int, int, char *);\r
-extern int zzset_el(unsigned, SetWordType *);\r
-extern int zzset_deg(SetWordType *);\r
-extern void zzedecode(SetWordType *);\r
-\r
-extern void zzresynch(SetWordType *, SetWordType);\r
-extern void zzsave_antlr_state(zzantlr_state *);\r
-extern void zzrestore_antlr_state(zzantlr_state *);\r
-extern void zzfill_inf_look(void);\r
-extern void zzconsumeUntil(SetWordType *st); /* MR7 */\r
-extern void zzconsumeUntilToken(int t); /* MR7 */\r
-extern void zzTraceIn(char * ruleName); /* MR10 */\r
-extern void zzTraceOut(char * ruleName); /* MR10 */\r
-extern int zzTraceOption(int delta); /* MR10 */\r
-extern int zzTraceGuessOption(int delta); /* MR10 */\r
-extern void zzTraceReset(void); /* MR10 */\r
-extern void zzTraceGuessFail(void); /* MR10 */\r
-#ifdef EXCEPTION_HANDLING\r
-extern void zzdflthandlers(int, int *);\r
-#endif\r
-#else\r
-extern Attrib zzempty_attr();\r
-extern Attrib zzconstr_attr();\r
-extern void zzsyn();\r
-extern int zzset_el();\r
-extern int zzset_deg();\r
-extern void zzedecode();\r
-extern void zzresynch();\r
-extern void zzsave_antlr_state();\r
-extern void zzrestore_antlr_state();\r
-extern void zzfill_inf_look();\r
-extern void zzconsumeUntil(); /* MR7 */\r
-extern void zzconsumeUntilToken(); /* MR7 */\r
-extern void zzTraceIn(); /* MR10 */\r
-extern void zzTraceOut(); /* MR10 */\r
-extern int zzTraceOption(); /* MR10 */\r
-extern int zzTraceGuessOption(); /* MR10 */\r
-extern void zzTraceReset(); /* MR10 */\r
-extern void zzTraceGuessFail(); /* MR10 */\r
-#ifdef EXCEPTION_HANDLING\r
-extern void zzdflthandlers();\r
-#endif\r
-#endif\r
-\r
- /* G l o b a l V a r i a b l e s */\r
-\r
-/* Define a parser; user should do a "#parser myname" in their grammar file */\r
-/*extern struct pccts_parser zzparser;*/\r
-\r
-extern char *zztokens[];\r
-#ifdef LL_K\r
-extern int zztokenLA[];\r
-extern zzchar_t zztextLA[][ZZLEXBUFSIZE];\r
-extern int zzlap;\r
-extern int zzlabase;\r
-#else\r
-extern int zztoken;\r
-#endif\r
-\r
-extern char zzStackOvfMsg[];\r
-extern int zzasp;\r
-extern Attrib zzaStack[];\r
-#ifdef ZZINF_LOOK\r
-extern int *zzinf_tokens;\r
-extern char **zzinf_text;\r
-extern char *zzinf_text_buffer;\r
-extern int *zzinf_line;\r
-extern int zzinf_labase;\r
-extern int zzinf_last;\r
-#endif\r
-#ifdef DEMAND_LOOK\r
-extern int zzdirty;\r
-#endif\r
-#ifdef ZZCAN_GUESS\r
-extern int zzguessing;\r
-extern zzjmp_buf zzguess_start;\r
-#endif\r
-\r
-/* Define global veriables that refer to values exported by the scanner.\r
- * These declarations duplicate those in dlgdef.h, but are needed\r
- * if ANTLR is not to generate a .dlg file (-gx); PS, this is a hack.\r
- */\r
-extern zzchar_t *zzlextext; /* text of most recently matched token */\r
-extern int zzbufsize; /* how long zzlextext is */\r
-\r
-#endif\r