diff libinterp/parse-tree/lex.h @ 16110:7302f8a4df83

use pointer for global lexical_feedback structure * lex.h, lex.ll (curr_lexer): Rename from lexer_flags. Declare as pointer. Change all uses. * lex.h (lexical_feedback): Make copy constructor and operator= private. * toplev.cc (main_loop): Protect existing and initialize new curr_lexer. * input.cc (get_debug_input): Likewise.
author John W. Eaton <jwe@octave.org>
date Tue, 26 Feb 2013 01:10:08 -0500
parents 3b791008b88e
children 3ec4f6488569
line wrap: on
line diff
--- a/libinterp/parse-tree/lex.h
+++ b/libinterp/parse-tree/lex.h
@@ -175,74 +175,6 @@
     init ();
   }
 
-  lexical_feedback (const lexical_feedback& lf)
-    : convert_spaces_to_comma (lf.convert_spaces_to_comma),
-      do_comma_insert (lf.do_comma_insert),
-      at_beginning_of_statement (lf.at_beginning_of_statement),
-      looking_at_anon_fcn_args (lf.looking_at_anon_fcn_args),
-      looking_at_return_list (lf.looking_at_return_list),
-      looking_at_parameter_list (lf.looking_at_parameter_list),
-      looking_at_decl_list (lf.looking_at_decl_list),
-      looking_at_initializer_expression (lf.looking_at_initializer_expression),
-      looking_at_matrix_or_assign_lhs (lf.looking_at_matrix_or_assign_lhs),
-      looking_for_object_index (lf.looking_for_object_index),
-      looking_at_indirect_ref (lf.looking_at_indirect_ref),
-      parsing_class_method (lf.parsing_class_method),
-      maybe_classdef_get_set_method (lf.maybe_classdef_get_set_method),
-      parsing_classdef (lf.parsing_classdef),
-      quote_is_transpose (lf.quote_is_transpose),
-      parser_end_of_input (lf.parser_end_of_input),
-      input_line_number (lf.input_line_number),
-      current_input_column (lf.current_input_column),
-      bracketflag (lf.bracketflag),
-      braceflag (lf.braceflag),
-      looping (lf.looping),
-      defining_func (lf.defining_func),
-      looking_at_function_handle (lf.looking_at_function_handle),
-      block_comment_nesting_level (lf.block_comment_nesting_level),
-      looking_at_object_index (lf.looking_at_object_index),
-      parsed_function_name (lf.parsed_function_name),
-      pending_local_variables (lf.pending_local_variables),
-      nesting_level (lf.nesting_level)
-  { }
-
-  lexical_feedback& operator = (const lexical_feedback& lf)
-  {
-    if (&lf != this)
-      {
-        convert_spaces_to_comma = lf.convert_spaces_to_comma;
-        do_comma_insert = lf.do_comma_insert;
-        at_beginning_of_statement = lf.at_beginning_of_statement;
-        looking_at_anon_fcn_args = lf.looking_at_anon_fcn_args;
-        looking_at_return_list = lf.looking_at_return_list;
-        looking_at_parameter_list = lf.looking_at_parameter_list;
-        looking_at_decl_list = lf.looking_at_decl_list;
-        looking_at_initializer_expression = lf.looking_at_initializer_expression;
-        looking_at_matrix_or_assign_lhs = lf.looking_at_matrix_or_assign_lhs;
-        looking_for_object_index = lf.looking_for_object_index;
-        looking_at_indirect_ref = lf.looking_at_indirect_ref;
-        parsing_class_method = lf.parsing_class_method;
-        maybe_classdef_get_set_method = lf.maybe_classdef_get_set_method;
-        parsing_classdef = lf.parsing_classdef;
-        quote_is_transpose = lf.quote_is_transpose;
-        parser_end_of_input = lf.parser_end_of_input;
-        input_line_number = lf.input_line_number;
-        current_input_column = lf.current_input_column;
-        bracketflag = lf.bracketflag;
-        braceflag = lf.braceflag;
-        looping = lf.looping;
-        defining_func = lf.defining_func;
-        looking_at_function_handle = lf.looking_at_function_handle;
-        block_comment_nesting_level = lf.block_comment_nesting_level,
-        looking_at_object_index = lf.looking_at_object_index;
-        parsed_function_name = lf.parsed_function_name;
-        pending_local_variables = lf.pending_local_variables;
-        nesting_level = lf.nesting_level;
-      }
-
-    return *this;
-  }
-
   ~lexical_feedback (void) { }
 
   void init (void)
@@ -347,6 +279,14 @@
   // Is the closest nesting level a square bracket, squiggly brace or
   // a paren?
   bbp_nesting_level nesting_level;
+
+private:
+
+  // No copying!
+
+  lexical_feedback (const lexical_feedback&);
+
+  lexical_feedback& operator = (const lexical_feedback&);
 };
 
 class
@@ -370,7 +310,7 @@
 extern std::string
 grab_comment_block (stream_reader& reader, bool at_bol, bool& eof);
 
-// Flags that need to be shared between the lexer and parser.
-extern lexical_feedback lexer_flags;
+// The current state of the lexer.
+extern lexical_feedback *curr_lexer;
 
 #endif