comparison libinterp/parse-tree/oct-parse.in.yy @ 17731:f79bf671a493

eliminate global LEXER variable * input.h, input.cc (octave_base_reader::lexer): New member variable. (octave_base_reader::octave_base_reader): Initialize lexer. (octave_base_reader::octave_base_reader (const octave_base_reader&)): Also copy pflag and lexer. (octave_base_reader::reading_fcn_file, octave_base_reader::reading_classdef_file, octave_base_reader::reading_script_file): New functions. (octave_base_reader::do_input_echo): Call reading_script file instead of using global LEXER variable. (get_user_input): Don't user global LEXER variable. Only check interactive and forced_interactive to decide whether to temporarily set forced_interactive to true. (octave_terminal_reader::octave_terminal_reader, octave_file_reader::octave_file_reader, octave_eval_string_reader::octave_eval_string_reader, octave_input_reader::octave_input_reader): New optional arg, lexer. * toplev.cc (main_loop): Don't user global LEXER variable. Eliminate unused unwind_protect frame. * lex.h, lex.ll (octave_base_lexer::cleanup): Delete unused function. (octave_lexer::octave_lexer): Pass this to input_reader initializer. * parse.h, oct-parse.in.yy (octave_base_parser::init): Delete unneded function. (octave_base_parser::octave_base_parser, octave_push_parser::init, octave_push_parser::octave_push_parser): Don't call octave_base_parser::init. (eval_string): Don't use global LEXER variable. Eliminate unused unwind_protect frame.
author John W. Eaton <jwe@octave.org>
date Tue, 22 Oct 2013 18:43:36 -0400
parents efbe746f8fa8
children af5ad573c665
comparison
equal deleted inserted replaced
17730:580990c2ce04 17731:f79bf671a493
1642 delete stmt_list; 1642 delete stmt_list;
1643 1643
1644 delete &lexer; 1644 delete &lexer;
1645 } 1645 }
1646 1646
1647 void octave_base_parser::init (void)
1648 {
1649 LEXER = &lexer;
1650 }
1651
1652 void 1647 void
1653 octave_base_parser::reset (void) 1648 octave_base_parser::reset (void)
1654 { 1649 {
1655 endfunction_found = false; 1650 endfunction_found = false;
1656 autoloading = false; 1651 autoloading = false;
3422 3417
3423 void 3418 void
3424 octave_push_parser::init (void) 3419 octave_push_parser::init (void)
3425 { 3420 {
3426 parser_state = yypstate_new (); 3421 parser_state = yypstate_new ();
3427
3428 octave_base_parser::init ();
3429 } 3422 }
3430 3423
3431 // Parse input from INPUT. Pass TRUE for EOF if the end of INPUT should 3424 // Parse input from INPUT. Pass TRUE for EOF if the end of INPUT should
3432 // finish the parse. 3425 // finish the parse.
3433 3426
4239 eval_string (const std::string& eval_str, bool silent, 4232 eval_string (const std::string& eval_str, bool silent,
4240 int& parse_status, int nargout) 4233 int& parse_status, int nargout)
4241 { 4234 {
4242 octave_value_list retval; 4235 octave_value_list retval;
4243 4236
4244 unwind_protect frame;
4245
4246 // octave_base_parser constructor sets this for us.
4247 frame.protect_var (LEXER);
4248
4249 octave_parser parser (eval_str); 4237 octave_parser parser (eval_str);
4250 4238
4251 do 4239 do
4252 { 4240 {
4253 parser.reset (); 4241 parser.reset ();
4254 4242
4255 parse_status = parser.run (); 4243 parse_status = parser.run ();
4256
4257 // Unmark forced variables.
4258 frame.run (1);
4259 4244
4260 if (parse_status == 0) 4245 if (parse_status == 0)
4261 { 4246 {
4262 if (parser.stmt_list) 4247 if (parser.stmt_list)
4263 { 4248 {