Lines Matching refs:End
85 lexToken(const char *&First, const char *const End);
88 const char *const End);
96 tryLexIdentifierOrSkipLine(const char *&First, const char *const End);
100 const char *const End);
109 const char *const End);
111 LLVM_NODISCARD bool scanImpl(const char *First, const char *const End);
112 LLVM_NODISCARD bool lexPPLine(const char *&First, const char *const End);
113 LLVM_NODISCARD bool lexAt(const char *&First, const char *const End);
114 LLVM_NODISCARD bool lexModule(const char *&First, const char *const End);
116 const char *const End);
117 LLVM_NODISCARD bool lexPragma(const char *&First, const char *const End);
118 LLVM_NODISCARD bool lexEndif(const char *&First, const char *const End);
120 const char *const End);
123 const char *const End);
124 void lexPPDirectiveBody(const char *&First, const char *const End);
175 static void skipOverSpaces(const char *&First, const char *const End) { in skipOverSpaces() argument
176 while (First != End && isHorizontalWhitespace(*First)) in skipOverSpaces()
205 static void skipRawString(const char *&First, const char *const End) { in skipRawString() argument
210 while (Last != End && *Last != '(') in skipRawString()
212 if (Last == End) { in skipRawString()
221 while (First != End && *First != ')') in skipRawString()
223 if (First == End) in skipRawString()
229 while (Last != End && size_t(Last - First) < Terminator.size() && in skipRawString()
234 if (Last == End) { in skipRawString()
248 static unsigned isEOL(const char *First, const char *const End) { in isEOL() argument
249 if (First == End) in isEOL()
251 if (End - First > 1 && isVerticalWhitespace(First[0]) && in isEOL()
257 static void skipString(const char *&First, const char *const End) { in skipString() argument
260 for (++First; First != End && *First != Terminator; ++First) { in skipString()
269 if (++First == End) in skipString()
275 skipOverSpaces(FirstAfterBackslashPastSpace, End); in skipString()
276 if (unsigned NLSize = isEOL(FirstAfterBackslashPastSpace, End)) { in skipString()
282 if (First != End) in skipString()
287 static unsigned skipNewline(const char *&First, const char *End) { in skipNewline() argument
288 if (First == End) in skipNewline()
291 unsigned Len = isEOL(First, End); in skipNewline()
301 static void skipToNewlineRaw(const char *&First, const char *const End) { in skipToNewlineRaw() argument
303 if (First == End) in skipToNewlineRaw()
306 unsigned Len = isEOL(First, End); in skipToNewlineRaw()
311 if (++First == End) in skipToNewlineRaw()
313 Len = isEOL(First, End); in skipToNewlineRaw()
324 static void skipLineComment(const char *&First, const char *const End) { in skipLineComment() argument
327 skipToNewlineRaw(First, End); in skipLineComment()
330 static void skipBlockComment(const char *&First, const char *const End) { in skipBlockComment() argument
332 if (End - First < 4) { in skipBlockComment()
333 First = End; in skipBlockComment()
336 for (First += 3; First != End; ++First) in skipBlockComment()
347 const char *const End) { in isQuoteCppDigitSeparator() argument
364 return (Cur + 1) < End && isAsciiIdentifierContinue(*(Cur + 1)); in isQuoteCppDigitSeparator()
367 static void skipLine(const char *&First, const char *const End) { in skipLine() argument
369 assert(First <= End); in skipLine()
370 if (First == End) in skipLine()
374 skipNewline(First, End); in skipLine()
378 while (First != End && !isVerticalWhitespace(*First)) { in skipLine()
381 (*First == '\'' && !isQuoteCppDigitSeparator(Start, First, End))) { in skipLine()
383 skipRawString(First, End); in skipLine()
385 skipString(First, End); in skipLine()
390 if (*First != '/' || End - First < 2) { in skipLine()
397 skipLineComment(First, End); in skipLine()
407 skipBlockComment(First, End); in skipLine()
409 if (First == End) in skipLine()
413 unsigned Len = skipNewline(First, End); in skipLine()
420 const char *const End) { in skipDirective() argument
426 skipToNewlineRaw(First, End); in skipDirective()
428 skipLine(First, End); in skipDirective()
431 static void skipWhitespace(const char *&First, const char *const End) { in skipWhitespace() argument
433 assert(First <= End); in skipWhitespace()
434 skipOverSpaces(First, End); in skipWhitespace()
436 if (End - First < 2) in skipWhitespace()
440 skipNewline(++First, End); in skipWhitespace()
450 skipLineComment(First, End); in skipWhitespace()
459 skipBlockComment(First, End); in skipWhitespace()
464 const char *const End) { in lexModuleDirectiveBody() argument
467 const dependency_directives_scan::Token &Tok = lexToken(First, End); in lexModuleDirectiveBody()
476 skipWhitespace(First, End); in lexModuleDirectiveBody()
477 if (First == End) in lexModuleDirectiveBody()
482 skipNewline(First, End); in lexModuleDirectiveBody()
487 const char *const End) { in lexToken() argument
491 assert(First <= End); in lexToken()
500 Scanner::lexIncludeFilename(const char *&First, const char *const End) { in lexIncludeFilename() argument
504 assert(First <= End); in lexIncludeFilename()
512 void Scanner::lexPPDirectiveBody(const char *&First, const char *const End) { in lexPPDirectiveBody() argument
514 const dependency_directives_scan::Token &Tok = lexToken(First, End); in lexPPDirectiveBody()
521 Scanner::tryLexIdentifierOrSkipLine(const char *&First, const char *const End) { in tryLexIdentifierOrSkipLine() argument
522 const dependency_directives_scan::Token &Tok = lexToken(First, End); in tryLexIdentifierOrSkipLine()
525 skipLine(First, End); in tryLexIdentifierOrSkipLine()
550 StringRef Scanner::lexIdentifier(const char *&First, const char *const End) { in lexIdentifier() argument
551 Optional<StringRef> Id = tryLexIdentifierOrSkipLine(First, End); in lexIdentifier()
557 const char *const End) { in isNextIdentifierOrSkipLine() argument
558 if (Optional<StringRef> FoundId = tryLexIdentifierOrSkipLine(First, End)) { in isNextIdentifierOrSkipLine()
561 skipLine(First, End); in isNextIdentifierOrSkipLine()
566 bool Scanner::lexAt(const char *&First, const char *const End) { in lexAt() argument
570 const dependency_directives_scan::Token &AtTok = lexToken(First, End); in lexAt()
574 if (!isNextIdentifierOrSkipLine("import", First, End)) in lexAt()
576 return lexModuleDirectiveBody(decl_at_import, First, End); in lexAt()
579 bool Scanner::lexModule(const char *&First, const char *const End) { in lexModule() argument
580 StringRef Id = lexIdentifier(First, End); in lexModule()
584 Optional<StringRef> NextId = tryLexIdentifierOrSkipLine(First, End); in lexModule()
591 skipLine(First, End); in lexModule()
595 skipWhitespace(First, End); in lexModule()
607 skipLine(First, End); in lexModule()
620 return lexModuleDirectiveBody(Kind, First, End); in lexModule()
623 bool Scanner::lexPragma(const char *&First, const char *const End) { in lexPragma() argument
624 Optional<StringRef> FoundId = tryLexIdentifierOrSkipLine(First, End); in lexPragma()
636 lexPPDirectiveBody(First, End); in lexPragma()
642 skipLine(First, End); in lexPragma()
647 if (!isNextIdentifierOrSkipLine("module", First, End)) in lexPragma()
651 if (!isNextIdentifierOrSkipLine("import", First, End)) in lexPragma()
655 lexPPDirectiveBody(First, End); in lexPragma()
660 bool Scanner::lexEndif(const char *&First, const char *const End) { in lexEndif() argument
673 skipLine(First, End); in lexEndif()
677 return lexDefault(pp_endif, First, End); in lexEndif()
681 const char *const End) { in lexDefault() argument
682 lexPPDirectiveBody(First, End); in lexDefault()
699 bool Scanner::lexPPLine(const char *&First, const char *const End) { in lexPPLine() argument
700 assert(First != End); in lexPPLine()
702 skipWhitespace(First, End); in lexPPLine()
703 assert(First <= End); in lexPPLine()
704 if (First == End) in lexPPLine()
708 skipLine(First, End); in lexPPLine()
709 assert(First <= End); in lexPPLine()
723 return lexAt(First, End); in lexPPLine()
726 return lexModule(First, End); in lexPPLine()
735 const dependency_directives_scan::Token &HashTok = lexToken(First, End); in lexPPLine()
739 Optional<StringRef> FoundId = tryLexIdentifierOrSkipLine(First, End); in lexPPLine()
746 return lexPragma(First, End); in lexPPLine()
765 skipDirective(Id, First, End); in lexPPLine()
770 return lexEndif(First, End); in lexPPLine()
777 lexIncludeFilename(First, End); in lexPPLine()
784 return lexDefault(Kind, First, End); in lexPPLine()
787 static void skipUTF8ByteOrderMark(const char *&First, const char *const End) { in skipUTF8ByteOrderMark() argument
788 if ((End - First) >= 3 && First[0] == '\xef' && First[1] == '\xbb' && in skipUTF8ByteOrderMark()
793 bool Scanner::scanImpl(const char *First, const char *const End) { in scanImpl() argument
794 skipUTF8ByteOrderMark(First, End); in scanImpl()
795 while (First != End) in scanImpl()
796 if (lexPPLine(First, End)) in scanImpl()