Mercurial > octave
changeset 27443:075602880383
store ref to interpreter in lexical_feedback and symbol_table_context classes
* lex.h (lexical_feedback::m_interpreter): New data member. Store
interpreter reference here instead of in base_lexer class.
(symbol_table_context::m_interpreter): New data member.
* lex.ll: Don't include interpreter-private.h.
(lexical_feedback::symbol_table_context::curr_scope):
Use m_interpreter to access current scope if needed.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 25 Sep 2019 13:44:06 -0400 |
parents | 6e4519df0be2 |
children | 160930a3e5ee |
files | libinterp/parse-tree/lex.h libinterp/parse-tree/lex.ll |
diffstat | 2 files changed, 13 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/libinterp/parse-tree/lex.h Wed Sep 25 13:02:50 2019 -0400 +++ b/libinterp/parse-tree/lex.h Wed Sep 25 13:44:06 2019 -0400 @@ -55,8 +55,8 @@ { public: - symbol_table_context (void) - : m_frame_stack () { } + symbol_table_context (interpreter& interp) + : m_interpreter (interp), m_frame_stack () { } ~symbol_table_context (void) { clear (); } @@ -78,6 +78,8 @@ private: + interpreter& m_interpreter; + std::deque<symbol_scope> m_frame_stack; }; @@ -257,8 +259,9 @@ std::deque<token *> m_buffer; }; - lexical_feedback (void) - : m_end_of_input (false), + lexical_feedback (interpreter& interp) + : m_interpreter (interp), + m_end_of_input (false), m_allow_command_syntax (true), m_at_beginning_of_statement (true), m_looking_at_anon_fcn_args (false), @@ -306,7 +309,7 @@ m_looking_at_object_index (), m_parsed_function_name (), m_pending_local_variables (), - m_symtab_context (), + m_symtab_context (interp), m_nesting_level (), m_tokens () { @@ -344,6 +347,8 @@ void mark_as_variable (const std::string& nm); void mark_as_variables (const std::list<std::string>& lst); + interpreter& m_interpreter; + // true means that we have encountered eof on the input stream. bool m_end_of_input; @@ -593,8 +598,8 @@ }; base_lexer (interpreter& interp) - : lexical_feedback (), m_scanner (nullptr), m_input_buf (), - m_comment_buf (), m_interpreter (interp) + : lexical_feedback (interp), m_scanner (nullptr), m_input_buf (), + m_comment_buf () { init (); } @@ -704,9 +709,6 @@ // Object that collects comment text. comment_buffer m_comment_buf; - // Interpreter that contains us, if any. - interpreter& m_interpreter; - virtual void increment_promptflag (void) = 0; virtual void decrement_promptflag (void) = 0;
--- a/libinterp/parse-tree/lex.ll Wed Sep 25 13:02:50 2019 -0400 +++ b/libinterp/parse-tree/lex.ll Wed Sep 25 13:44:06 2019 -0400 @@ -109,7 +109,6 @@ #include "error.h" #include "errwarn.h" #include "input.h" -#include "interpreter-private.h" #include "interpreter.h" #include "lex.h" #include "octave.h" @@ -2128,12 +2127,7 @@ lexical_feedback::symbol_table_context::curr_scope (void) const { if (empty ()) - { - symbol_scope scope - = __get_current_scope__ ("lexical_feedback::symbol_table_context::curr_scope"); - - return scope; - } + return m_interpreter.get_current_scope (); else return m_frame_stack.front (); }