Lines Matching refs:CurPtr
45 CurPtr = ptr; in setBuffer()
47 CurPtr = CurBuf.begin(); in setBuffer()
58 return AsmToken(AsmToken::Error, StringRef(Loc, CurPtr - Loc)); in ReturnError()
62 if (CurPtr == CurBuf.end()) in getNextChar()
64 return (unsigned char)*CurPtr++; in getNextChar()
68 if (CurPtr == CurBuf.end()) in peekNextChar()
70 return (unsigned char)*CurPtr; in peekNextChar()
78 while (isDigit(*CurPtr)) in LexFloatLiteral()
79 ++CurPtr; in LexFloatLiteral()
81 if (*CurPtr == '-' || *CurPtr == '+') in LexFloatLiteral()
82 return ReturnError(CurPtr, "Invalid sign in float literal"); in LexFloatLiteral()
85 if ((*CurPtr == 'e' || *CurPtr == 'E')) { in LexFloatLiteral()
86 ++CurPtr; in LexFloatLiteral()
88 if (*CurPtr == '-' || *CurPtr == '+') in LexFloatLiteral()
89 ++CurPtr; in LexFloatLiteral()
91 while (isDigit(*CurPtr)) in LexFloatLiteral()
92 ++CurPtr; in LexFloatLiteral()
96 StringRef(TokStart, CurPtr - TokStart)); in LexFloatLiteral()
106 assert((*CurPtr == 'p' || *CurPtr == 'P' || *CurPtr == '.') && in LexHexFloatLiteral()
111 if (*CurPtr == '.') { in LexHexFloatLiteral()
112 ++CurPtr; in LexHexFloatLiteral()
114 const char *FracStart = CurPtr; in LexHexFloatLiteral()
115 while (isHexDigit(*CurPtr)) in LexHexFloatLiteral()
116 ++CurPtr; in LexHexFloatLiteral()
118 NoFracDigits = CurPtr == FracStart; in LexHexFloatLiteral()
126 if (*CurPtr != 'p' && *CurPtr != 'P') in LexHexFloatLiteral()
129 ++CurPtr; in LexHexFloatLiteral()
131 if (*CurPtr == '+' || *CurPtr == '-') in LexHexFloatLiteral()
132 ++CurPtr; in LexHexFloatLiteral()
135 const char *ExpStart = CurPtr; in LexHexFloatLiteral()
136 while (isDigit(*CurPtr)) in LexHexFloatLiteral()
137 ++CurPtr; in LexHexFloatLiteral()
139 if (CurPtr == ExpStart) in LexHexFloatLiteral()
143 return AsmToken(AsmToken::Real, StringRef(TokStart, CurPtr - TokStart)); in LexHexFloatLiteral()
154 if (CurPtr[-1] == '.' && isDigit(*CurPtr)) { in LexIdentifier()
156 while (isDigit(*CurPtr)) in LexIdentifier()
157 ++CurPtr; in LexIdentifier()
159 if (!IsIdentifierChar(*CurPtr, AllowAtInIdentifier) || in LexIdentifier()
160 *CurPtr == 'e' || *CurPtr == 'E') in LexIdentifier()
164 while (IsIdentifierChar(*CurPtr, AllowAtInIdentifier)) in LexIdentifier()
165 ++CurPtr; in LexIdentifier()
168 if (CurPtr == TokStart+1 && TokStart[0] == '.') in LexIdentifier()
171 return AsmToken(AsmToken::Identifier, StringRef(TokStart, CurPtr - TokStart)); in LexIdentifier()
177 switch (*CurPtr) { in LexSlash()
182 ++CurPtr; in LexSlash()
190 ++CurPtr; // skip the star. in LexSlash()
191 const char *CommentTextStart = CurPtr; in LexSlash()
192 while (CurPtr != CurBuf.end()) { in LexSlash()
193 switch (*CurPtr++) { in LexSlash()
196 if (*CurPtr != '/') in LexSlash()
202 StringRef(CommentTextStart, CurPtr - 1 - CommentTextStart)); in LexSlash()
204 ++CurPtr; // End the */. in LexSlash()
206 StringRef(TokStart, CurPtr - TokStart)); in LexSlash()
219 const char *CommentTextStart = CurPtr; in LexLineComment()
223 if (CurChar == '\r' && CurPtr != CurBuf.end() && *CurPtr == '\n') in LexLineComment()
224 ++CurPtr; in LexLineComment()
230 StringRef(CommentTextStart, CurPtr - 1 - CommentTextStart)); in LexLineComment()
237 StringRef(TokStart, CurPtr - TokStart)); in LexLineComment()
241 StringRef(TokStart, CurPtr - 1 - TokStart)); in LexLineComment()
244 static void SkipIgnoredIntegerSuffix(const char *&CurPtr) { in SkipIgnoredIntegerSuffix() argument
246 if (CurPtr[0] == 'U') in SkipIgnoredIntegerSuffix()
247 ++CurPtr; in SkipIgnoredIntegerSuffix()
248 if (CurPtr[0] == 'L') in SkipIgnoredIntegerSuffix()
249 ++CurPtr; in SkipIgnoredIntegerSuffix()
250 if (CurPtr[0] == 'L') in SkipIgnoredIntegerSuffix()
251 ++CurPtr; in SkipIgnoredIntegerSuffix()
256 static unsigned doHexLookAhead(const char *&CurPtr, unsigned DefaultRadix, in doHexLookAhead() argument
259 const char *LookAhead = CurPtr; in doHexLookAhead()
275 CurPtr = isHex || !FirstNonDec ? LookAhead : FirstNonDec; in doHexLookAhead()
281 static const char *findLastDigit(const char *CurPtr, unsigned DefaultRadix) { in findLastDigit() argument
282 while (hexDigitValue(*CurPtr) < DefaultRadix) { in findLastDigit()
283 ++CurPtr; in findLastDigit()
285 return CurPtr; in findLastDigit()
321 if (LexMasmIntegers && isdigit(CurPtr[-1])) { in LexDigit()
323 (CurPtr[-1] != '0' && CurPtr[-1] != '1') ? CurPtr - 1 : nullptr; in LexDigit()
325 (CurPtr[-1] < '0' || CurPtr[-1] > '9') ? CurPtr - 1 : nullptr; in LexDigit()
326 const char *OldCurPtr = CurPtr; in LexDigit()
327 while (isHexDigit(*CurPtr)) { in LexDigit()
328 switch (*CurPtr) { in LexDigit()
331 FirstNonDecimal = CurPtr; in LexDigit()
343 FirstNonBinary = CurPtr; in LexDigit()
350 ++CurPtr; in LexDigit()
352 if (*CurPtr == '.') { in LexDigit()
355 ++CurPtr; in LexDigit()
359 if (LexMasmHexFloats && (*CurPtr == 'r' || *CurPtr == 'R')) { in LexDigit()
360 ++CurPtr; in LexDigit()
361 return AsmToken(AsmToken::Real, StringRef(TokStart, CurPtr - TokStart)); in LexDigit()
365 if (*CurPtr == 'h' || *CurPtr == 'H') { in LexDigit()
367 ++CurPtr; in LexDigit()
369 } else if (*CurPtr == 't' || *CurPtr == 'T') { in LexDigit()
371 ++CurPtr; in LexDigit()
373 } else if (*CurPtr == 'o' || *CurPtr == 'O' || *CurPtr == 'q' || in LexDigit()
374 *CurPtr == 'Q') { in LexDigit()
376 ++CurPtr; in LexDigit()
378 } else if (*CurPtr == 'y' || *CurPtr == 'Y') { in LexDigit()
380 ++CurPtr; in LexDigit()
382 } else if (FirstNonDecimal && FirstNonDecimal + 1 == CurPtr && in LexDigit()
386 } else if (FirstNonBinary && FirstNonBinary + 1 == CurPtr && in LexDigit()
393 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
400 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
406 CurPtr = OldCurPtr; in LexDigit()
412 CurPtr = findLastDigit(CurPtr, 16); in LexDigit()
413 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
425 if (CurPtr[-1] != '0' || CurPtr[0] == '.') { in LexDigit()
426 unsigned Radix = doHexLookAhead(CurPtr, 10, LexMasmIntegers); in LexDigit()
429 if (!isHex && (*CurPtr == '.' || *CurPtr == 'e' || *CurPtr == 'E')) { in LexDigit()
430 if (*CurPtr == '.') in LexDigit()
431 ++CurPtr; in LexDigit()
435 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
444 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
449 if (!LexMasmIntegers && ((*CurPtr == 'b') || (*CurPtr == 'B'))) { in LexDigit()
450 ++CurPtr; in LexDigit()
452 if (!isDigit(CurPtr[0])) { in LexDigit()
453 --CurPtr; in LexDigit()
454 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
457 const char *NumStart = CurPtr; in LexDigit()
458 while (CurPtr[0] == '0' || CurPtr[0] == '1') in LexDigit()
459 ++CurPtr; in LexDigit()
462 if (CurPtr == NumStart) in LexDigit()
465 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
473 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
478 if ((*CurPtr == 'x') || (*CurPtr == 'X')) { in LexDigit()
479 ++CurPtr; in LexDigit()
480 const char *NumStart = CurPtr; in LexDigit()
481 while (isHexDigit(CurPtr[0])) in LexDigit()
482 ++CurPtr; in LexDigit()
486 if (CurPtr[0] == '.' || CurPtr[0] == 'p' || CurPtr[0] == 'P') in LexDigit()
487 return LexHexFloatLiteral(NumStart == CurPtr); in LexDigit()
490 if (CurPtr == NumStart) in LexDigit()
491 return ReturnError(CurPtr-2, "invalid hexadecimal number"); in LexDigit()
494 if (StringRef(TokStart, CurPtr - TokStart).getAsInteger(0, Result)) in LexDigit()
498 if (LexMasmIntegers && (*CurPtr == 'h' || *CurPtr == 'H')) in LexDigit()
499 ++CurPtr; in LexDigit()
503 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
505 return intToken(StringRef(TokStart, CurPtr - TokStart), Result); in LexDigit()
510 unsigned Radix = doHexLookAhead(CurPtr, 8, LexMasmIntegers); in LexDigit()
511 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
517 ++CurPtr; in LexDigit()
521 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
545 return AsmToken(AsmToken::String, StringRef(TokStart, CurPtr - TokStart)); in LexSingleQuote()
561 StringRef Res = StringRef(TokStart,CurPtr - TokStart); in LexSingleQuote()
597 return AsmToken(AsmToken::String, StringRef(TokStart, CurPtr - TokStart)); in LexQuote()
613 return AsmToken(AsmToken::String, StringRef(TokStart, CurPtr - TokStart)); in LexQuote()
617 TokStart = CurPtr; in LexUntilEndOfStatement()
619 while (!isAtStartOfComment(CurPtr) && // Start of line comment. in LexUntilEndOfStatement()
620 !isAtStatementSeparator(CurPtr) && // End of statement marker. in LexUntilEndOfStatement()
621 *CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { in LexUntilEndOfStatement()
622 ++CurPtr; in LexUntilEndOfStatement()
624 return StringRef(TokStart, CurPtr-TokStart); in LexUntilEndOfStatement()
628 TokStart = CurPtr; in LexUntilEndOfLine()
630 while (*CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { in LexUntilEndOfLine()
631 ++CurPtr; in LexUntilEndOfLine()
633 return StringRef(TokStart, CurPtr-TokStart); in LexUntilEndOfLine()
639 SaveAndRestore<const char *> SavedCurPtr(CurPtr); in peekTokens()
680 TokStart = CurPtr; in LexToken()
693 CurPtr = TokStart; // reset curPtr; in LexToken()
706 CurPtr += strlen(MAI.getSeparatorString()) - 1; in LexToken()
748 while (*CurPtr == ' ' || *CurPtr == '\t') in LexToken()
749 CurPtr++; in LexToken()
753 return AsmToken(AsmToken::Space, StringRef(TokStart, CurPtr - TokStart)); in LexToken()
758 if (CurPtr != CurBuf.end() && *CurPtr == '\n') in LexToken()
759 ++CurPtr; in LexToken()
761 StringRef(TokStart, CurPtr - TokStart)); in LexToken()
782 if (*CurPtr == '=') { in LexToken()
783 ++CurPtr; in LexToken()
788 if (*CurPtr == '>') { in LexToken()
789 ++CurPtr; in LexToken()
794 if (*CurPtr == '|') { in LexToken()
795 ++CurPtr; in LexToken()
801 if (*CurPtr == '&') { in LexToken()
802 ++CurPtr; in LexToken()
807 if (*CurPtr == '=') { in LexToken()
808 ++CurPtr; in LexToken()
819 StringRef(CurPtr)) in LexToken()
847 CurPtr += OperatorLength - 1; in LexToken()
862 switch (*CurPtr) { in LexToken()
864 ++CurPtr; in LexToken()
867 ++CurPtr; in LexToken()
870 ++CurPtr; in LexToken()
876 switch (*CurPtr) { in LexToken()
878 ++CurPtr; in LexToken()
881 ++CurPtr; in LexToken()