parser error message modified and bug 14039 fixed
[scilab.git] / scilab / modules / ast / src / cpp / parse / parser.cpp
index c0af39a..9be6c35 100644 (file)
@@ -176,6 +176,19 @@ void Parser::parse(const wchar_t *command)
     FREE(pstCommand);
 }
 
+bool Parser::stopOnFirstError(void)
+{
+    return ParserSingleInstance::stopOnFirstError();
+}
+void Parser::enableStopOnFirstError(void)
+{
+    ParserSingleInstance::enableStopOnFirstError();
+}
+void Parser::disableStopOnFirstError(void)
+{
+    ParserSingleInstance::disableStopOnFirstError();
+}
+
 /** \brief parse the given file command */
 void ParserSingleInstance::parse(const char *command)
 {
@@ -283,6 +296,11 @@ std::wstring& ParserSingleInstance::getErrorMessage(void)
 
 void ParserSingleInstance::appendErrorMessage(const std::wstring& message)
 {
+    if (ParserSingleInstance::stopOnFirstError() && _error_message.empty() == false)
+    {
+        return;
+    }
+
     _error_message += message;
 }
 
@@ -316,7 +334,7 @@ std::wstring ParserSingleInstance::_file_name;
 std::wstring ParserSingleInstance::_prog_name;
 std::wstring ParserSingleInstance::_error_message;
 bool ParserSingleInstance::_strict_mode = false;
-bool ParserSingleInstance::_stop_on_first_error = false;
+bool ParserSingleInstance::_stop_on_first_error = true;
 ast::Exp* ParserSingleInstance::_the_program = nullptr;
 Parser::ParserStatus ParserSingleInstance::_exit_status = Parser::Succeded;
 std::list<Parser::ControlStatus> ParserSingleInstance::_control_status;