Procházet zdrojové kódy

LibJS: Allow lexer to run without logging errors

AnotherTest před 5 roky
rodič
revize
cdb627a516
2 změnil soubory, kde provedl 9 přidání a 1 odebrání
  1. 2 1
      Libraries/LibJS/Lexer.cpp
  2. 7 0
      Libraries/LibJS/Lexer.h

+ 2 - 1
Libraries/LibJS/Lexer.cpp

@@ -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()

+ 7 - 0
Libraries/LibJS/Lexer.h

@@ -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;