1 #ifndef VHDLPARSERTOKENMANAGER_H 2 #define VHDLPARSERTOKENMANAGER_H 3 #include "stdio.h" 4 #include "JavaCC.h" 5 #include "CharStream.h" 6 #include "Token.h" 7 #include "ErrorHandler.h" 8 #include "TokenManager.h" 9 #include "VhdlParserConstants.h" 10 #include "vhdlstring.h" 11 12 13 namespace vhdl { 14 namespace parser { 15 class VhdlParser; 16 17 /** Token Manager. */ 18 class VhdlParserTokenManager : public TokenManager, public TokenParser { 19 public: 20 21 FILE *debugStream; 22 void setDebugStream(FILE *ds); 23 int jjStopAtPos(int pos, int kind); 24 int jjMoveStringLiteralDfa0_0(); 25 int jjMoveStringLiteralDfa1_0(unsigned long long active0, unsigned long long active1, unsigned long long active2); 26 int jjMoveStringLiteralDfa2_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1, unsigned long long old2, unsigned long long active2); 27 int jjMoveStringLiteralDfa3_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1, unsigned long long old2, unsigned long long active2); 28 int jjMoveStringLiteralDfa4_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 29 int jjMoveStringLiteralDfa5_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 30 int jjMoveStringLiteralDfa6_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 31 int jjMoveStringLiteralDfa7_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 32 int jjMoveStringLiteralDfa8_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 33 int jjMoveStringLiteralDfa9_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 34 int jjMoveStringLiteralDfa10_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 35 int jjMoveStringLiteralDfa11_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 36 int jjMoveStringLiteralDfa12_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 37 int jjMoveStringLiteralDfa13_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 38 int jjMoveStringLiteralDfa14_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 39 int jjMoveStringLiteralDfa15_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 40 int jjMoveStringLiteralDfa16_0(unsigned long long old0, unsigned long long active0, unsigned long long old1, unsigned long long active1); 41 int jjMoveStringLiteralDfa17_0(unsigned long long old1, unsigned long long active1); 42 int jjMoveNfa_0(int startState, int curPos); 43 bool jjCanMove_0(int hiByte, int i1, int i2, unsigned long long l1, unsigned long long l2); 44 bool jjCanMove_1(int hiByte, int i1, int i2, unsigned long long l1, unsigned long long l2); 45 Token * jjFillToken(); 46 47 public: 48 int curLexState; 49 int jjnewStateCnt; 50 int jjround; 51 int jjmatchedPos; 52 int jjmatchedKind; 53 54 Token * getNextToken(); 55 void SkipLexicalActions(Token *matchedToken); 56 void TokenLexicalActions(Token *matchedToken); 57 #define jjCheckNAdd(state)\ 58 {\ 59 if (jjrounds[state] != jjround)\ 60 {\ 61 jjstateSet[jjnewStateCnt++] = state;\ 62 jjrounds[state] = jjround;\ 63 }\ 64 } 65 #define jjAddStates(start, end)\ 66 {\ 67 for (int x = start; x <= end; x++) {\ 68 jjstateSet[jjnewStateCnt++] = jjnextStates[x];\ 69 } /*while (start++ != end);*/\ 70 } 71 #define jjCheckNAddTwoStates(state1, state2)\ 72 {\ 73 jjCheckNAdd(state1);\ 74 jjCheckNAdd(state2);\ 75 } 76 77 #define jjCheckNAddStates(start, end)\ 78 {\ 79 for (int x = start; x <= end; x++) {\ 80 jjCheckNAdd(jjnextStates[x]);\ 81 } /*while (start++ != end);*/\ 82 } 83 84 #ifndef JAVACC_CHARSTREAM 85 #define JAVACC_CHARSTREAM CharStream 86 #endif 87 88 private: 89 void ReInitRounds(); 90 91 public: 92 VhdlParserTokenManager(JAVACC_CHARSTREAM *stream, int lexState = 0); 93 virtual ~VhdlParserTokenManager(); 94 void ReInit(JAVACC_CHARSTREAM *stream, int lexState = 0); 95 void SwitchTo(int lexState); 96 void clear(); 97 const JJSimpleString jjKindsForBitVector(int i, unsigned long long vec); 98 const JJSimpleString jjKindsForStateVector(int lexState, int vec[], int start, int end); 99 100 JAVACC_CHARSTREAM* input_stream; 101 int jjrounds[87]; 102 int jjstateSet[2 * 87]; 103 JJString jjimage; 104 JJString image; 105 int jjimageLen; 106 int lengthOfMatch; 107 JJChar curChar; 108 TokenManagerErrorHandler* errorHandler = nullptr; 109 110 public: setErrorHandler(TokenManagerErrorHandler * eh)111 void setErrorHandler(TokenManagerErrorHandler *eh) { 112 if (errorHandler) delete errorHandler, errorHandler = nullptr; 113 errorHandler = eh; 114 } 115 116 }; 117 } 118 } 119 #endif 120