Lines Matching refs:End
89 lexToken(const char *&First, const char *const End);
92 lexIncludeFilename(const char *&First, const char *const End);
94 void skipLine(const char *&First, const char *const End);
95 void skipDirective(StringRef Name, const char *&First, const char *const End);
107 tryLexIdentifierOrSkipLine(const char *&First, const char *const End);
111 const char *const End);
120 const char *const End);
128 const char *const End);
136 tryLexStringLiteralOrSkipLine(const char *&First, const char *const End);
138 [[nodiscard]] bool scanImpl(const char *First, const char *const End);
139 [[nodiscard]] bool lexPPLine(const char *&First, const char *const End);
140 [[nodiscard]] bool lexAt(const char *&First, const char *const End);
141 [[nodiscard]] bool lexModule(const char *&First, const char *const End);
143 const char *const End);
144 [[nodiscard]] bool lexPragma(const char *&First, const char *const End);
145 [[nodiscard]] bool lex_Pragma(const char *&First, const char *const End);
146 [[nodiscard]] bool lexEndif(const char *&First, const char *const End);
148 const char *const End);
151 const char *const End);
152 void lexPPDirectiveBody(const char *&First, const char *const End);
204 static void skipOverSpaces(const char *&First, const char *const End) { in skipOverSpaces() argument
205 while (First != End && isHorizontalWhitespace(*First)) in skipOverSpaces()
234 static void skipRawString(const char *&First, const char *const End) { in skipRawString() argument
239 while (Last != End && *Last != '(') in skipRawString()
241 if (Last == End) { in skipRawString()
250 while (First != End && *First != ')') in skipRawString()
252 if (First == End) in skipRawString()
258 while (Last != End && size_t(Last - First) < Terminator.size() && in skipRawString()
263 if (Last == End) { in skipRawString()
277 static unsigned isEOL(const char *First, const char *const End) { in isEOL() argument
278 if (First == End) in isEOL()
280 if (End - First > 1 && isVerticalWhitespace(First[0]) && in isEOL()
286 static void skipString(const char *&First, const char *const End) { in skipString() argument
289 for (++First; First != End && *First != Terminator; ++First) { in skipString()
298 if (++First == End) in skipString()
304 skipOverSpaces(FirstAfterBackslashPastSpace, End); in skipString()
305 if (unsigned NLSize = isEOL(FirstAfterBackslashPastSpace, End)) { in skipString()
311 if (First != End) in skipString()
316 static unsigned skipNewline(const char *&First, const char *End) { in skipNewline() argument
317 if (First == End) in skipNewline()
320 unsigned Len = isEOL(First, End); in skipNewline()
330 static void skipToNewlineRaw(const char *&First, const char *const End) { in skipToNewlineRaw() argument
332 if (First == End) in skipToNewlineRaw()
335 unsigned Len = isEOL(First, End); in skipToNewlineRaw()
340 if (++First == End) in skipToNewlineRaw()
342 Len = isEOL(First, End); in skipToNewlineRaw()
353 static void skipLineComment(const char *&First, const char *const End) { in skipLineComment() argument
356 skipToNewlineRaw(First, End); in skipLineComment()
359 static void skipBlockComment(const char *&First, const char *const End) { in skipBlockComment() argument
361 if (End - First < 4) { in skipBlockComment()
362 First = End; in skipBlockComment()
365 for (First += 3; First != End; ++First) in skipBlockComment()
376 const char *const End) { in isQuoteCppDigitSeparator() argument
393 return (Cur + 1) < End && isAsciiIdentifierContinue(*(Cur + 1)); in isQuoteCppDigitSeparator()
396 void Scanner::skipLine(const char *&First, const char *const End) { in skipLine() argument
398 assert(First <= End); in skipLine()
399 if (First == End) in skipLine()
403 skipNewline(First, End); in skipLine()
407 while (First != End && !isVerticalWhitespace(*First)) { in skipLine()
410 (*First == '\'' && !isQuoteCppDigitSeparator(Start, First, End))) { in skipLine()
413 skipRawString(First, End); in skipLine()
415 skipString(First, End); in skipLine()
420 if (*First != '/' || End - First < 2) { in skipLine()
428 skipLineComment(First, End); in skipLine()
439 skipBlockComment(First, End); in skipLine()
441 if (First == End) in skipLine()
445 unsigned Len = skipNewline(First, End); in skipLine()
452 const char *const End) { in skipDirective() argument
458 skipToNewlineRaw(First, End); in skipDirective()
460 skipLine(First, End); in skipDirective()
463 static void skipWhitespace(const char *&First, const char *const End) { in skipWhitespace() argument
465 assert(First <= End); in skipWhitespace()
466 skipOverSpaces(First, End); in skipWhitespace()
468 if (End - First < 2) in skipWhitespace()
472 skipNewline(++First, End); in skipWhitespace()
482 skipLineComment(First, End); in skipWhitespace()
491 skipBlockComment(First, End); in skipWhitespace()
496 const char *const End) { in lexModuleDirectiveBody() argument
499 const dependency_directives_scan::Token &Tok = lexToken(First, End); in lexModuleDirectiveBody()
508 skipWhitespace(First, End); in lexModuleDirectiveBody()
509 if (First == End) in lexModuleDirectiveBody()
514 skipNewline(First, End); in lexModuleDirectiveBody()
519 const char *const End) { in lexToken() argument
523 assert(First <= End); in lexToken()
532 Scanner::lexIncludeFilename(const char *&First, const char *const End) { in lexIncludeFilename() argument
536 assert(First <= End); in lexIncludeFilename()
544 void Scanner::lexPPDirectiveBody(const char *&First, const char *const End) { in lexPPDirectiveBody() argument
546 const dependency_directives_scan::Token &Tok = lexToken(First, End); in lexPPDirectiveBody()
578 Scanner::tryLexIdentifierOrSkipLine(const char *&First, const char *const End) { in tryLexIdentifierOrSkipLine() argument
579 const dependency_directives_scan::Token &Tok = lexToken(First, End); in tryLexIdentifierOrSkipLine()
582 skipLine(First, End); in tryLexIdentifierOrSkipLine()
589 StringRef Scanner::lexIdentifier(const char *&First, const char *const End) { in lexIdentifier() argument
590 std::optional<StringRef> Id = tryLexIdentifierOrSkipLine(First, End); in lexIdentifier()
596 const char *const End) { in isNextIdentifierOrSkipLine() argument
598 tryLexIdentifierOrSkipLine(First, End)) { in isNextIdentifierOrSkipLine()
601 skipLine(First, End); in isNextIdentifierOrSkipLine()
607 const char *const End) { in isNextTokenOrSkipLine() argument
608 const dependency_directives_scan::Token &Tok = lexToken(First, End); in isNextTokenOrSkipLine()
611 skipLine(First, End); in isNextTokenOrSkipLine()
617 const char *const End) { in tryLexStringLiteralOrSkipLine() argument
618 const dependency_directives_scan::Token &Tok = lexToken(First, End); in tryLexStringLiteralOrSkipLine()
621 skipLine(First, End); in tryLexStringLiteralOrSkipLine()
628 bool Scanner::lexAt(const char *&First, const char *const End) { in lexAt() argument
632 const dependency_directives_scan::Token &AtTok = lexToken(First, End); in lexAt()
636 if (!isNextIdentifierOrSkipLine("import", First, End)) in lexAt()
638 return lexModuleDirectiveBody(decl_at_import, First, End); in lexAt()
641 bool Scanner::lexModule(const char *&First, const char *const End) { in lexModule() argument
642 StringRef Id = lexIdentifier(First, End); in lexModule()
646 std::optional<StringRef> NextId = tryLexIdentifierOrSkipLine(First, End); in lexModule()
653 skipLine(First, End); in lexModule()
657 skipWhitespace(First, End); in lexModule()
666 skipLine(First, End); in lexModule()
670 (void)lexToken(First, End); in lexModule()
671 if (!tryLexIdentifierOrSkipLine(First, End)) in lexModule()
680 skipLine(First, End); in lexModule()
693 return lexModuleDirectiveBody(Kind, First, End); in lexModule()
696 bool Scanner::lex_Pragma(const char *&First, const char *const End) { in lex_Pragma() argument
697 if (!isNextTokenOrSkipLine(tok::l_paren, First, End)) in lex_Pragma()
700 std::optional<StringRef> Str = tryLexStringLiteralOrSkipLine(First, End); in lex_Pragma()
702 if (!Str || !isNextTokenOrSkipLine(tok::r_paren, First, End)) in lex_Pragma()
722 skipLine(First, End); in lex_Pragma()
731 bool Scanner::lexPragma(const char *&First, const char *const End) { in lexPragma() argument
732 std::optional<StringRef> FoundId = tryLexIdentifierOrSkipLine(First, End); in lexPragma()
744 lexPPDirectiveBody(First, End); in lexPragma()
750 skipLine(First, End); in lexPragma()
754 FoundId = tryLexIdentifierOrSkipLine(First, End); in lexPragma()
761 lexPPDirectiveBody(First, End); in lexPragma()
767 skipLine(First, End); in lexPragma()
772 if (!isNextIdentifierOrSkipLine("import", First, End)) in lexPragma()
776 lexPPDirectiveBody(First, End); in lexPragma()
781 bool Scanner::lexEndif(const char *&First, const char *const End) { in lexEndif() argument
794 skipLine(First, End); in lexEndif()
798 return lexDefault(pp_endif, First, End); in lexEndif()
802 const char *const End) { in lexDefault() argument
803 lexPPDirectiveBody(First, End); in lexDefault()
821 bool Scanner::lexPPLine(const char *&First, const char *const End) { in lexPPLine() argument
822 assert(First != End); in lexPPLine()
824 skipWhitespace(First, End); in lexPPLine()
825 assert(First <= End); in lexPPLine()
826 if (First == End) in lexPPLine()
830 skipLine(First, End); in lexPPLine()
831 assert(First <= End); in lexPPLine()
847 return lexAt(First, End); in lexPPLine()
850 return lexModule(First, End); in lexPPLine()
853 if (isNextIdentifierOrSkipLine("_Pragma", First, End)) in lexPPLine()
854 return lex_Pragma(First, End); in lexPPLine()
865 const dependency_directives_scan::Token &HashTok = lexToken(First, End); in lexPPLine()
870 skipLine(First, End); in lexPPLine()
871 assert(First <= End); in lexPPLine()
877 std::optional<StringRef> FoundId = tryLexIdentifierOrSkipLine(First, End); in lexPPLine()
884 return lexPragma(First, End); in lexPPLine()
903 skipDirective(Id, First, End); in lexPPLine()
908 return lexEndif(First, End); in lexPPLine()
916 if (lexIncludeFilename(First, End).is(tok::eod)) { in lexPPLine()
917 skipDirective(Id, First, End); in lexPPLine()
926 return lexDefault(Kind, First, End); in lexPPLine()
929 static void skipUTF8ByteOrderMark(const char *&First, const char *const End) { in skipUTF8ByteOrderMark() argument
930 if ((End - First) >= 3 && First[0] == '\xef' && First[1] == '\xbb' && in skipUTF8ByteOrderMark()
935 bool Scanner::scanImpl(const char *First, const char *const End) { in scanImpl() argument
936 skipUTF8ByteOrderMark(First, End); in scanImpl()
937 while (First != End) in scanImpl()
938 if (lexPPLine(First, End)) in scanImpl()