Mercurial > octave
comparison libinterp/corefcn/interpreter.cc @ 22196:dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
* oct-parse.in.yy, parse.h: Move parser classes to octave namespace.
* lex.ll, lex.h: Move lexer classes to octave namespace.
* pt-eval.h, pt-eval.cc: Move evaluator class to octave namespace.
Don't define global current evaluator pointer here.
* debug.cc, error.cc, input.cc, input.h, ls-mat-ascii.cc, pt-jit.cc,
sighandlers.cc, utils.cc, variables.cc, ov-usr-fcn.cc, pt-assign.cc,
pt-exp.h, pt-id.cc: Update for namespaces.
* interpreter.cc, interpreter.h (current_evaluator): New global var.
(interpreter::m_evaluator): New data member.
(interpreter::~interpreter): Delete evaluator.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 12 Jul 2016 14:28:07 -0400 |
parents | 9aff1ce307b1 |
children | 93b3cdd36854 |
comparison
equal
deleted
inserted
replaced
22195:93ed9396f2c3 | 22196:dd992fd74fce |
---|---|
524 } | 524 } |
525 } | 525 } |
526 | 526 |
527 namespace octave | 527 namespace octave |
528 { | 528 { |
529 tree_evaluator *current_evaluator = 0; | |
530 | |
529 interpreter::interpreter (application *app_context, bool embedded) | 531 interpreter::interpreter (application *app_context, bool embedded) |
530 : m_app_context (app_context), m_embedded (embedded), | 532 : m_app_context (app_context), m_evaluator (new tree_evaluator (this)), |
531 m_interactive (false), m_quitting_gracefully (false) | 533 m_embedded (embedded), m_interactive (false), |
534 m_quitting_gracefully (false) | |
532 { | 535 { |
536 current_evaluator = m_evaluator; | |
537 | |
533 cmdline_options options = m_app_context->options (); | 538 cmdline_options options = m_app_context->options (); |
534 | 539 |
535 // Matlab uses "C" locale for LC_NUMERIC class regardless of local setting | 540 // Matlab uses "C" locale for LC_NUMERIC class regardless of local setting |
536 setlocale (LC_NUMERIC, "C"); | 541 setlocale (LC_NUMERIC, "C"); |
537 setlocale (LC_TIME, "C"); | 542 setlocale (LC_TIME, "C"); |
643 initialize_load_path (options.set_initial_path ()); | 648 initialize_load_path (options.set_initial_path ()); |
644 | 649 |
645 initialize_history (options.read_history_file ()); | 650 initialize_history (options.read_history_file ()); |
646 } | 651 } |
647 | 652 |
653 interpreter::~interpreter (void) | |
654 { | |
655 current_evaluator = 0; | |
656 | |
657 delete m_evaluator; | |
658 } | |
659 | |
648 int interpreter::execute (void) | 660 int interpreter::execute (void) |
649 { | 661 { |
650 cmdline_options options = m_app_context->options (); | 662 cmdline_options options = m_app_context->options (); |
651 | 663 |
652 if (m_interactive && ! options.inhibit_startup_message ()) | 664 if (m_interactive && ! options.inhibit_startup_message ()) |
856 | 868 |
857 octave_initialized = true; | 869 octave_initialized = true; |
858 | 870 |
859 // The big loop. | 871 // The big loop. |
860 | 872 |
861 octave_lexer *lxr = (octave::application::interactive () | 873 octave::lexer *lxr = (octave::application::interactive () |
862 ? new octave_lexer () | 874 ? new octave::lexer () |
863 : new octave_lexer (stdin)); | 875 : new octave::lexer (stdin)); |
864 | 876 |
865 octave_parser parser (*lxr); | 877 octave::parser parser (*lxr); |
866 | 878 |
867 int retval = 0; | 879 int retval = 0; |
868 do | 880 do |
869 { | 881 { |
870 try | 882 try |
872 reset_error_handler (); | 884 reset_error_handler (); |
873 | 885 |
874 parser.reset (); | 886 parser.reset (); |
875 | 887 |
876 if (symbol_table::at_top_level ()) | 888 if (symbol_table::at_top_level ()) |
877 tree_evaluator::reset_debug_state (); | 889 octave::tree_evaluator::reset_debug_state (); |
878 | 890 |
879 retval = parser.run (); | 891 retval = parser.run (); |
880 | 892 |
881 if (retval == 0) | 893 if (retval == 0) |
882 { | 894 { |