Mercurial > jwe > qt-gui-with-push-parser
diff interpreter.cpp @ 12:894be158b32d
define parser as a class and eliminate some global variables
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Thu, 23 May 2019 17:57:20 -0400 |
parents | 822a2fe5bb51 |
children | 1e5a1e15fa56 |
line wrap: on
line diff
--- a/interpreter.cpp Thu May 23 13:42:57 2019 -0400 +++ b/interpreter.cpp Thu May 23 17:57:20 2019 -0400 @@ -14,7 +14,8 @@ interpreter *interpreter::the_interpreter = nullptr; interpreter::interpreter (void) - : m_error_handler ([] (const char *msg) + : m_parser (*this), + m_error_handler ([] (const char *msg) { std::cerr << "error: " << msg << std::endl; }), m_result_handler ([] (double value) { std::cout << "ans = " << value << std::endl; }) @@ -26,21 +27,14 @@ } the_interpreter = this; - - parser::init (); - } - - interpreter::~interpreter (void) - { - parser::fini (); } int interpreter::parse_and_execute (const std::string& line) { - return parser::parse_and_execute (line); + return m_parser.parse_and_execute (line); } - void interpreter::emit_result (double value) + void interpreter::emit_result (double value) const { // Simulate a delay in calculation. sleep (1); @@ -48,7 +42,7 @@ m_result_handler (value); } - void interpreter::emit_error (const char *msg) + void interpreter::emit_error (const char *msg) const { m_error_handler (msg); }