Lines Matching refs:CurPtr
46 CurPtr = ptr; in setBuffer()
48 CurPtr = CurBuf.begin(); in setBuffer()
59 return AsmToken(AsmToken::Error, StringRef(Loc, CurPtr - Loc)); in ReturnError()
63 if (CurPtr == CurBuf.end()) in getNextChar()
65 return (unsigned char)*CurPtr++; in getNextChar()
69 if (CurPtr == CurBuf.end()) in peekNextChar()
71 return (unsigned char)*CurPtr; in peekNextChar()
79 while (isDigit(*CurPtr)) in LexFloatLiteral()
80 ++CurPtr; in LexFloatLiteral()
82 if (*CurPtr == '-' || *CurPtr == '+') in LexFloatLiteral()
83 return ReturnError(CurPtr, "invalid sign in float literal"); in LexFloatLiteral()
86 if ((*CurPtr == 'e' || *CurPtr == 'E')) { in LexFloatLiteral()
87 ++CurPtr; in LexFloatLiteral()
89 if (*CurPtr == '-' || *CurPtr == '+') in LexFloatLiteral()
90 ++CurPtr; in LexFloatLiteral()
92 while (isDigit(*CurPtr)) in LexFloatLiteral()
93 ++CurPtr; in LexFloatLiteral()
97 StringRef(TokStart, CurPtr - TokStart)); in LexFloatLiteral()
107 assert((*CurPtr == 'p' || *CurPtr == 'P' || *CurPtr == '.') && in LexHexFloatLiteral()
112 if (*CurPtr == '.') { in LexHexFloatLiteral()
113 ++CurPtr; in LexHexFloatLiteral()
115 const char *FracStart = CurPtr; in LexHexFloatLiteral()
116 while (isHexDigit(*CurPtr)) in LexHexFloatLiteral()
117 ++CurPtr; in LexHexFloatLiteral()
119 NoFracDigits = CurPtr == FracStart; in LexHexFloatLiteral()
127 if (*CurPtr != 'p' && *CurPtr != 'P') in LexHexFloatLiteral()
130 ++CurPtr; in LexHexFloatLiteral()
132 if (*CurPtr == '+' || *CurPtr == '-') in LexHexFloatLiteral()
133 ++CurPtr; in LexHexFloatLiteral()
136 const char *ExpStart = CurPtr; in LexHexFloatLiteral()
137 while (isDigit(*CurPtr)) in LexHexFloatLiteral()
138 ++CurPtr; in LexHexFloatLiteral()
140 if (CurPtr == ExpStart) in LexHexFloatLiteral()
144 return AsmToken(AsmToken::Real, StringRef(TokStart, CurPtr - TokStart)); in LexHexFloatLiteral()
155 if (CurPtr[-1] == '.' && isDigit(*CurPtr)) { in LexIdentifier()
157 while (isDigit(*CurPtr)) in LexIdentifier()
158 ++CurPtr; in LexIdentifier()
160 if (!isIdentifierChar(*CurPtr, AllowAtInIdentifier, in LexIdentifier()
162 *CurPtr == 'e' || *CurPtr == 'E') in LexIdentifier()
166 while (isIdentifierChar(*CurPtr, AllowAtInIdentifier, AllowHashInIdentifier)) in LexIdentifier()
167 ++CurPtr; in LexIdentifier()
170 if (CurPtr == TokStart+1 && TokStart[0] == '.') in LexIdentifier()
173 return AsmToken(AsmToken::Identifier, StringRef(TokStart, CurPtr - TokStart)); in LexIdentifier()
185 switch (*CurPtr) { in LexSlash()
190 ++CurPtr; in LexSlash()
198 ++CurPtr; // skip the star. in LexSlash()
199 const char *CommentTextStart = CurPtr; in LexSlash()
200 while (CurPtr != CurBuf.end()) { in LexSlash()
201 switch (*CurPtr++) { in LexSlash()
204 if (*CurPtr != '/') in LexSlash()
210 StringRef(CommentTextStart, CurPtr - 1 - CommentTextStart)); in LexSlash()
212 ++CurPtr; // End the */. in LexSlash()
214 StringRef(TokStart, CurPtr - TokStart)); in LexSlash()
227 const char *CommentTextStart = CurPtr; in LexLineComment()
231 const char *NewlinePtr = CurPtr; in LexLineComment()
232 if (CurChar == '\r' && CurPtr != CurBuf.end() && *CurPtr == '\n') in LexLineComment()
233 ++CurPtr; in LexLineComment()
246 StringRef(TokStart, CurPtr - TokStart)); in LexLineComment()
250 StringRef(TokStart, CurPtr - 1 - TokStart)); in LexLineComment()
253 static void SkipIgnoredIntegerSuffix(const char *&CurPtr) { in SkipIgnoredIntegerSuffix() argument
255 if (CurPtr[0] == 'U' || CurPtr[0] == 'u') in SkipIgnoredIntegerSuffix()
256 ++CurPtr; in SkipIgnoredIntegerSuffix()
257 if (CurPtr[0] == 'L' || CurPtr[0] == 'l') in SkipIgnoredIntegerSuffix()
258 ++CurPtr; in SkipIgnoredIntegerSuffix()
259 if (CurPtr[0] == 'L' || CurPtr[0] == 'l') in SkipIgnoredIntegerSuffix()
260 ++CurPtr; in SkipIgnoredIntegerSuffix()
265 static unsigned doHexLookAhead(const char *&CurPtr, unsigned DefaultRadix, in doHexLookAhead() argument
268 const char *LookAhead = CurPtr; in doHexLookAhead()
284 CurPtr = isHex || !FirstNonDec ? LookAhead : FirstNonDec; in doHexLookAhead()
290 static const char *findLastDigit(const char *CurPtr, unsigned DefaultRadix) { in findLastDigit() argument
291 while (hexDigitValue(*CurPtr) < DefaultRadix) { in findLastDigit()
292 ++CurPtr; in findLastDigit()
294 return CurPtr; in findLastDigit()
330 if (LexMasmIntegers && isdigit(CurPtr[-1])) { in LexDigit()
332 (CurPtr[-1] != '0' && CurPtr[-1] != '1') ? CurPtr - 1 : nullptr; in LexDigit()
334 (CurPtr[-1] < '0' || CurPtr[-1] > '9') ? CurPtr - 1 : nullptr; in LexDigit()
335 const char *OldCurPtr = CurPtr; in LexDigit()
336 while (isHexDigit(*CurPtr)) { in LexDigit()
337 switch (*CurPtr) { in LexDigit()
340 FirstNonDecimal = CurPtr; in LexDigit()
352 FirstNonBinary = CurPtr; in LexDigit()
359 ++CurPtr; in LexDigit()
361 if (*CurPtr == '.') { in LexDigit()
364 ++CurPtr; in LexDigit()
368 if (LexMasmHexFloats && (*CurPtr == 'r' || *CurPtr == 'R')) { in LexDigit()
369 ++CurPtr; in LexDigit()
370 return AsmToken(AsmToken::Real, StringRef(TokStart, CurPtr - TokStart)); in LexDigit()
374 if (*CurPtr == 'h' || *CurPtr == 'H') { in LexDigit()
376 ++CurPtr; in LexDigit()
378 } else if (*CurPtr == 't' || *CurPtr == 'T') { in LexDigit()
380 ++CurPtr; in LexDigit()
382 } else if (*CurPtr == 'o' || *CurPtr == 'O' || *CurPtr == 'q' || in LexDigit()
383 *CurPtr == 'Q') { in LexDigit()
385 ++CurPtr; in LexDigit()
387 } else if (*CurPtr == 'y' || *CurPtr == 'Y') { in LexDigit()
389 ++CurPtr; in LexDigit()
391 } else if (FirstNonDecimal && FirstNonDecimal + 1 == CurPtr && in LexDigit()
395 } else if (FirstNonBinary && FirstNonBinary + 1 == CurPtr && in LexDigit()
402 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
409 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
415 CurPtr = OldCurPtr; in LexDigit()
421 CurPtr = findLastDigit(CurPtr, 16); in LexDigit()
422 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
434 if (LexMotorolaIntegers && CurPtr[-1] == '$') { in LexDigit()
435 const char *NumStart = CurPtr; in LexDigit()
436 while (isHexDigit(CurPtr[0])) in LexDigit()
437 ++CurPtr; in LexDigit()
440 if (StringRef(NumStart, CurPtr - NumStart).getAsInteger(16, Result)) in LexDigit()
443 return intToken(StringRef(TokStart, CurPtr - TokStart), Result); in LexDigit()
447 if (LexMotorolaIntegers && CurPtr[-1] == '%') { in LexDigit()
448 const char *NumStart = CurPtr; in LexDigit()
449 while (*CurPtr == '0' || *CurPtr == '1') in LexDigit()
450 ++CurPtr; in LexDigit()
453 if (StringRef(NumStart, CurPtr - NumStart).getAsInteger(2, Result)) in LexDigit()
456 return intToken(StringRef(TokStart, CurPtr - TokStart), Result); in LexDigit()
463 if (LexHLASMIntegers || CurPtr[-1] != '0' || CurPtr[0] == '.') { in LexDigit()
464 unsigned Radix = doHexLookAhead(CurPtr, 10, LexMasmIntegers); in LexDigit()
469 if (!IsHex && (*CurPtr == '.' || *CurPtr == 'e' || *CurPtr == 'E')) { in LexDigit()
470 if (*CurPtr == '.') in LexDigit()
471 ++CurPtr; in LexDigit()
476 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
485 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
490 if (!LexMasmIntegers && ((*CurPtr == 'b') || (*CurPtr == 'B'))) { in LexDigit()
491 ++CurPtr; in LexDigit()
493 if (!isDigit(CurPtr[0])) { in LexDigit()
494 --CurPtr; in LexDigit()
495 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
498 const char *NumStart = CurPtr; in LexDigit()
499 while (CurPtr[0] == '0' || CurPtr[0] == '1') in LexDigit()
500 ++CurPtr; in LexDigit()
503 if (CurPtr == NumStart) in LexDigit()
506 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
514 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
519 if ((*CurPtr == 'x') || (*CurPtr == 'X')) { in LexDigit()
520 ++CurPtr; in LexDigit()
521 const char *NumStart = CurPtr; in LexDigit()
522 while (isHexDigit(CurPtr[0])) in LexDigit()
523 ++CurPtr; in LexDigit()
527 if (CurPtr[0] == '.' || CurPtr[0] == 'p' || CurPtr[0] == 'P') in LexDigit()
528 return LexHexFloatLiteral(NumStart == CurPtr); in LexDigit()
531 if (CurPtr == NumStart) in LexDigit()
532 return ReturnError(CurPtr-2, "invalid hexadecimal number"); in LexDigit()
535 if (StringRef(TokStart, CurPtr - TokStart).getAsInteger(0, Result)) in LexDigit()
539 if (LexMasmIntegers && (*CurPtr == 'h' || *CurPtr == 'H')) in LexDigit()
540 ++CurPtr; in LexDigit()
544 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
546 return intToken(StringRef(TokStart, CurPtr - TokStart), Result); in LexDigit()
551 unsigned Radix = doHexLookAhead(CurPtr, 8, LexMasmIntegers); in LexDigit()
552 StringRef Result(TokStart, CurPtr - TokStart); in LexDigit()
558 ++CurPtr; in LexDigit()
562 SkipIgnoredIntegerSuffix(CurPtr); in LexDigit()
589 return AsmToken(AsmToken::String, StringRef(TokStart, CurPtr - TokStart)); in LexSingleQuote()
605 StringRef Res = StringRef(TokStart,CurPtr - TokStart); in LexSingleQuote()
646 return AsmToken(AsmToken::String, StringRef(TokStart, CurPtr - TokStart)); in LexQuote()
661 return AsmToken(AsmToken::String, StringRef(TokStart, CurPtr - TokStart)); in LexQuote()
665 TokStart = CurPtr; in LexUntilEndOfStatement()
667 while (!isAtStartOfComment(CurPtr) && // Start of line comment. in LexUntilEndOfStatement()
668 !isAtStatementSeparator(CurPtr) && // End of statement marker. in LexUntilEndOfStatement()
669 *CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { in LexUntilEndOfStatement()
670 ++CurPtr; in LexUntilEndOfStatement()
672 return StringRef(TokStart, CurPtr-TokStart); in LexUntilEndOfStatement()
676 TokStart = CurPtr; in LexUntilEndOfLine()
678 while (*CurPtr != '\n' && *CurPtr != '\r' && CurPtr != CurBuf.end()) { in LexUntilEndOfLine()
679 ++CurPtr; in LexUntilEndOfLine()
681 return StringRef(TokStart, CurPtr-TokStart); in LexUntilEndOfLine()
687 SaveAndRestore SavedCurPtr(CurPtr); in peekTokens()
731 TokStart = CurPtr; in LexToken()
744 CurPtr = TokStart; // reset curPtr; in LexToken()
759 CurPtr += strlen(MAI.getSeparatorString()) - 1; in LexToken()
797 while (*CurPtr == ' ' || *CurPtr == '\t') in LexToken()
798 CurPtr++; in LexToken()
802 return AsmToken(AsmToken::Space, StringRef(TokStart, CurPtr - TokStart)); in LexToken()
807 if (CurPtr != CurBuf.end() && *CurPtr == '\n') in LexToken()
808 ++CurPtr; in LexToken()
810 StringRef(TokStart, CurPtr - TokStart)); in LexToken()
828 if (LexMotorolaIntegers && isHexDigit(*CurPtr)) in LexToken()
848 if (*CurPtr == '=') { in LexToken()
849 ++CurPtr; in LexToken()
854 if (*CurPtr == '>') { in LexToken()
855 ++CurPtr; in LexToken()
860 if (*CurPtr == '|') { in LexToken()
861 ++CurPtr; in LexToken()
867 if (*CurPtr == '&') { in LexToken()
868 ++CurPtr; in LexToken()
873 if (*CurPtr == '=') { in LexToken()
874 ++CurPtr; in LexToken()
879 if (LexMotorolaIntegers && (*CurPtr == '0' || *CurPtr == '1')) { in LexToken()
889 StringRef(CurPtr)) in LexToken()
917 CurPtr += OperatorLength - 1; in LexToken()
931 switch (*CurPtr) { in LexToken()
933 ++CurPtr; in LexToken()
936 ++CurPtr; in LexToken()
939 ++CurPtr; in LexToken()
945 switch (*CurPtr) { in LexToken()
947 ++CurPtr; in LexToken()
950 ++CurPtr; in LexToken()