This allows for parsing strings that have escape sequences, which require constructing
a string (as they can't be represented by looking at the Token contents directly).
Differential Revision: https://reviews.llvm.org/D108589
virtual ParseResult parseOptionalEqual() = 0;
/// Parse a quoted string token.
- ParseResult parseString(StringRef *string) {
+ ParseResult parseString(std::string *string) {
auto loc = getCurrentLocation();
if (parseOptionalString(string))
return emitError(loc, "expected string");
}
/// Parse a quoted string token if present.
- virtual ParseResult parseOptionalString(StringRef *string) = 0;
+ virtual ParseResult parseOptionalString(std::string *string) = 0;
/// Parse a given keyword.
ParseResult parseKeyword(StringRef keyword, const Twine &msg = "") {
return {};
Type type = nullptr;
- StringRef identifier;
+ std::string identifier;
llvm::SMLoc idLoc = parser.getCurrentLocation();
OptionalParseResult parsedType = parser.parseOptionalType(type);
if (parsedType.hasValue() && failed(parsedType.getValue()))
DialectAsmParser &parser, Type type) {
if (parser.parseLess())
return Attribute();
- StringRef value;
+ std::string value;
llvm::SMLoc loc = parser.getCurrentLocation();
if (parser.parseOptionalString(&value)) {
parser.emitError(loc) << "expected string";
Type emitc::OpaqueType::parse(MLIRContext *context, DialectAsmParser &parser) {
if (parser.parseLess())
return Type();
- StringRef value;
+ std::string value;
llvm::SMLoc loc = parser.getCurrentLocation();
if (parser.parseOptionalString(&value) || value.empty()) {
parser.emitError(loc) << "expected non empty string";
return nullptr;
// Parse operand.
- StringRef operand;
+ std::string operand;
if (failed(parser.parseOptionalString(&operand)))
return nullptr;
// If we are parsing a self-reference to a recursive struct, i.e. the parsing
// stack already contains a struct with the same identifier, bail out after
// the name.
- StringRef name;
+ std::string name;
bool isIdentified = succeeded(parser.parseOptionalString(&name));
if (isIdentified) {
if (knownStructNames.count(name)) {
}
/// Parses a quoted string token if present.
- ParseResult parseOptionalString(StringRef *string) override {
+ ParseResult parseOptionalString(std::string *string) override {
if (!parser.getToken().is(Token::string))
return failure();
if (string)
- *string = parser.getTokenSpelling().drop_front().drop_back();
+ *string = parser.getToken().getStringValue();
parser.consumeToken();
return success();
}