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