]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Other/Maintained/Tools/Pccts/h/antlr.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Other / Maintained / Tools / Pccts / h / antlr.h
diff --git a/EdkCompatibilityPkg/Other/Maintained/Tools/Pccts/h/antlr.h b/EdkCompatibilityPkg/Other/Maintained/Tools/Pccts/h/antlr.h
new file mode 100644 (file)
index 0000000..01bda69
--- /dev/null
@@ -0,0 +1,788 @@
+/* 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-1998\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) \\r
+  if (zzguessing) { \\r
+    zzGUESS_FAIL; \\r
+  } else { \\r
+    fprintf(stderr, "semantic error; failed predicate: '%s'\n",_p); \\r
+  }\r
+#else\r
+#define zzfailed_pred(_p)  \\r
+  fprintf(stderr, "semantic error; failed predicate: '%s'\n",_p)\r
+#endif\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)            \\r
+  if ( !_zzsetmatch(_es, &zzBadText, &zzMissText, &zzMissTok, &zzBadTok, &zzMissSet) ) goto fail;\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 **);\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
+        /* 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
+extern void zzFAIL(int k, ...);\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 zzFAIL();\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