| OLD | NEW |
| 1 //===- TGLexer.h - Lexer for TableGen Files ---------------------*- C++ -*-===// | 1 //===- TGLexer.h - Lexer for TableGen Files ---------------------*- C++ -*-===// |
| 2 // | 2 // |
| 3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // This class represents the Lexer for tablegen files. | 10 // This class represents the Lexer for tablegen files. |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 const char *TokStart; | 67 const char *TokStart; |
| 68 tgtok::TokKind CurCode; | 68 tgtok::TokKind CurCode; |
| 69 std::string CurStrVal; // This is valid for ID, STRVAL, VARNAME, CODEFRAGMENT | 69 std::string CurStrVal; // This is valid for ID, STRVAL, VARNAME, CODEFRAGMENT |
| 70 int64_t CurIntVal; // This is valid for INTVAL. | 70 int64_t CurIntVal; // This is valid for INTVAL. |
| 71 | 71 |
| 72 /// CurBuffer - This is the current buffer index we're lexing from as managed | 72 /// CurBuffer - This is the current buffer index we're lexing from as managed |
| 73 /// by the SourceMgr object. | 73 /// by the SourceMgr object. |
| 74 int CurBuffer; | 74 int CurBuffer; |
| 75 /// Dependencies - This is the list of all included files. | 75 /// Dependencies - This is the list of all included files. |
| 76 std::vector<std::string> Dependencies; | 76 std::vector<std::string> Dependencies; |
| 77 | 77 |
| 78 /// PreProcDefines - This holds a list of TableGen defines (similar in |
| 79 /// spirit to C pre-processor defines). |
| 80 std::vector<std::string> PreProcDefines; |
| 81 |
| 78 public: | 82 public: |
| 79 TGLexer(SourceMgr &SrcMgr); | 83 TGLexer(SourceMgr &SrcMgr, std::vector<std::string> PreProcDefines); |
| 80 ~TGLexer() {} | 84 ~TGLexer() {} |
| 81 | 85 |
| 82 tgtok::TokKind Lex() { | 86 tgtok::TokKind Lex() { |
| 83 return CurCode = LexToken(); | 87 return CurCode = LexToken(); |
| 84 } | 88 } |
| 85 | 89 |
| 86 const std::vector<std::string> &getDependencies() const { | 90 const std::vector<std::string> &getDependencies() const { |
| 87 return Dependencies; | 91 return Dependencies; |
| 88 } | 92 } |
| 89 | 93 |
| 90 tgtok::TokKind getCode() const { return CurCode; } | 94 tgtok::TokKind getCode() const { return CurCode; } |
| 91 | 95 |
| 92 const std::string &getCurStrVal() const { | 96 const std::string &getCurStrVal() const { |
| 93 assert((CurCode == tgtok::Id || CurCode == tgtok::StrVal || | 97 assert((CurCode == tgtok::Id || CurCode == tgtok::StrVal || |
| 94 CurCode == tgtok::VarName || CurCode == tgtok::CodeFragment) && | 98 CurCode == tgtok::VarName || CurCode == tgtok::CodeFragment) && |
| 95 "This token doesn't have a string value"); | 99 "This token doesn't have a string value"); |
| 96 return CurStrVal; | 100 return CurStrVal; |
| 97 } | 101 } |
| 98 int64_t getCurIntVal() const { | 102 int64_t getCurIntVal() const { |
| 99 assert(CurCode == tgtok::IntVal && "This token isn't an integer"); | 103 assert(CurCode == tgtok::IntVal && "This token isn't an integer"); |
| 100 return CurIntVal; | 104 return CurIntVal; |
| 101 } | 105 } |
| 102 | 106 |
| 103 SMLoc getLoc() const; | 107 SMLoc getLoc() const; |
| 104 | 108 |
| 109 bool hasPreProcDefine(const std::string &Symbol) const; |
| 110 |
| 105 private: | 111 private: |
| 106 /// LexToken - Read the next token and return its code. | 112 /// LexToken - Read the next token and return its code. |
| 107 tgtok::TokKind LexToken(); | 113 tgtok::TokKind LexToken(); |
| 108 | 114 |
| 109 tgtok::TokKind ReturnError(const char *Loc, const Twine &Msg); | 115 tgtok::TokKind ReturnError(const char *Loc, const Twine &Msg); |
| 110 | 116 |
| 111 int getNextChar(); | 117 int getNextChar(); |
| 112 void SkipBCPLComment(); | 118 void SkipBCPLComment(); |
| 113 bool SkipCComment(); | 119 bool SkipCComment(); |
| 114 tgtok::TokKind LexIdentifier(); | 120 tgtok::TokKind LexIdentifier(); |
| 115 bool LexInclude(); | 121 bool LexInclude(); |
| 122 bool LexIncludeIf(); |
| 123 bool AddIncludeFile(const std::string &Filename); |
| 116 tgtok::TokKind LexString(); | 124 tgtok::TokKind LexString(); |
| 117 tgtok::TokKind LexVarName(); | 125 tgtok::TokKind LexVarName(); |
| 118 tgtok::TokKind LexNumber(); | 126 tgtok::TokKind LexNumber(); |
| 119 tgtok::TokKind LexBracket(); | 127 tgtok::TokKind LexBracket(); |
| 120 tgtok::TokKind LexExclaim(); | 128 tgtok::TokKind LexExclaim(); |
| 121 }; | 129 }; |
| 122 | 130 |
| 123 } // end namespace llvm | 131 } // end namespace llvm |
| 124 | 132 |
| 125 #endif | 133 #endif |
| OLD | NEW |