D35945 introduces change when there is useless to check Error flag in few places, but ErrorCount must be checked instead. But then we probably can just check ErrorCount always. That should simplify things. Patch do that. Differential revision: https://reviews.llvm.org/D36266 llvm-svn: 310046
56 lines
1.2 KiB
C++
56 lines
1.2 KiB
C++
//===- ScriptLexer.h --------------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Linker
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLD_ELF_SCRIPT_LEXER_H
|
|
#define LLD_ELF_SCRIPT_LEXER_H
|
|
|
|
#include "lld/Core/LLVM.h"
|
|
#include "llvm/ADT/StringRef.h"
|
|
#include "llvm/Support/MemoryBuffer.h"
|
|
#include <utility>
|
|
#include <vector>
|
|
|
|
namespace lld {
|
|
namespace elf {
|
|
|
|
class ScriptLexer {
|
|
public:
|
|
explicit ScriptLexer(MemoryBufferRef MB);
|
|
|
|
void setError(const Twine &Msg);
|
|
void tokenize(MemoryBufferRef MB);
|
|
static StringRef skipSpace(StringRef S);
|
|
bool atEOF();
|
|
StringRef next();
|
|
StringRef peek();
|
|
void skip();
|
|
bool consume(StringRef Tok);
|
|
void expect(StringRef Expect);
|
|
bool consumeLabel(StringRef Tok);
|
|
std::string getCurrentLocation();
|
|
|
|
std::vector<MemoryBufferRef> MBs;
|
|
std::vector<StringRef> Tokens;
|
|
bool InExpr = false;
|
|
size_t Pos = 0;
|
|
|
|
private:
|
|
void maybeSplitExpr();
|
|
StringRef getLine();
|
|
size_t getLineNumber();
|
|
size_t getColumnNumber();
|
|
|
|
MemoryBufferRef getCurrentMB();
|
|
};
|
|
|
|
} // namespace elf
|
|
} // namespace lld
|
|
|
|
#endif
|