LibJS: Allow lexer to run without logging errors

This commit is contained in:
AnotherTest 2020-04-05 16:19:25 +04:30 committed by Andreas Kling
parent c2f8a5fffa
commit cdb627a516
Notes: sideshowbarker 2024-07-19 07:53:08 +09:00
2 changed files with 9 additions and 1 deletions

View file

@ -204,7 +204,8 @@ bool Lexer::is_numeric_literal_start() const
void Lexer::syntax_error(const char* msg)
{
m_has_errors = true;
fprintf(stderr, "Syntax Error: %s (line: %zu, column: %zu)\n", msg, m_line_number, m_line_column);
if (m_log_errors)
fprintf(stderr, "Syntax Error: %s (line: %zu, column: %zu)\n", msg, m_line_number, m_line_column);
}
Token Lexer::next()

View file

@ -37,6 +37,12 @@ namespace JS {
class Lexer {
public:
explicit Lexer(StringView source);
Lexer(StringView source, bool log_errors)
: Lexer(source)
{
m_log_errors = log_errors;
}
Token next();
bool has_errors() const { return m_has_errors; }
@ -60,6 +66,7 @@ private:
bool m_has_errors = false;
size_t m_line_number = 1;
size_t m_line_column = 1;
bool m_log_errors = true;
static HashMap<String, TokenType> s_keywords;
static HashMap<String, TokenType> s_three_char_tokens;