reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
43 CurPtr = ptr; 45 CurPtr = CurBuf.begin(); 55 return AsmToken(AsmToken::Error, StringRef(Loc, CurPtr - Loc)); 59 if (CurPtr == CurBuf.end()) 61 return (unsigned char)*CurPtr++; 69 while (isDigit(*CurPtr)) 70 ++CurPtr; 72 if (*CurPtr == '-' || *CurPtr == '+') 72 if (*CurPtr == '-' || *CurPtr == '+') 73 return ReturnError(CurPtr, "Invalid sign in float literal"); 76 if ((*CurPtr == 'e' || *CurPtr == 'E')) { 76 if ((*CurPtr == 'e' || *CurPtr == 'E')) { 77 ++CurPtr; 79 if (*CurPtr == '-' || *CurPtr == '+') 79 if (*CurPtr == '-' || *CurPtr == '+') 80 ++CurPtr; 82 while (isDigit(*CurPtr)) 83 ++CurPtr; 87 StringRef(TokStart, CurPtr - TokStart)); 97 assert((*CurPtr == 'p' || *CurPtr == 'P' || *CurPtr == '.') && 97 assert((*CurPtr == 'p' || *CurPtr == 'P' || *CurPtr == '.') && 97 assert((*CurPtr == 'p' || *CurPtr == 'P' || *CurPtr == '.') && 102 if (*CurPtr == '.') { 103 ++CurPtr; 105 const char *FracStart = CurPtr; 106 while (isHexDigit(*CurPtr)) 107 ++CurPtr; 109 NoFracDigits = CurPtr == FracStart; 117 if (*CurPtr != 'p' && *CurPtr != 'P') 117 if (*CurPtr != 'p' && *CurPtr != 'P') 120 ++CurPtr; 122 if (*CurPtr == '+' || *CurPtr == '-') 122 if (*CurPtr == '+' || *CurPtr == '-') 123 ++CurPtr; 126 const char *ExpStart = CurPtr; 127 while (isDigit(*CurPtr)) 128 ++CurPtr; 130 if (CurPtr == ExpStart) 134 return AsmToken(AsmToken::Real, StringRef(TokStart, CurPtr - TokStart)); 145 if (CurPtr[-1] == '.' && isDigit(*CurPtr)) { 145 if (CurPtr[-1] == '.' && isDigit(*CurPtr)) { 147 while (isDigit(*CurPtr)) 148 ++CurPtr; 150 if (!IsIdentifierChar(*CurPtr, AllowAtInIdentifier) || 151 *CurPtr == 'e' || *CurPtr == 'E') 151 *CurPtr == 'e' || *CurPtr == 'E') 155 while (IsIdentifierChar(*CurPtr, AllowAtInIdentifier)) 156 ++CurPtr; 159 if (CurPtr == TokStart+1 && TokStart[0] == '.') 162 return AsmToken(AsmToken::Identifier, StringRef(TokStart, CurPtr - TokStart)); 168 switch (*CurPtr) { 173 ++CurPtr; 181 ++CurPtr; // skip the star. 182 const char *CommentTextStart = CurPtr; 183 while (CurPtr != CurBuf.end()) { 184 switch (*CurPtr++) { 187 if (*CurPtr != '/') 193 StringRef(CommentTextStart, CurPtr - 1 - CommentTextStart)); 195 ++CurPtr; // End the */. 197 StringRef(TokStart, CurPtr - TokStart)); 210 const char *CommentTextStart = CurPtr; 214 if (CurChar == '\r' && CurPtr != CurBuf.end() && *CurPtr == '\n') 214 if (CurChar == '\r' && CurPtr != CurBuf.end() && *CurPtr == '\n') 215 ++CurPtr; 221 StringRef(CommentTextStart, CurPtr - 1 - CommentTextStart)); 228 StringRef(TokStart, CurPtr - TokStart)); 232 StringRef(TokStart, CurPtr - 1 - TokStart)); 289 if (LexMasmIntegers && isdigit(CurPtr[-1])) { 290 const char *FirstNonBinary = (CurPtr[-1] != '0' && CurPtr[-1] != '1') ? 290 const char *FirstNonBinary = (CurPtr[-1] != '0' && CurPtr[-1] != '1') ? 291 CurPtr - 1 : nullptr; 292 const char *OldCurPtr = CurPtr; 293 while (isHexDigit(*CurPtr)) { 294 if (*CurPtr != '0' && *CurPtr != '1' && !FirstNonBinary) 294 if (*CurPtr != '0' && *CurPtr != '1' && !FirstNonBinary) 295 FirstNonBinary = CurPtr; 296 ++CurPtr; 300 if (*CurPtr == 'h' || *CurPtr == 'H') { 300 if (*CurPtr == 'h' || *CurPtr == 'H') { 302 ++CurPtr; 304 } else if (FirstNonBinary && FirstNonBinary + 1 == CurPtr && 309 StringRef Result(TokStart, CurPtr - TokStart); 317 SkipIgnoredIntegerSuffix(CurPtr); 323 CurPtr = OldCurPtr; 327 if (CurPtr[-1] != '0' || CurPtr[0] == '.') { 327 if (CurPtr[-1] != '0' || CurPtr[0] == '.') { 328 unsigned Radix = doHexLookAhead(CurPtr, 10, LexMasmIntegers); 331 if (!isHex && (*CurPtr == '.' || *CurPtr == 'e' || *CurPtr == 'E')) { 331 if (!isHex && (*CurPtr == '.' || *CurPtr == 'e' || *CurPtr == 'E')) { 331 if (!isHex && (*CurPtr == '.' || *CurPtr == 'e' || *CurPtr == 'E')) { 332 if (*CurPtr == '.') 333 ++CurPtr; 337 StringRef Result(TokStart, CurPtr - TokStart); 346 ++CurPtr; 350 SkipIgnoredIntegerSuffix(CurPtr); 355 if (!LexMasmIntegers && ((*CurPtr == 'b') || (*CurPtr == 'B'))) { 355 if (!LexMasmIntegers && ((*CurPtr == 'b') || (*CurPtr == 'B'))) { 356 ++CurPtr; 358 if (!isDigit(CurPtr[0])) { 359 --CurPtr; 360 StringRef Result(TokStart, CurPtr - TokStart); 363 const char *NumStart = CurPtr; 364 while (CurPtr[0] == '0' || CurPtr[0] == '1') 364 while (CurPtr[0] == '0' || CurPtr[0] == '1') 365 ++CurPtr; 368 if (CurPtr == NumStart) 371 StringRef Result(TokStart, CurPtr - TokStart); 379 SkipIgnoredIntegerSuffix(CurPtr); 384 if ((*CurPtr == 'x') || (*CurPtr == 'X')) { 384 if ((*CurPtr == 'x') || (*CurPtr == 'X')) { 385 ++CurPtr; 386 const char *NumStart = CurPtr; 387 while (isHexDigit(CurPtr[0])) 388 ++CurPtr; 392 if (CurPtr[0] == '.' || CurPtr[0] == 'p' || CurPtr[0] == 'P') 392 if (CurPtr[0] == '.' || CurPtr[0] == 'p' || CurPtr[0] == 'P') 392 if (CurPtr[0] == '.' || CurPtr[0] == 'p' || CurPtr[0] == 'P') 393 return LexHexFloatLiteral(NumStart == CurPtr); 396 if (CurPtr == NumStart) 397 return ReturnError(CurPtr-2, "invalid hexadecimal number"); 400 if (StringRef(TokStart, CurPtr - TokStart).getAsInteger(0, Result)) 404 if (LexMasmIntegers && (*CurPtr == 'h' || *CurPtr == 'H')) 404 if (LexMasmIntegers && (*CurPtr == 'h' || *CurPtr == 'H')) 405 ++CurPtr; 409 SkipIgnoredIntegerSuffix(CurPtr); 411 return intToken(StringRef(TokStart, CurPtr - TokStart), Result); 416 unsigned Radix = doHexLookAhead(CurPtr, 8, LexMasmIntegers); 418 StringRef Result(TokStart, CurPtr - TokStart); 425 ++CurPtr; 429 SkipIgnoredIntegerSuffix(CurPtr); 451 StringRef Res = StringRef(TokStart,CurPtr - TokStart); 485 return AsmToken(AsmToken::String, StringRef(TokStart, CurPtr - TokStart)); 489 TokStart = CurPtr; 491 while (!isAtStartOfComment(CurPtr) && // Start of line comment. 492 !isAtStatementSeparator(CurPtr) && // End of statement marker. 493 *CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { 493 *CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { 493 *CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { 494 ++CurPtr; 496 return StringRef(TokStart, CurPtr-TokStart); 500 TokStart = CurPtr; 502 while (*CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { 502 while (*CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { 502 while (*CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { 503 ++CurPtr; 505 return StringRef(TokStart, CurPtr-TokStart); 511 SaveAndRestore<const char *> SavedCurPtr(CurPtr); 552 TokStart = CurPtr; 565 CurPtr = TokStart; // reset curPtr; 578 CurPtr += strlen(MAI.getSeparatorString()) - 1; 611 while (*CurPtr == ' ' || *CurPtr == '\t') 611 while (*CurPtr == ' ' || *CurPtr == '\t') 612 CurPtr++; 616 return AsmToken(AsmToken::Space, StringRef(TokStart, CurPtr - TokStart)); 621 if (CurPtr != CurBuf.end() && *CurPtr == '\n') 621 if (CurPtr != CurBuf.end() && *CurPtr == '\n') 622 ++CurPtr; 624 StringRef(TokStart, CurPtr - TokStart)); 645 if (*CurPtr == '=') { 646 ++CurPtr; 651 if (*CurPtr == '>') { 652 ++CurPtr; 657 if (*CurPtr == '|') { 658 ++CurPtr; 664 if (*CurPtr == '&') { 665 ++CurPtr; 670 if (*CurPtr == '=') { 671 ++CurPtr; 682 StringRef(CurPtr)) 710 CurPtr += OperatorLength - 1; 725 switch (*CurPtr) { 727 ++CurPtr; 730 ++CurPtr; 733 ++CurPtr; 739 switch (*CurPtr) { 741 ++CurPtr; 744 ++CurPtr;