From 165a0082c44d304e32bbc47874730afa34e0a4a9 Mon Sep 17 00:00:00 2001 From: Itamar Date: Fri, 20 Aug 2021 17:00:49 +0300 Subject: LibCpp: Allow whitespace between # and preprocessor directive For example, '# include ' is now supported by the Lexer. --- Userland/Libraries/LibCpp/Lexer.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'Userland/Libraries/LibCpp/Lexer.cpp') diff --git a/Userland/Libraries/LibCpp/Lexer.cpp b/Userland/Libraries/LibCpp/Lexer.cpp index 2edb5b4863..ea8367d0dc 100644 --- a/Userland/Libraries/LibCpp/Lexer.cpp +++ b/Userland/Libraries/LibCpp/Lexer.cpp @@ -528,13 +528,16 @@ Vector Lexer::lex() if (ch == '#') { begin_token(); consume(); + while (AK::is_ascii_space(peek())) + consume(); + size_t directive_start = m_index; if (is_valid_first_character_of_identifier(peek())) while (peek() && is_valid_nonfirst_character_of_identifier(peek())) consume(); - auto directive = StringView(m_input.characters_without_null_termination() + token_start_index, m_index - token_start_index); - if (directive == "#include") { + auto directive = StringView(m_input.characters_without_null_termination() + directive_start, m_index - directive_start); + if (directive == "include"sv) { commit_token(Token::Type::IncludeStatement); if (is_ascii_space(peek())) { -- cgit v1.2.3