summaryrefslogtreecommitdiff
path: root/ELF/ScriptParser.h
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-01-02 19:19:15 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-01-02 19:19:15 +0000
commitd93e1dfac8711cfed1a9d9cd1876a788b83945cd (patch)
tree5896fa6c02a262a6148b215487e545d937de58b7 /ELF/ScriptParser.h
parent8d43286d630f9224de07809ea253e83ebb9cdee6 (diff)
Notes
Diffstat (limited to 'ELF/ScriptParser.h')
-rw-r--r--ELF/ScriptParser.h24
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