diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:19:15 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:19:15 +0000 |
commit | d93e1dfac8711cfed1a9d9cd1876a788b83945cd (patch) | |
tree | 5896fa6c02a262a6148b215487e545d937de58b7 /ELF/ScriptParser.h | |
parent | 8d43286d630f9224de07809ea253e83ebb9cdee6 (diff) |
Notes
Diffstat (limited to 'ELF/ScriptParser.h')
-rw-r--r-- | ELF/ScriptParser.h | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/ELF/ScriptParser.h b/ELF/ScriptParser.h index 20735f78da81..264c49792337 100644 --- a/ELF/ScriptParser.h +++ b/ELF/ScriptParser.h @@ -12,6 +12,7 @@ #include "lld/Core/LLVM.h" #include "llvm/ADT/StringRef.h" +#include "llvm/Support/MemoryBuffer.h" #include <utility> #include <vector> @@ -20,27 +21,30 @@ namespace elf { class ScriptParserBase { public: - explicit ScriptParserBase(StringRef S) : Input(S), Tokens(tokenize(S)) {} - explicit ScriptParserBase(std::vector<StringRef> Tokens) - : Input(""), Tokens(std::move(Tokens)) {} + explicit ScriptParserBase(MemoryBufferRef MB); -protected: void setError(const Twine &Msg); - static std::vector<StringRef> tokenize(StringRef S); + void tokenize(MemoryBufferRef MB); static StringRef skipSpace(StringRef S); bool atEOF(); StringRef next(); StringRef peek(); - bool skip(StringRef Tok); + void skip(); + bool consume(StringRef Tok); void expect(StringRef Expect); + std::string getCurrentLocation(); - size_t getPos(); - void printErrorPos(); - - StringRef Input; + std::vector<MemoryBufferRef> MBs; std::vector<StringRef> Tokens; size_t Pos = 0; bool Error = false; + +private: + StringRef getLine(); + size_t getLineNumber(); + size_t getColumnNumber(); + + MemoryBufferRef getCurrentMB(); }; } // namespace elf |