Lines Matching refs:CurPtr

26   CurPtr = NULL;
37 CurPtr = ptr;
39 CurPtr = CurBuf->getBufferStart();
53 char CurChar = *CurPtr++;
60 if (CurPtr-1 != CurBuf->getBufferEnd())
64 --CurPtr; // Another call to lex will return EOF again.
76 while (isdigit(*CurPtr))
77 ++CurPtr;
82 if (*CurPtr == 'e' || *CurPtr == 'E') {
83 ++CurPtr;
84 if (*CurPtr == '-' || *CurPtr == '+')
85 ++CurPtr;
86 while (isdigit(*CurPtr))
87 ++CurPtr;
91 StringRef(TokStart, CurPtr - TokStart));
101 assert((*CurPtr == 'p' || *CurPtr == 'P' || *CurPtr == '.') &&
106 if (*CurPtr == '.') {
107 ++CurPtr;
109 const char *FracStart = CurPtr;
110 while (isxdigit(*CurPtr))
111 ++CurPtr;
113 NoFracDigits = CurPtr == FracStart;
121 if (*CurPtr != 'p' && *CurPtr != 'P')
124 ++CurPtr;
126 if (*CurPtr == '+' || *CurPtr == '-')
127 ++CurPtr;
130 const char *ExpStart = CurPtr;
131 while (isdigit(*CurPtr))
132 ++CurPtr;
134 if (CurPtr == ExpStart)
138 return AsmToken(AsmToken::Real, StringRef(TokStart, CurPtr - TokStart));
147 if (CurPtr[-1] == '.' && isdigit(*CurPtr)) {
149 while (isdigit(*CurPtr))
150 ++CurPtr;
151 if (*CurPtr == 'e' || *CurPtr == 'E' || !IsIdentifierChar(*CurPtr))
155 while (IsIdentifierChar(*CurPtr))
156 ++CurPtr;
159 if (CurPtr == TokStart+1 && TokStart[0] == '.')
162 return AsmToken(AsmToken::Identifier, StringRef(TokStart, CurPtr - TokStart));
168 switch (*CurPtr) {
170 case '/': return ++CurPtr, LexLineComment();
171 default: return AsmToken(AsmToken::Slash, StringRef(CurPtr-1, 1));
175 ++CurPtr; // skip the star.
183 if (CurPtr[0] != '/') break;
185 ++CurPtr; // End the */.
201 return AsmToken(AsmToken::Eof, StringRef(CurPtr, 0));
202 return AsmToken(AsmToken::EndOfStatement, StringRef(CurPtr, 0));
205 static void SkipIgnoredIntegerSuffix(const char *&CurPtr) {
207 if (CurPtr[0] == 'U')
208 ++CurPtr;
209 if (CurPtr[0] == 'L')
210 ++CurPtr;
211 if (CurPtr[0] == 'L')
212 ++CurPtr;
217 static unsigned doLookAhead(const char *&CurPtr, unsigned DefaultRadix) {
219 const char *LookAhead = CurPtr;
232 CurPtr = isHex || !FirstHex ? LookAhead : FirstHex;
247 if (CurPtr[-1] != '0' || CurPtr[0] == '.') {
248 unsigned Radix = doLookAhead(CurPtr, 10);
251 if (!isHex && (*CurPtr == '.' || *CurPtr == 'e')) {
252 ++CurPtr;
256 StringRef Result(TokStart, CurPtr - TokStart);
271 ++CurPtr;
275 SkipIgnoredIntegerSuffix(CurPtr);
280 if (*CurPtr == 'b') {
281 ++CurPtr;
283 if (!isdigit(CurPtr[0])) {
284 --CurPtr;
285 StringRef Result(TokStart, CurPtr - TokStart);
288 const char *NumStart = CurPtr;
289 while (CurPtr[0] == '0' || CurPtr[0] == '1')
290 ++CurPtr;
293 if (CurPtr == NumStart)
296 StringRef Result(TokStart, CurPtr - TokStart);
304 SkipIgnoredIntegerSuffix(CurPtr);
309 if (*CurPtr == 'x') {
310 ++CurPtr;
311 const char *NumStart = CurPtr;
312 while (isxdigit(CurPtr[0]))
313 ++CurPtr;
317 if (CurPtr[0] == '.' || CurPtr[0] == 'p' || CurPtr[0] == 'P')
318 return LexHexFloatLiteral(NumStart == CurPtr);
321 if (CurPtr == NumStart)
322 return ReturnError(CurPtr-2, "invalid hexadecimal number");
325 if (StringRef(TokStart, CurPtr - TokStart).getAsInteger(0, Result))
329 if (*CurPtr == 'h' || *CurPtr == 'H')
330 ++CurPtr;
334 SkipIgnoredIntegerSuffix(CurPtr);
336 return AsmToken(AsmToken::Integer, StringRef(TokStart, CurPtr - TokStart),
342 unsigned Radix = doLookAhead(CurPtr, 8);
344 StringRef Result(TokStart, CurPtr - TokStart);
351 ++CurPtr;
355 SkipIgnoredIntegerSuffix(CurPtr);
377 StringRef Res = StringRef(TokStart,CurPtr - TokStart);
412 return AsmToken(AsmToken::String, StringRef(TokStart, CurPtr - TokStart));
416 TokStart = CurPtr;
418 while (!isAtStartOfComment(*CurPtr) && // Start of line comment.
419 !isAtStatementSeparator(CurPtr) && // End of statement marker.
420 *CurPtr != '\n' &&
421 *CurPtr != '\r' &&
422 (*CurPtr != 0 || CurPtr != CurBuf->getBufferEnd())) {
423 ++CurPtr;
425 return StringRef(TokStart, CurPtr-TokStart);
429 TokStart = CurPtr;
431 while (*CurPtr != '\n' &&
432 *CurPtr != '\r' &&
433 (*CurPtr != 0 || CurPtr != CurBuf->getBufferEnd())) {
434 ++CurPtr;
436 return StringRef(TokStart, CurPtr-TokStart);
450 TokStart = CurPtr;
464 CurPtr += strlen(MAI.getSeparatorString()) - 1;
494 while (*CurPtr==' ' || *CurPtr=='\t') {
495 CurPtr++;
520 if (*CurPtr == '=')
521 return ++CurPtr, AsmToken(AsmToken::EqualEqual, StringRef(TokStart, 2));
524 if (*CurPtr == '|')
525 return ++CurPtr, AsmToken(AsmToken::PipePipe, StringRef(TokStart, 2));
529 if (*CurPtr == '&')
530 return ++CurPtr, AsmToken(AsmToken::AmpAmp, StringRef(TokStart, 2));
533 if (*CurPtr == '=')
534 return ++CurPtr, AsmToken(AsmToken::ExclaimEqual, StringRef(TokStart, 2));
545 switch (*CurPtr) {
546 case '<': return ++CurPtr, AsmToken(AsmToken::LessLess,
548 case '=': return ++CurPtr, AsmToken(AsmToken::LessEqual,
550 case '>': return ++CurPtr, AsmToken(AsmToken::LessGreater,
555 switch (*CurPtr) {
556 case '>': return ++CurPtr, AsmToken(AsmToken::GreaterGreater,
558 case '=': return ++CurPtr, AsmToken(AsmToken::GreaterEqual,