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 {