diff options
author | Itamar <itamar8910@gmail.com> | 2021-08-13 12:11:26 +0300 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-08-14 12:40:55 +0200 |
commit | c7d3a7789c6a14100ff0b4c8eaf2b0d7d111347c (patch) | |
tree | de3ddc915d94d7ebf9a775faa890f3694cd7b3fa | |
parent | 06e47ce7aa365dec0a6cc82cdb3560cbd5527fad (diff) | |
download | serenity-c7d3a7789c6a14100ff0b4c8eaf2b0d7d111347c.zip |
LibCpp: Add lexer option to ignore whitespace tokens
-rw-r--r-- | Userland/Libraries/LibCpp/Lexer.cpp | 2 | ||||
-rw-r--r-- | Userland/Libraries/LibCpp/Lexer.h | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/Userland/Libraries/LibCpp/Lexer.cpp b/Userland/Libraries/LibCpp/Lexer.cpp index 56ab1afd6c..2edb5b4863 100644 --- a/Userland/Libraries/LibCpp/Lexer.cpp +++ b/Userland/Libraries/LibCpp/Lexer.cpp @@ -222,6 +222,8 @@ Vector<Token> Lexer::lex() token_start_position = m_position; }; auto commit_token = [&](auto type) { + if (m_options.ignore_whitespace && type == Token::Type::Whitespace) + return; tokens.empend(type, token_start_position, m_previous_position, m_input.substring_view(token_start_index, m_index - token_start_index)); }; diff --git a/Userland/Libraries/LibCpp/Lexer.h b/Userland/Libraries/LibCpp/Lexer.h index bbee2bbf9f..88cd64d4a8 100644 --- a/Userland/Libraries/LibCpp/Lexer.h +++ b/Userland/Libraries/LibCpp/Lexer.h @@ -18,6 +18,8 @@ public: Vector<Token> lex(); + void set_ignore_whitespace(bool value) { m_options.ignore_whitespace = value; } + private: char peek(size_t offset = 0) const; char consume(); @@ -26,6 +28,10 @@ private: size_t m_index { 0 }; Position m_previous_position { 0, 0 }; Position m_position { 0, 0 }; + + struct Options { + bool ignore_whitespace { false }; + } m_options; }; } |