annotate libinterp/parse-tree/pt-eval.h @ 26686:581d01526b34

eliminate unnecessary tree_funcall class The tree_funcall class was only used to handled generated calls to internal functions used by classdef superclass reference and metaclass query operations. This change replaces those function calls by something more direct. * pt-classdef.h, pt-classdef.cc (tree_superclass_ref, tree_metaclass_query): New classes. * pt-walk.h (tree_walker::visit_tree_funcall): Delete. Update all derived classes. (tree_walker::visit_superclass_ref, tree_walker::visit_metaclass_query): New virtual functions. * pt-pr-code.h, pt-pr-code.cc (tree_print_code::visit (tree_print_code::visit_superclass_ref, tree_print_code::visit_metaclass_query): Correctly print these parse tree elements. * oct-parse.yy (superclass_identifier, meta_identifier): Use new tree_superclass_ref tree_metaclass_query classes instead of tree_funcall to represent these language elements. * lex.ll (base_lexer::handle_superclass_identifier): Attempt to make intent of code clearer. Save line and column info in token. * pt-eval.h, pt-eval.cc (tree_evaluator::visit_funcall): Delete. (tree_evaluator::visit_superclass_ref, tree_evaluator::visit_metaclass_query): New functions. Handle superclass reference and metaclass query operations more directly. * ov-classdef.h, ov-classdef.cc (F__superclass_reference__, F__meta_class_query__): Delete. (class octave_classdef_superclass_ref): Work directly with method or object and class names as strings instead of octave_value objects. (octave_classdef::superclass_ref, octave_classdef::metaclass_query): New static functions. * token.h, token.cc: Attempt to use clearer names for superclass reference tokens. * pt-funcall.h, pt-funcall.cc: Delete. * libinterp/parse-tree/module.mk: Update. * pt-all.h: Update.
author John W. Eaton <jwe@octave.org>
date Thu, 07 Feb 2019 00:03:55 +0000
parents cf9e10ce3351
children 6e9034836239
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
1 /*
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
2
26376
00f796120a6d maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents: 26113
diff changeset
3 Copyright (C) 2009-2019 John W. Eaton
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
4
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
5 This file is part of Octave.
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
6
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24362
diff changeset
7 Octave is free software: you can redistribute it and/or modify it
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
8 under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24362
diff changeset
9 the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
10 (at your option) any later version.
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
11
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
12 Octave is distributed in the hope that it will be useful, but
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
13 WITHOUT ANY WARRANTY; without even the implied warranty of
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22407
diff changeset
15 GNU General Public License for more details.
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
16
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24362
diff changeset
19 <https://www.gnu.org/licenses/>.
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
20
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
21 */
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
22
20791
f7084eae3318 maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents: 20535
diff changeset
23 #if ! defined (octave_pt_eval_h)
17822
ebb3ef964372 maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents: 17744
diff changeset
24 #define octave_pt_eval_h 1
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
25
21244
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 20940
diff changeset
26 #include "octave-config.h"
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 20940
diff changeset
27
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
28 #include <list>
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
29 #include <set>
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
30 #include <stack>
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
31 #include <string>
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
32
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
33 #include "bp-table.h"
23553
14723784b9f2 don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents: 23532
diff changeset
34 #include "call-stack.h"
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
35 #include "ov.h"
20940
48b2ad5ee801 maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents: 20824
diff changeset
36 #include "ovl.h"
23753
c3828bd031cd move profiler inside evaluator and inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 23750
diff changeset
37 #include "profiler.h"
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
38 #include "pt-exp.h"
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
39 #include "pt-walk.h"
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
40
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
41 class octave_user_code;
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
42
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
43 namespace octave
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
44 {
24362
3fc24b792a24 avoid including symtab.h, symscope.h, or symrec.h unnecessarily
John W. Eaton <jwe@octave.org>
parents: 24361
diff changeset
45 class symbol_scope;
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
46 class tree_decl_elt;
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
47 class tree_expression;
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
48
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
49 class interpreter;
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
50 class unwind_protect;
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
51
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
52 enum result_type
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
53 {
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
54 RT_UNDEFINED = 0,
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
55 RT_VALUE = 1,
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
56 RT_VALUE_LIST = 2
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
57 };
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
58
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
59 // How to evaluate the code that the parse trees represent.
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
60
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
61 class OCTINTERP_API tree_evaluator : public tree_walker
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
62 {
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
63 public:
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
64
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
65 enum echo_state
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
66 {
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
67 ECHO_OFF = 0,
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
68 ECHO_SCRIPTS = 1,
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
69 ECHO_FUNCTIONS = 2,
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
70 ECHO_ALL = 4
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
71 };
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
72
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
73 template <typename T>
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
74 class value_stack
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
75 {
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
76 public:
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
77
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
78 value_stack (void) = default;
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
79
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
80 value_stack (const value_stack&) = default;
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
81
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
82 value_stack& operator = (const value_stack&) = default;
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
83
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
84 ~value_stack (void) = default;
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
85
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
86 void push (const T& val) { m_stack.push (val); }
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
87
23481
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
88 void pop (void)
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
89 {
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
90 m_stack.pop ();
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
91 }
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
92
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
93 T val_pop (void)
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
94 {
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
95 T retval = m_stack.top ();
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
96 m_stack.pop ();
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
97 return retval;
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
98 }
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
99
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
100 T top (void) const
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
101 {
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
102 return m_stack.top ();
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
103 }
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
104
23481
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
105 size_t size (void) const
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
106 {
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
107 return m_stack.size ();
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
108 }
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
109
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
110 bool empty (void) const
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
111 {
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
112 return m_stack.empty ();
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
113 }
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
114
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
115 void clear (void)
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
116 {
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
117 while (! m_stack.empty ())
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
118 m_stack.pop ();
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
119 }
23458
0f4ed33886de maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents: 23457
diff changeset
120
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
121 private:
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
122
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
123 std::stack<T> m_stack;
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
124 };
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
125
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
126 typedef void (*decl_elt_init_fcn) (tree_decl_elt&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
127
23532
084245f9bd03 pass reference to evaluator to octave_function call methods
John W. Eaton <jwe@octave.org>
parents: 23482
diff changeset
128 tree_evaluator (interpreter& interp)
25401
6f6479125d80 eliminate some globals from tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 25400
diff changeset
129 : m_interpreter (interp), m_statement_context (SC_OTHER),
6f6479125d80 eliminate some globals from tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 25400
diff changeset
130 m_result_type (RT_UNDEFINED), m_expr_result_value (),
6f6479125d80 eliminate some globals from tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 25400
diff changeset
131 m_expr_result_value_list (), m_lvalue_list_stack (),
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
132 m_nargout_stack (), m_bp_table (*this), m_call_stack (*this),
25402
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
133 m_profiler (), m_current_frame (0), m_debug_mode (false),
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
134 m_quiet_breakpoint_flag (false), m_max_recursion_depth (256),
26087
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
135 m_whos_line_format (" %a:4; %ln:6; %cs:16:6:1; %rb:12; %lc:-1;\n"),
25377
b75d55b3dbb7 maint: Merge stable to default.
John W. Eaton <jwe@octave.org>
parents: 25360 25372
diff changeset
136 m_silent_functions (false), m_string_fill_char (' '),
b75d55b3dbb7 maint: Merge stable to default.
John W. Eaton <jwe@octave.org>
parents: 25360 25372
diff changeset
137 m_PS4 ("+ "), m_dbstep_flag (0), m_echo (ECHO_OFF),
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
138 m_echo_state (false), m_echo_file_name (), m_echo_file_pos (1),
25382
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
139 m_echo_files (), m_in_loop_command (false),
25403
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
140 m_breaking (0), m_continuing (0), m_returning (0),
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
141 m_indexed_object (nullptr), m_index_position (0),
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
142 m_num_indices (0)
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
143 { }
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
144
22869
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
145 // No copying!
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
146
22869
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
147 tree_evaluator (const tree_evaluator&) = delete;
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
148
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
149 tree_evaluator& operator = (const tree_evaluator&) = delete;
f75d289645ec make deleted functions public
John W. Eaton <jwe@octave.org>
parents: 22868
diff changeset
150
22868
87e3163f6c87 use c++11 "= default" syntax for declaration of trivial destructors
John W. Eaton <jwe@octave.org>
parents: 22865
diff changeset
151 ~tree_evaluator (void) = default;
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
152
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
153 bool at_top_level (void) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
154
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
155 void reset (void);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
156
25404
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
157 int repl (bool interactive);
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
158
26113
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26094
diff changeset
159 octave_value_list eval_string (const std::string& eval_str, bool silent,
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26094
diff changeset
160 int& parse_status, int nargout);
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26094
diff changeset
161
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26094
diff changeset
162 octave_value eval_string (const std::string& eval_str, bool silent,
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26094
diff changeset
163 int& parse_status);
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26094
diff changeset
164
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26094
diff changeset
165 octave_value_list eval_string (const octave_value& arg, bool silent,
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26094
diff changeset
166 int& parse_status, int nargout);
8a15f3bace49 move eval_string inside interpreter/evaluator class
John W. Eaton <jwe@octave.org>
parents: 26094
diff changeset
167
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
168 void visit_anon_fcn_handle (tree_anon_fcn_handle&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
169
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
170 void visit_argument_list (tree_argument_list&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
171
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
172 void visit_binary_expression (tree_binary_expression&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
173
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
174 void visit_boolean_expression (tree_boolean_expression&);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
175
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
176 void visit_compound_binary_expression (tree_compound_binary_expression&);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
177
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
178 void visit_break_command (tree_break_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
179
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
180 void visit_colon_expression (tree_colon_expression&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
181
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
182 void visit_continue_command (tree_continue_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
183
23469
2699c5974844 handle global and persistent in tree_decl_command, not as separate classes
John W. Eaton <jwe@octave.org>
parents: 23458
diff changeset
184 void visit_decl_command (tree_decl_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
185
23469
2699c5974844 handle global and persistent in tree_decl_command, not as separate classes
John W. Eaton <jwe@octave.org>
parents: 23458
diff changeset
186 void visit_decl_init_list (tree_decl_init_list&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
187
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
188 void visit_decl_elt (tree_decl_elt&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
189
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
190 void visit_simple_for_command (tree_simple_for_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
191
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
192 void visit_complex_for_command (tree_complex_for_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
193
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
194 void visit_octave_user_script (octave_user_script&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
195
25400
d423ce60f5c8 evaluate script and function code in tree_evaluator methods
John W. Eaton <jwe@octave.org>
parents: 25382
diff changeset
196 octave_value_list
d423ce60f5c8 evaluate script and function code in tree_evaluator methods
John W. Eaton <jwe@octave.org>
parents: 25382
diff changeset
197 execute_user_script (octave_user_script& user_script, int nargout,
d423ce60f5c8 evaluate script and function code in tree_evaluator methods
John W. Eaton <jwe@octave.org>
parents: 25382
diff changeset
198 const octave_value_list& args);
d423ce60f5c8 evaluate script and function code in tree_evaluator methods
John W. Eaton <jwe@octave.org>
parents: 25382
diff changeset
199
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
200 void visit_octave_user_function (octave_user_function&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
201
25400
d423ce60f5c8 evaluate script and function code in tree_evaluator methods
John W. Eaton <jwe@octave.org>
parents: 25382
diff changeset
202 octave_value_list
d423ce60f5c8 evaluate script and function code in tree_evaluator methods
John W. Eaton <jwe@octave.org>
parents: 25382
diff changeset
203 execute_user_function (octave_user_function& user_function, int nargout,
d423ce60f5c8 evaluate script and function code in tree_evaluator methods
John W. Eaton <jwe@octave.org>
parents: 25382
diff changeset
204 const octave_value_list& args);
d423ce60f5c8 evaluate script and function code in tree_evaluator methods
John W. Eaton <jwe@octave.org>
parents: 25382
diff changeset
205
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
206 void visit_octave_user_function_header (octave_user_function&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
207
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
208 void visit_octave_user_function_trailer (octave_user_function&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
209
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
210 void visit_function_def (tree_function_def&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
211
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
212 void visit_identifier (tree_identifier&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
213
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
214 void visit_if_clause (tree_if_clause&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
215
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
216 void visit_if_command (tree_if_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
217
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
218 void visit_if_command_list (tree_if_command_list&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
219
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
220 void visit_index_expression (tree_index_expression&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
221
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
222 void visit_matrix (tree_matrix&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
223
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
224 void visit_cell (tree_cell&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
225
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
226 void visit_multi_assignment (tree_multi_assignment&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
227
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
228 void visit_no_op_command (tree_no_op_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
229
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
230 void visit_constant (tree_constant&);
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
231
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
232 void visit_fcn_handle (tree_fcn_handle&);
15035
a820a990968e new tree_funcall class
John W. Eaton <jwe@octave.org>
parents: 14294
diff changeset
233
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
234 void visit_parameter_list (tree_parameter_list&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
235
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
236 void visit_postfix_expression (tree_postfix_expression&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
237
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
238 void visit_prefix_expression (tree_prefix_expression&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
239
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
240 void visit_return_command (tree_return_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
241
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
242 void visit_return_list (tree_return_list&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
243
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
244 void visit_simple_assignment (tree_simple_assignment&);
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
245
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
246 void visit_statement (tree_statement&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
247
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
248 void visit_statement_list (tree_statement_list&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
249
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
250 void visit_switch_case (tree_switch_case&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
251
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
252 void visit_switch_case_list (tree_switch_case_list&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
253
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
254 void visit_switch_command (tree_switch_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
255
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
256 void visit_try_catch_command (tree_try_catch_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
257
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
258 void do_unwind_protect_cleanup_code (tree_statement_list *list);
10066
2cd940306a06 make unwind_protect frames local
Jaroslav Hajek <highegg@gmail.com>
parents: 9484
diff changeset
259
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
260 void visit_unwind_protect_command (tree_unwind_protect_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
261
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
262 void visit_while_command (tree_while_command&);
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
263 void visit_do_until_command (tree_do_until_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
264
26686
581d01526b34 eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents: 26661
diff changeset
265 void visit_superclass_ref (tree_superclass_ref&);
581d01526b34 eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents: 26661
diff changeset
266 void visit_metaclass_query (tree_metaclass_query&);
581d01526b34 eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents: 26661
diff changeset
267
23702
d396b5fd9199 move bind_ans to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23696
diff changeset
268 void bind_ans (const octave_value& val, bool print);
d396b5fd9199 move bind_ans to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23696
diff changeset
269
23705
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
270 bool statement_printing_enabled (void);
10186
095a1e670e68 make dbstep work with keyboard function
John W. Eaton <jwe@octave.org>
parents: 10160
diff changeset
271
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
272 void reset_debug_state (void);
15606
fb9dffe5fbfb The silent_functions flag no longer modifies the parse tree
Max Brister <max@2bass.com>
parents: 15195
diff changeset
273
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
274 void reset_debug_state (bool mode);
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
275
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
276 void set_dbstep_flag (int step) { m_dbstep_flag = step; }
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
277
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
278 // Possible types of evaluation contexts.
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
279 enum stmt_list_type
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
280 {
25401
6f6479125d80 eliminate some globals from tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 25400
diff changeset
281 SC_FUNCTION, // function body
6f6479125d80 eliminate some globals from tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 25400
diff changeset
282 SC_SCRIPT, // script file
6f6479125d80 eliminate some globals from tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 25400
diff changeset
283 SC_OTHER // command-line input or eval string
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
284 };
11304
c9fefa096ce2 echo commands in scripts
John W. Eaton <jwe@octave.org>
parents: 10578
diff changeset
285
23481
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
286 Matrix ignored_fcn_outputs (void) const;
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
287
24349
4ced2bfd737e deprecate defun_isargout functions
John W. Eaton <jwe@octave.org>
parents: 24270
diff changeset
288 bool isargout (int nargout, int iout) const;
4ced2bfd737e deprecate defun_isargout functions
John W. Eaton <jwe@octave.org>
parents: 24270
diff changeset
289
4ced2bfd737e deprecate defun_isargout functions
John W. Eaton <jwe@octave.org>
parents: 24270
diff changeset
290 void isargout (int nargout, int nout, bool *isargout) const;
4ced2bfd737e deprecate defun_isargout functions
John W. Eaton <jwe@octave.org>
parents: 24270
diff changeset
291
4ced2bfd737e deprecate defun_isargout functions
John W. Eaton <jwe@octave.org>
parents: 24270
diff changeset
292 const std::list<octave_lvalue> * lvalue_list (void) const
23481
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
293 {
24349
4ced2bfd737e deprecate defun_isargout functions
John W. Eaton <jwe@octave.org>
parents: 24270
diff changeset
294 return (m_lvalue_list_stack.empty ()
4ced2bfd737e deprecate defun_isargout functions
John W. Eaton <jwe@octave.org>
parents: 24270
diff changeset
295 ? nullptr : m_lvalue_list_stack.top ());
23481
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
296 }
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
297
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
298 void push_result (const octave_value& val)
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
299 {
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
300 m_result_type = RT_VALUE;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
301 m_expr_result_value = val;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
302 }
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
303
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
304 void push_result (const octave_value_list& vals)
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
305 {
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
306 m_result_type = RT_VALUE_LIST;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
307 m_expr_result_value_list = vals;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
308 }
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
309
23481
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
310 octave_value evaluate (tree_expression *expr, int nargout = 1)
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
311 {
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
312 octave_value retval;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
313
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
314 m_nargout_stack.push (nargout);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
315
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
316 expr->accept (*this);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
317
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
318 m_nargout_stack.pop ();
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
319
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
320 switch (m_result_type)
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
321 {
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
322 case RT_UNDEFINED:
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
323 panic_impossible ();
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
324 break;
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
325
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
326 case RT_VALUE:
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
327 retval = m_expr_result_value;
25317
4a46c83bcb71 don't hold reference to expression result after evaluation is done
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
328 m_expr_result_value = octave_value ();
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
329 break;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
330
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
331 case RT_VALUE_LIST:
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
332 retval = (m_expr_result_value_list.empty ()
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
333 ? octave_value () : m_expr_result_value_list(0));
25317
4a46c83bcb71 don't hold reference to expression result after evaluation is done
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
334 m_expr_result_value_list = octave_value_list ();
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
335 break;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
336 }
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
337
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
338 return retval;
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
339 }
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
340
23481
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
341 octave_value_list evaluate_n (tree_expression *expr, int nargout = 1)
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
342 {
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
343 octave_value_list retval;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
344
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
345 m_nargout_stack.push (nargout);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
346
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
347 expr->accept (*this);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
348
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
349 m_nargout_stack.pop ();
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
350
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
351 switch (m_result_type)
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
352 {
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
353 case RT_UNDEFINED:
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
354 panic_impossible ();
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
355 break;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
356
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
357 case RT_VALUE:
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
358 retval = ovl (m_expr_result_value);
25317
4a46c83bcb71 don't hold reference to expression result after evaluation is done
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
359 m_expr_result_value = octave_value ();
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
360 break;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
361
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
362 case RT_VALUE_LIST:
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
363 retval = m_expr_result_value_list;
25317
4a46c83bcb71 don't hold reference to expression result after evaluation is done
John W. Eaton <jwe@octave.org>
parents: 25054
diff changeset
364 m_expr_result_value_list = octave_value_list ();
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
365 break;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
366 }
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
367
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
368 return retval;
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
369 }
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
370
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
371 octave_value evaluate (tree_decl_elt *);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
372
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
373 void install_variable (const std::string& name,
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
374 const octave_value& value, bool global);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
375
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
376 octave_value global_varval (const std::string& name) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
377
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
378 void global_assign (const std::string& name,
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
379 const octave_value& val = octave_value ());
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
380
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
381 octave_value top_level_varval (const std::string& name) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
382
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
383 void top_level_assign (const std::string& name,
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
384 const octave_value& val = octave_value ());
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
385
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
386 bool is_variable (const std::string& name) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
387
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
388 bool is_local_variable (const std::string& name) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
389
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
390 bool is_variable (const tree_expression *expr) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
391
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
392 bool is_defined (const tree_expression *expr) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
393
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
394 bool is_variable (const symbol_record& sym) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
395
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
396 bool is_defined (const symbol_record& sym) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
397
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
398 bool is_global (const std::string& name) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
399
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
400 octave_value varval (const symbol_record& sym) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
401
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
402 octave_value varval (const std::string& name) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
403
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
404 void assign (const std::string& name,
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
405 const octave_value& val = octave_value ());
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
406
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
407 void set_auto_fcn_var (stack_frame::auto_var_type avt,
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
408 const octave_value& val = octave_value ());
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
409
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
410 octave_value get_auto_fcn_var (stack_frame::auto_var_type avt) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
411
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
412 void define_parameter_list_from_arg_vector
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
413 (tree_parameter_list *param_list, const octave_value_list& args);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
414
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
415 void undefine_parameter_list (tree_parameter_list *param_list);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
416
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
417 octave_value_list
25382
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
418 convert_to_const_vector (tree_argument_list *arg_list,
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
419 const octave_value *object = nullptr);
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
420
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
421 octave_value_list
23916
85488effc0ff refactor function value return code
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
422 convert_return_list_to_const_vector
85488effc0ff refactor function value return code
John W. Eaton <jwe@octave.org>
parents: 23795
diff changeset
423 (tree_parameter_list *ret_list, int nargout, const Cell& varargout);
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
424
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
425 bool eval_decl_elt (tree_decl_elt *elt);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
426
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
427 bool switch_case_label_matches (tree_switch_case *expr,
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
428 const octave_value& val);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
429
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
430 interpreter& get_interpreter (void) { return m_interpreter; }
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
431
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
432 bp_table& get_bp_table (void) { return m_bp_table; }
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
433
23553
14723784b9f2 don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents: 23532
diff changeset
434 call_stack& get_call_stack (void) { return m_call_stack; }
14723784b9f2 don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents: 23532
diff changeset
435
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
436 const stack_frame& get_current_stack_frame (void) const
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
437 {
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
438 return m_call_stack.get_current_stack_frame ();
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
439 }
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
440
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
441 stack_frame& get_current_stack_frame (void)
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
442 {
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
443 return m_call_stack.get_current_stack_frame ();
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
444 }
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
445
23753
c3828bd031cd move profiler inside evaluator and inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 23750
diff changeset
446 profiler& get_profiler (void) { return m_profiler; }
c3828bd031cd move profiler inside evaluator and inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 23750
diff changeset
447
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
448 symbol_scope get_top_scope (void) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
449 symbol_scope get_current_scope (void) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
450
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
451 octave_value find (const std::string& name);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
452
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
453 void clear_objects (void);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
454
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
455 void clear_variable (const std::string& name);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
456
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
457 void clear_variable_pattern (const std::string& pattern);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
458
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
459 void clear_variable_regexp (const std::string& pattern);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
460
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
461 void clear_variables (void);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
462
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
463 void clear_global_variable (const std::string& name);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
464
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
465 void clear_global_variable_pattern (const std::string& pattern);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
466
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
467 void clear_global_variable_regexp (const std::string& pattern);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
468
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
469 void clear_global_variables (void);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
470
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
471 void clear_all (bool force = false);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
472
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
473 void clear_symbol (const std::string& name);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
474
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
475 void clear_symbol_pattern (const std::string& pattern);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
476
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
477 void clear_symbol_regexp (const std::string& pattern);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
478
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
479 std::list<std::string> global_variable_names (void) const;
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
480
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
481 std::list<std::string> variable_names (void) const;
24037
21915520ac7b use more direct method for non-local symbol access (bug #38236)
John W. Eaton <jwe@octave.org>
parents: 23916
diff changeset
482
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
483 octave_user_code * get_user_code (const std::string& fname = "");
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
484
23705
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
485 int max_recursion_depth (void) const { return m_max_recursion_depth; }
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
486
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
487 int max_recursion_depth (int n)
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
488 {
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
489 int val = m_max_recursion_depth;
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
490 m_max_recursion_depth = n;
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
491 return val;
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
492 }
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
493
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
494 octave_value
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
495 max_recursion_depth (const octave_value_list& args, int nargout);
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
496
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
497 bool silent_functions (void) const { return m_silent_functions; }
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
498
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
499 bool silent_functions (bool b)
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
500 {
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
501 int val = m_silent_functions;
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
502 m_silent_functions = b;
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
503 return val;
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
504 }
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
505
26087
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
506 octave_value whos_line_format (const octave_value_list& args, int nargout);
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
507
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
508 std::string whos_line_format (void) const { return m_whos_line_format; }
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
509
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
510 std::string whos_line_format (const std::string& s)
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
511 {
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
512 std::string val = m_whos_line_format;
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
513 m_whos_line_format = s;
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
514 return val;
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
515 }
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
516
23705
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
517 octave_value
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
518 silent_functions (const octave_value_list& args, int nargout);
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
519
25402
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
520 size_t current_frame (void) const { return m_current_frame; }
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
521
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
522 size_t current_frame (size_t n)
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
523 {
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
524 size_t val = m_current_frame;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
525 m_current_frame = n;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
526 return val;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
527 }
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
528
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
529 bool debug_mode (void) const { return m_debug_mode; }
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
530
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
531 bool debug_mode (bool flag)
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
532 {
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
533 bool val = m_debug_mode;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
534 m_debug_mode = flag;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
535 return val;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
536 }
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
537
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
538 bool quiet_breakpoint_flag (void) const { return m_quiet_breakpoint_flag; }
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
539
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
540 bool quiet_breakpoint_flag (bool flag)
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
541 {
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
542 bool val = m_quiet_breakpoint_flag;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
543 m_quiet_breakpoint_flag = flag;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
544 return val;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
545 }
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
546
23706
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
547 char string_fill_char (void) const { return m_string_fill_char; }
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
548
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
549 char string_fill_char (char c)
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
550 {
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
551 int val = m_string_fill_char;
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
552 m_string_fill_char = c;
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
553 return val;
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
554 }
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
555
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
556 octave_value PS4 (const octave_value_list& args, int nargout);
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
557
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
558 std::string PS4 (void) const { return m_PS4; }
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
559
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
560 std::string PS4 (const std::string& s)
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
561 {
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
562 std::string val = m_PS4;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
563 m_PS4 = s;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
564 return val;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
565 }
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
566
25382
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
567 const octave_value * indexed_object (void) const
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
568 {
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
569 return m_indexed_object;
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
570 }
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
571
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
572 int index_position (void) const { return m_index_position; }
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
573
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
574 int num_indices (void) const { return m_num_indices; }
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
575
25403
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
576 int breaking (void) const { return m_breaking; }
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
577
25404
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
578 int breaking (int n)
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
579 {
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
580 int val = m_breaking;
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
581 m_breaking = n;
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
582 return val;
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
583 }
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
584
25403
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
585 int continuing (void) const { return m_continuing; }
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
586
25404
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
587 int continuing (int n)
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
588 {
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
589 int val = m_continuing;
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
590 m_continuing = n;
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
591 return val;
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
592 }
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
593
25403
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
594 int returning (void) const { return m_returning; }
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
595
25404
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
596 int returning (int n)
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
597 {
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
598 int val = m_returning;
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
599 m_returning = n;
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
600 return val;
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
601 }
e37d857716c3 move core of interpreter::main_loop to evaluator
John W. Eaton <jwe@octave.org>
parents: 25403
diff changeset
602
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
603 octave_value echo (const octave_value_list& args, int nargout);
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
604
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
605 int echo (void) const { return m_echo; }
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
606
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
607 int echo (int val)
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
608 {
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
609 int old_val = m_echo;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
610 m_echo = val;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
611 return old_val;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
612 }
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
613
23706
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
614 octave_value
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
615 string_fill_char (const octave_value_list& args, int nargout);
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
616
26094
8fb0df0c8772 eliminate duplicate final_index_error function
John W. Eaton <jwe@octave.org>
parents: 26087
diff changeset
617 void final_index_error (index_exception& e, const tree_expression *expr);
8fb0df0c8772 eliminate duplicate final_index_error function
John W. Eaton <jwe@octave.org>
parents: 26087
diff changeset
618
23729
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
619 void push_echo_state (unwind_protect& frame, int type,
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
620 const std::string& file_name, size_t pos = 1);
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
621
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
622 private:
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
623
23729
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
624 void set_echo_state (int type, const std::string& file_name, size_t pos);
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
625
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
626 void maybe_set_echo_state (void);
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
627
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
628 void push_echo_state_cleanup (unwind_protect& frame);
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
629
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
630 bool maybe_push_echo_state_cleanup (void);
06b3d1d54054 allow echo state to be modified from inside functions
John W. Eaton <jwe@octave.org>
parents: 23728
diff changeset
631
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
632 void do_breakpoint (tree_statement& stmt);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
633
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
634 void do_breakpoint (bool is_breakpoint,
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
635 bool is_end_of_fcn_or_script = false);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
636
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
637 virtual octave_value
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
638 do_keyboard (const octave_value_list& args = octave_value_list ()) const;
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
639
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
640 bool is_logically_true (tree_expression *expr, const char *warn_for);
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
641
23482
c9937e865768 make isargout work again for nested function calls
John W. Eaton <jwe@octave.org>
parents: 23481
diff changeset
642 octave_value_list
23696
08036a7f3660 remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 23615
diff changeset
643 make_value_list (tree_argument_list *args,
23482
c9937e865768 make isargout work again for nested function calls
John W. Eaton <jwe@octave.org>
parents: 23481
diff changeset
644 const string_vector& arg_nm,
c9937e865768 make isargout work again for nested function calls
John W. Eaton <jwe@octave.org>
parents: 23481
diff changeset
645 const octave_value *object, bool rvalue = true);
c9937e865768 make isargout work again for nested function calls
John W. Eaton <jwe@octave.org>
parents: 23481
diff changeset
646
23481
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
647 std::list<octave_lvalue> make_lvalue_list (tree_argument_list *);
73558a835b64 eliminate lvalue list arguments from evaluator functions
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
648
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
649 // For unwind-protect.
25653
b3d357990b52 better use of templates for action_container and derived classes
John W. Eaton <jwe@octave.org>
parents: 25404
diff changeset
650 void uwp_set_echo_state (bool state, const std::string& file_name,
b3d357990b52 better use of templates for action_container and derived classes
John W. Eaton <jwe@octave.org>
parents: 25404
diff changeset
651 size_t pos);
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
652
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
653 bool echo_this_file (const std::string& file, int type) const;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
654
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
655 void echo_code (size_t line);
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
656
25403
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
657 bool quit_loop_now (void);
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
658
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
659 void bind_auto_fcn_vars (const string_vector& arg_names, int nargin,
26039
d2aae3570c81 perform automatic function variable binding in tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25653
diff changeset
660 int nargout, bool takes_varargs,
d2aae3570c81 perform automatic function variable binding in tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25653
diff changeset
661 const octave_value_list& va_args);
d2aae3570c81 perform automatic function variable binding in tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25653
diff changeset
662
26661
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
663 void init_local_fcn_vars (octave_user_function& user_fcn);
cf9e10ce3351 move variable values from symbol_record objects to stack_frame objects
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
664
23705
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
665 interpreter& m_interpreter;
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
666
25401
6f6479125d80 eliminate some globals from tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 25400
diff changeset
667 // The context for the current evaluation.
6f6479125d80 eliminate some globals from tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 25400
diff changeset
668 stmt_list_type m_statement_context;
6f6479125d80 eliminate some globals from tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 25400
diff changeset
669
24563
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
670 result_type m_result_type;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
671 octave_value m_expr_result_value;
8f2c479eb125 eliminate unnecessary value stack in evaluator
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
672 octave_value_list m_expr_result_value_list;
23435
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
673
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
674 value_stack<const std::list<octave_lvalue>*> m_lvalue_list_stack;
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
675
c452180ab672 begin refactoring parse tree evaluator
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
676 value_stack<int> m_nargout_stack;
10219
979fb2606c4f new tree_evaluator::do_keyoard function
Ryan Rusaw <rrusaw@gmail.com>
parents: 10186
diff changeset
677
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
678 bp_table m_bp_table;
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
679
23553
14723784b9f2 don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents: 23532
diff changeset
680 call_stack m_call_stack;
14723784b9f2 don't use singleton for call_stack
John W. Eaton <jwe@octave.org>
parents: 23532
diff changeset
681
23753
c3828bd031cd move profiler inside evaluator and inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 23750
diff changeset
682 profiler m_profiler;
c3828bd031cd move profiler inside evaluator and inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 23750
diff changeset
683
25402
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
684 // The number of the stack frame we are currently debugging.
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
685 size_t m_current_frame;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
686
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
687 bool m_debug_mode;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
688
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
689 bool m_quiet_breakpoint_flag;
ef2b9d4abf4a eliminate some global variables from tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25401
diff changeset
690
23705
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
691 // Maximum nesting level for functions, scripts, or sourced files
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
692 // called recursively.
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
693 int m_max_recursion_depth;
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
694
26087
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
695 // Defines layout for the whos/who -long command
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
696 std::string m_whos_line_format;
7656fcd0ff9f move whos_line_format to evaluator
John W. Eaton <jwe@octave.org>
parents: 26039
diff changeset
697
23705
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
698 // If TRUE, turn off printing of results in functions (as if a
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
699 // semicolon has been appended to each statement).
4c597585ff52 move Vmax_recursion_depth and Vsilent_functions to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23702
diff changeset
700 bool m_silent_functions;
23706
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
701
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
702 // The character to fill with when creating string arrays.
6683451b75b2 move Vstring_fill_char to tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23705
diff changeset
703 char m_string_fill_char;
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
704
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
705 // String printed before echoed commands (enabled by --echo-commands).
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
706 std::string m_PS4;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
707
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
708 // If > 0, stop executing at the (N-1)th stopping point, counting
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
709 // from the the current execution point in the current frame.
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
710 //
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
711 // If < 0, stop executing at the next possible stopping point.
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
712 int m_dbstep_flag;
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
713
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
714 // Echo commands as they are executed?
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
715 //
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
716 // 1 ==> echo commands read from script files
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
717 // 2 ==> echo commands from functions
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
718 //
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
719 // more than one state can be active at once.
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
720 int m_echo;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
721
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
722 // Are we currently echoing commands? This state is set by the
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
723 // functions that execute fucntions and scripts.
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
724 bool m_echo_state;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
725
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
726 std::string m_echo_file_name;
23728
b40b7243a782 new class for caching file contents for debug and echo
John W. Eaton <jwe@octave.org>
parents: 23723
diff changeset
727
b40b7243a782 new class for caching file contents for debug and echo
John W. Eaton <jwe@octave.org>
parents: 23723
diff changeset
728 // Next line to echo, counting from 1.
23723
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
729 size_t m_echo_file_pos;
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
730
ab8831d346c1 revamp echo command and move related variables inside tree_evaluator class
John W. Eaton <jwe@octave.org>
parents: 23706
diff changeset
731 std::map<std::string, bool> m_echo_files;
25360
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
732
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
733 // TRUE means we are evaluating some kind of looping construct.
bc5f225bc578 eliminate some global accesses to the breakpoint table
John W. Eaton <jwe@octave.org>
parents: 25317
diff changeset
734 bool m_in_loop_command;
25382
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
735
25403
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
736 // Nonzero means we're breaking out of a loop or function body.
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
737 int m_breaking;
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
738
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
739 // Nonzero means we're jumping to the end of a loop.
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
740 int m_continuing;
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
741
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
742 // Nonzero means we're returning from a function.
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
743 int m_returning;
2b7d7a3f5f57 move returning, breaking, and continuing flags to evaluator
John W. Eaton <jwe@octave.org>
parents: 25402
diff changeset
744
25382
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
745 // Used by END function.
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
746 const octave_value *m_indexed_object;
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
747 int m_index_position;
749d9e858553 move convert_to_const_vector from tree_argument_list to tree_evaluator
John W. Eaton <jwe@octave.org>
parents: 25381
diff changeset
748 int m_num_indices;
22196
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
749 };
dd992fd74fce put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents: 21244
diff changeset
750 }
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
751
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
diff changeset
752 #endif