summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Libraries/LibCpp/Lexer.cpp2
-rw-r--r--Userland/Libraries/LibCpp/Lexer.h6
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;
};
}