Mercurial > hg > octave-nkf
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 { |