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 ();
   }