]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Tools/Source/TianoTools/Pccts/h/AParser.h
Restructuring for better separation of Tool packages.
[mirror_edk2.git] / Tools / Source / TianoTools / Pccts / h / AParser.h
diff --git a/Tools/Source/TianoTools/Pccts/h/AParser.h b/Tools/Source/TianoTools/Pccts/h/AParser.h
deleted file mode 100644 (file)
index fe405f4..0000000
+++ /dev/null
@@ -1,376 +0,0 @@
-/* ANTLRParser.h\r
- *\r
- * Define the generic ANTLRParser superclass, which is subclassed to\r
- * define an actual parser.\r
- *\r
- * Before entry into this file: ANTLRTokenType must be set.\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 APARSER_H_GATE\r
-#define APARSER_H_GATE\r
-\r
-#include "pcctscfg.h"\r
-\r
-#include "pccts_stdio.h"\r
-#include "pccts_setjmp.h"\r
-\r
-PCCTS_NAMESPACE_STD\r
-\r
-#include ATOKEN_H\r
-#include ATOKENBUFFER_H\r
-\r
-#ifdef ZZCAN_GUESS\r
-#ifndef ZZINF_LOOK\r
-#define ZZINF_LOOK\r
-#endif\r
-#endif\r
-\r
-\r
-#define NLA                    (token_type[lap&(LLk-1)])/* --> next LA */\r
-\r
-typedef unsigned char SetWordType;\r
-\r
-/* Define external bit set stuff (for SetWordType) */\r
-#define EXT_WORDSIZE   (sizeof(char)*8)\r
-#define EXT_LOGWORDSIZE        3\r
-\r
-           /* s y n t a c t i c  p r e d i c a t e  s t u f f */\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
-/* MR14 Add zzUSER_GUESS_FAIL_HOOK and related code */\r
-\r
-#define zzUSER_GUESS_FAIL_HOOK_INTERNAL zzUSER_GUESS_FAIL_HOOK(SeqFrozen)\r
-#ifndef zzUSER_GUESS_FAIL_HOOK\r
-#define zzUSER_GUESS_FAIL_HOOK(zzGuessSeq)\r
-#endif\r
-\r
-\r
-typedef struct _zzjmp_buf {\r
-                       jmp_buf state;\r
-               } zzjmp_buf;\r
-\r
-/* these need to be macros not member functions */\r
-#define zzGUESS_BLOCK          ANTLRParserState zzst; int zzrv; int _marker; int zzGuessSeqFrozen;\r
-#define zzNON_GUESS_MODE       if ( !guessing )\r
-#define zzGUESS_FAIL           guess_fail();\r
-\r
-/*  Note:  zzGUESS_DONE does not execute longjmp() */\r
-\r
-#define zzGUESS_DONE           {zzrv=1; inputTokens->rewind(_marker); guess_done(&zzst);zzUSER_GUESS_DONE_HOOK(zzGuessSeqFrozen) }\r
-#define zzGUESS                                saveState(&zzst); \\r
-                                                       guessing = 1; \\r
-                            zzGuessSeqFrozen = ++zzGuessSeq; \\r
-                                                       _marker = inputTokens->mark(); \\r
-                                                       zzrv = setjmp(guess_start.state); \\r
-                            zzUSER_GUESS_HOOK(zzGuessSeqFrozen,zzrv) \\r
-                                                   if ( zzrv ) zzGUESS_DONE\r
-\r
-#define zzTRACEdata     const ANTLRChar *zzTracePrevRuleName = NULL;\r
-\r
-#ifndef zzTRACEIN\r
-#define zzTRACEIN(r)   zzTracePrevRuleName=traceCurrentRuleName;tracein(r);\r
-#endif\r
-#ifndef zzTRACEOUT\r
-#define zzTRACEOUT(r)  traceout(r);traceCurrentRuleName=zzTracePrevRuleName;\r
-#endif\r
-\r
-                  /* a n t l r  p a r s e r  d e f */\r
-\r
-struct ANTLRParserState {\r
-       /* class variables */\r
-       zzjmp_buf guess_start;\r
-       int guessing;\r
-\r
-       int inf_labase;\r
-       int inf_last;\r
-\r
-       int dirty;\r
-\r
-    int             traceOptionValue;       // MR10\r
-    int             traceGuessOptionValue;  // MR10\r
-    const ANTLRChar *traceCurrentRuleName;  // MR10\r
-    int             traceDepth;             // MR10\r
-\r
-};\r
-\r
-/* notes:\r
- *\r
- * multiple inheritance is a cool way to include what stuff is needed\r
- * in this structure (like guess stuff).  however, i'm not convinced that\r
- * multiple inheritance works correctly on all platforms.  not that\r
- * much space is used--just include all possibly useful members.\r
- *\r
- * the class should also be a template with arguments for the lookahead\r
- * depth and so on.  that way, more than one parser can be defined (as\r
- * each will probably have different lookahead requirements).  however,\r
- * am i sure that templates work?  no, i'm not sure.\r
- *\r
- * no attributes are maintained and, hence, the 'asp' variable is not\r
- * needed.  $i can still be referenced, but it refers to the token\r
- * associated with that rule element.  question: where are the token's\r
- * stored if not on the software stack?  in local variables created\r
- * and assigned to by antlr.\r
- */\r
-class ANTLRParser {\r
-protected:\r
-       /* class variables */\r
-       static SetWordType bitmask[sizeof(SetWordType)*8];\r
-       static char eMsgBuffer[500];\r
-\r
-protected:\r
-       int LLk;                                        // number of lookahead symbols (old LL_K)\r
-       int demand_look;\r
-       ANTLRTokenType eofToken;                        // when do I stop during resynch()s\r
-       int bsetsize;                                   // size of bitsets created by ANTLR in\r
-                                                                       // units of SetWordType\r
-\r
-       ANTLRTokenBuffer *inputTokens;  //place to get input tokens\r
-\r
-       zzjmp_buf guess_start;          // where to jump back to upon failure\r
-       int guessing;                           // if guessing (using (...)? predicate)\r
-\r
-       // infinite lookahead stuff\r
-       int can_use_inf_look;           // set by subclass (generated by ANTLR)\r
-       int inf_lap;\r
-       int inf_labase;\r
-       int inf_last;\r
-       int *_inf_line;\r
-\r
-       const ANTLRChar **token_tbl; // pointer to table of token type strings MR20 const\r
-\r
-       int dirty;                                      // used during demand lookahead\r
-\r
-       ANTLRTokenType *token_type;             // fast reference cache of token.getType()\r
-//     ANTLRLightweightToken **token;  // the token with all its attributes\r
-       int lap;\r
-       int labase;\r
-#ifdef ZZDEFER_FETCH\r
-       int stillToFetch;                               // MR19 V.H. Simonis\r
-#endif\r
-\r
-private:\r
-       void fill_inf_look();\r
-\r
-protected:\r
-       virtual void guess_fail() {                         // MR9 27-Sep-97 make virtual\r
-        traceGuessFail();                               // MR10\r
-        longjmp(guess_start.state, 1); }                // MR9\r
-       virtual void guess_done(ANTLRParserState *st) {     // MR9 27-Sep-97 make virtual\r
-         restoreState(st); }                            // MR9\r
-       virtual int guess(ANTLRParserState *);              // MR9 27-Sep-97 make virtual\r
-       void look(int);\r
-    int _match(ANTLRTokenType, ANTLRChar **, ANTLRTokenType *,\r
-                          _ANTLRTokenPtr *, SetWordType **);\r
-    int _setmatch(SetWordType *, ANTLRChar **, ANTLRTokenType *,\r
-                          _ANTLRTokenPtr *, SetWordType **,\r
-                          SetWordType * tokclassErrset /* MR23 */);\r
-    int _match_wsig(ANTLRTokenType);\r
-    int _setmatch_wsig(SetWordType *);\r
-    virtual void consume();\r
-    virtual void resynch(SetWordType *wd,SetWordType mask); // MR21\r
-       void prime_lookahead();\r
-       virtual void tracein(const ANTLRChar *r);              // MR10\r
-       virtual void traceout(const ANTLRChar *r);             // MR10\r
-       static unsigned MODWORD(unsigned x) {return x & (EXT_WORDSIZE-1);}      // x % EXT_WORDSIZE // MR9\r
-       static unsigned DIVWORD(unsigned x) {return x >> EXT_LOGWORDSIZE;}      // x / EXT_WORDSIZE // MR9\r
-       int set_deg(SetWordType *);\r
-       int set_el(ANTLRTokenType, SetWordType *);\r
-       virtual void edecode(SetWordType *);                            // MR1\r
-       virtual void FAIL(int k, ...);                                      // MR1\r
-    int                 traceOptionValue;                           // MR10\r
-    int                 traceGuessOptionValue;                      // MR10\r
-    const ANTLRChar     *traceCurrentRuleName;                      // MR10\r
-    int                 traceDepth;                                 // MR10\r
-    void                traceReset();                               // MR10\r
-    virtual void        traceGuessFail();                           // MR10\r
-    virtual void        traceGuessDone(const ANTLRParserState *);   // MR10\r
-    int                 zzGuessSeq;                                 // MR10\r
-\r
-public:\r
-       ANTLRParser(ANTLRTokenBuffer *,\r
-                               int k=1,\r
-                               int use_inf_look=0,\r
-                               int demand_look=0,\r
-                               int bsetsize=1);\r
-       virtual ~ANTLRParser();\r
-\r
-       virtual void init();\r
-       \r
-       ANTLRTokenType LA(int i)\r
-       {\r
-//\r
-//  MR14 demand look will always be 0 for C++ mode\r
-//\r
-////   return demand_look ? token_type[(labase+(i)-1)&(LLk-1)] :\r
-////                                           token_type[(lap+(i)-1)&(LLk-1)];\r
-\r
-// MR19 V.H. Simonis Defer fetch feature\r
-\r
-#ifdef ZZDEFER_FETCH\r
-      undeferFetch();\r
-#endif\r
-         return token_type[(lap+(i)-1)&(LLk-1)];\r
-       }\r
-       _ANTLRTokenPtr LT(int i);\r
-\r
-       void setEofToken(ANTLRTokenType t)      { eofToken = t; }\r
-       ANTLRTokenType getEofToken() const  { return eofToken; }    // MR14\r
-\r
-       void noGarbageCollectTokens()   { inputTokens->noGarbageCollectTokens(); }\r
-       void garbageCollectTokens()             { inputTokens->garbageCollectTokens(); }\r
-\r
-    virtual void syn(_ANTLRTokenPtr tok, ANTLRChar *egroup,\r
-                                        SetWordType *eset, ANTLRTokenType etok, int k);\r
-       virtual void saveState(ANTLRParserState *);     // MR9 27-Sep-97 make virtual\r
-       virtual void restoreState(ANTLRParserState *);  // MR9 27-Sep-97 make virtual\r
-\r
-       virtual void panic(const char *msg); // MR20 const\r
-\r
-       static char *eMsgd(char *,int);\r
-       static char *eMsg(char *,char *);\r
-       static char *eMsg2(char *,char *,char *);\r
-\r
-       virtual int printMessage(FILE* pFile, const char* pFormat, ...); // MR23\r
-       virtual int printMessageV(FILE* pFile, const char* pFormat, va_list arglist); // MR23\r
-\r
-       void consumeUntil(SetWordType *st);\r
-       void consumeUntilToken(int t);\r
-\r
-       virtual int _setmatch_wdfltsig(SetWordType *tokensWanted,\r
-                                        ANTLRTokenType tokenTypeOfSet,\r
-                                        SetWordType *whatFollows);\r
-       virtual int _match_wdfltsig(ANTLRTokenType tokenWanted,\r
-                                        SetWordType *whatFollows);\r
-       \r
-       const ANTLRChar * parserTokenName(int tok);                     // MR1\r
-\r
-    int                 traceOptionValueDefault;        // MR11\r
-    int                 traceOption(int delta);         // MR11\r
-    int                 traceGuessOption(int delta);    // MR11\r
-\r
-//  MR8  5-Aug-97   S.Bochnak@microtool.com.pl\r
-//  MR8             Move resynch static local variable\r
-//  MR8               to class instance\r
-\r
-    int                 syntaxErrCount;                      // MR12\r
-    ANTLRTokenStream   *getLexer() const {                   // MR12\r
-      return inputTokens ? inputTokens->getLexer() : 0; }    // MR12\r
-protected:                                              // MR8\r
-    int     resynchConsumed;                            // MR8\r
-    char    *zzFAILtext; // workarea required by zzFAIL // MR9\r
-    void    undeferFetch();                             // MR19 V.H. Simonis\r
-    int     isDeferFetchEnabled();                      // MR19 V.H. Simonis\r
-    virtual void failedSemanticPredicate(const char* predicate); /* MR23 */\r
-};\r
-\r
-#define zzmatch(_t)                                                    \\r
-       if ( !_match((ANTLRTokenType)_t, &zzMissText, &zzMissTok, \\r
-                                (_ANTLRTokenPtr *) &zzBadTok, &zzMissSet) ) goto fail;\r
-\r
-#define zzmatch_wsig(_t,handler)                                               \\r
-       if ( !_match_wsig((ANTLRTokenType)_t) ) if ( guessing ) zzGUESS_FAIL else {_signal=MismatchedToken; goto handler;}\r
-\r
-#define zzsetmatch(_ts,_tokclassErrset)                                                        \\r
-       if ( !_setmatch(_ts, &zzMissText, &zzMissTok, \\r
-                                (_ANTLRTokenPtr *) &zzBadTok, &zzMissSet, _tokclassErrset) ) goto fail;\r
-\r
-#define zzsetmatch_wsig(_ts, handler)                          \\r
-       if ( !_setmatch_wsig(_ts) ) if ( guessing ) zzGUESS_FAIL else {_signal=MismatchedToken; goto handler;}\r
-\r
-/* For the dflt signal matchers, a FALSE indicates that an error occurred\r
- * just like the other matchers, but in this case, the routine has already\r
- * recovered--we do NOT want to consume another token.  However, when\r
- * the match was successful, we do want to consume hence _signal=0 so that\r
- * a token is consumed by the "if (!_signal) consume(); _signal=NoSignal;"\r
- * preamble.\r
- */\r
-#define zzsetmatch_wdfltsig(tokensWanted, tokenTypeOfSet, whatFollows) \\r
-       if ( !_setmatch_wdfltsig(tokensWanted, tokenTypeOfSet, whatFollows) ) \\r
-               _signal = MismatchedToken;\r
-\r
-#define zzmatch_wdfltsig(tokenWanted, whatFollows) \\r
-       if ( !_match_wdfltsig(tokenWanted, whatFollows) ) _signal = MismatchedToken;\r
-\r
-\r
-//  MR1  10-Apr-97     zzfailed_pred() macro does not backtrack in guess mode.\r
-//  MR1                            Identification and correction due to J. Lilley\r
-//\r
-//  MR23            Call virtual method to report error.\r
-//  MR23            Provide more control over failed predicate action\r
-//                  without any need for user to worry about guessing internals.\r
-\r
-#ifndef zzfailed_pred\r
-#define zzfailed_pred(_p,_hasuseraction,_useraction) \\r
-  if (guessing) { \\r
-    zzGUESS_FAIL; \\r
-  } else { \\r
-    zzfailed_pred_action(_p,_hasuseraction,_useraction) \\r
-  }\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
-#ifndef zzfailed_pred_action\r
-#define zzfailed_pred_action(_p,_hasuseraction,_useraction) \\r
-    if (_hasuseraction) { _useraction } else { failedSemanticPredicate(_p); }\r
-#endif\r
-\r
-#define zzRULE \\r
-               SetWordType *zzMissSet=NULL; ANTLRTokenType zzMissTok=(ANTLRTokenType)0;        \\r
-               _ANTLRTokenPtr zzBadTok=NULL; ANTLRChar *zzBadText=(ANTLRChar *)"";     \\r
-               int zzErrk=1,zzpf=0; \\r
-        zzTRACEdata \\r
-               ANTLRChar *zzMissText=(ANTLRChar *)"";\r
-\r
-#endif\r
-\r
-        /* S t a n d a r d  E x c e p t i o n  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 "SetSignal"                                */\r
-\r
-#define Unwind              4\r
-#define setSignal(newValue) *_retsignal=_signal=(newValue)\r
-#define suppressSignal       *_retsignal=_signal=0\r
-#define exportSignal        *_retsignal=_signal\r