forked from OSchip/llvm-project
MIR Parser: Reuse the function 'lexName' when lexing global value tokens. NFC.
This commit refactors the function 'maybeLexGlobalValue' so that now it reuses the function 'lexName' when lexing a named global value token. llvm-svn: 242837
This commit is contained in:
parent
2bf2cadc00
commit
c1fbb3540a
|
@ -240,37 +240,6 @@ static Cursor maybeLexRegister(Cursor C, MIToken &Token) {
|
|||
return C;
|
||||
}
|
||||
|
||||
static Cursor maybeLexGlobalValue(
|
||||
Cursor C, MIToken &Token,
|
||||
function_ref<void(StringRef::iterator Loc, const Twine &)> ErrorCallback) {
|
||||
if (C.peek() != '@')
|
||||
return None;
|
||||
auto Range = C;
|
||||
C.advance(); // Skip the '@'
|
||||
if (C.peek() == '"') {
|
||||
if (Cursor R = lexStringConstant(C, ErrorCallback)) {
|
||||
Token = MIToken(MIToken::QuotedNamedGlobalValue, Range.upto(R),
|
||||
/*StringOffset=*/1); // Drop the '@'
|
||||
return R;
|
||||
}
|
||||
Token = MIToken(MIToken::Error, Range.remaining());
|
||||
return Range;
|
||||
}
|
||||
if (!isdigit(C.peek())) {
|
||||
while (isIdentifierChar(C.peek()))
|
||||
C.advance();
|
||||
Token = MIToken(MIToken::NamedGlobalValue, Range.upto(C),
|
||||
/*StringOffset=*/1); // Drop the '@'
|
||||
return C;
|
||||
}
|
||||
auto NumberRange = C;
|
||||
while (isdigit(C.peek()))
|
||||
C.advance();
|
||||
Token =
|
||||
MIToken(MIToken::GlobalValue, Range.upto(C), APSInt(NumberRange.upto(C)));
|
||||
return C;
|
||||
}
|
||||
|
||||
static Cursor lexName(
|
||||
Cursor C, MIToken &Token, MIToken::TokenKind Type,
|
||||
MIToken::TokenKind QuotedType, unsigned PrefixLength,
|
||||
|
@ -291,6 +260,25 @@ static Cursor lexName(
|
|||
return C;
|
||||
}
|
||||
|
||||
static Cursor maybeLexGlobalValue(
|
||||
Cursor C, MIToken &Token,
|
||||
function_ref<void(StringRef::iterator Loc, const Twine &)> ErrorCallback) {
|
||||
if (C.peek() != '@')
|
||||
return None;
|
||||
if (!isdigit(C.peek(1)))
|
||||
return lexName(C, Token, MIToken::NamedGlobalValue,
|
||||
MIToken::QuotedNamedGlobalValue, /*PrefixLength=*/1,
|
||||
ErrorCallback);
|
||||
auto Range = C;
|
||||
C.advance(1); // Skip the '@'
|
||||
auto NumberRange = C;
|
||||
while (isdigit(C.peek()))
|
||||
C.advance();
|
||||
Token =
|
||||
MIToken(MIToken::GlobalValue, Range.upto(C), APSInt(NumberRange.upto(C)));
|
||||
return C;
|
||||
}
|
||||
|
||||
static Cursor maybeLexExternalSymbol(
|
||||
Cursor C, MIToken &Token,
|
||||
function_ref<void(StringRef::iterator Loc, const Twine &)> ErrorCallback) {
|
||||
|
|
Loading…
Reference in New Issue