annotate src/pt-exp.h @ 2960:194b50e4725b

[project @ 1997-05-12 00:43:54 by jwe]
author jwe
date Mon, 12 May 1997 00:54:04 +0000
parents 5ed088015839
children f2be17e6f1ea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
1 /*
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
2
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 2805
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
4
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
6
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
10 later version.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
11
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
15 for more details.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
16
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
20
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
21 */
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
22
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
23 #if !defined (octave_tree_expr2_h)
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
24 #define octave_tree_expr2_h 1
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
25
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
26 #if defined (__GNUG__)
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
27 #pragma interface
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
28 #endif
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
29
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
30 class ostream;
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
31
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
32 class tree_identifier;
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
33 class tree_index_expression;
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
34 class tree_indirect_ref;
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
35 class tree_argument_list;
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
36
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
37 class tree_walker;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
38
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
39 class octave_value;
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
40 class octave_value_list;
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
41 class octave_variable_reference;
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
42
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
43 #include "pt-exp-base.h"
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
44
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
45 // Unary expressions.
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
46
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
47 class
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
48 tree_unary_expression : public tree_expression
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
49 {
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
50 public:
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
51
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
52 tree_unary_expression (int l = -1, int c = -1)
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
53 : tree_expression (l, c), op (0) { }
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
54
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
55 tree_unary_expression (tree_expression *e, int l = -1, int c = -1)
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
56 : tree_expression (l, c), op (e) { }
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
57
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
58 ~tree_unary_expression (void) { delete op; }
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
59
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
60 tree_expression *operand (void) { return op; }
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
61
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
62 protected:
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
63
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
64 // The operand for the expression.
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
65 tree_expression *op;
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
66 };
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
67
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
68 // Prefix expressions.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
69
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
70 class
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
71 tree_prefix_expression : public tree_unary_expression
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
72 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
73 public:
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
74
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
75 enum type
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
76 {
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
77 unknown,
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
78 unot,
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
79 uminus,
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
80 increment,
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
81 decrement
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
82 };
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
83
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
84 tree_prefix_expression (int l = -1, int c = -1)
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
85 : tree_unary_expression (l, c), etype (unknown) { }
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
86
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
87 tree_prefix_expression (type t = unknown, tree_expression *e,
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
88 int l = -1, int c = -1)
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
89 : tree_unary_expression (e, l, c), etype (t) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
90
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
91 ~tree_prefix_expression (void) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
92
2859
00c0cd0f2ee7 [project @ 1997-03-31 19:02:32 by jwe]
jwe
parents: 2847
diff changeset
93 octave_value eval (bool print = false);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
94
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
95 void eval_error (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
96
2900
5ed088015839 [project @ 1997-04-30 03:26:56 by jwe]
jwe
parents: 2879
diff changeset
97 string oper (void) const;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
98
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
99 void accept (tree_walker& tw);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
100
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
101 private:
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
102
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
103 // The type of the expression.
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
104 type etype;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
105 };
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
106
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
107 // Postfix expressions.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
108
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
109 class
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
110 tree_postfix_expression : public tree_unary_expression
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
111 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
112 public:
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
113
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
114 enum type
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
115 {
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
116 unknown,
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
117 hermitian,
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
118 transpose,
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
119 increment,
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
120 decrement
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
121 };
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
122
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
123 tree_postfix_expression (int l = -1, int c = -1)
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
124 : tree_unary_expression (l, c), etype (unknown) { }
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
125
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
126 tree_postfix_expression (type t = unknown, tree_expression *e,
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
127 int l = -1, int c = -1)
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
128 : tree_unary_expression (e, l, c), etype (t) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
129
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
130 ~tree_postfix_expression (void) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
131
2859
00c0cd0f2ee7 [project @ 1997-03-31 19:02:32 by jwe]
jwe
parents: 2847
diff changeset
132 octave_value eval (bool print = false);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
133
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
134 void eval_error (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
135
2900
5ed088015839 [project @ 1997-04-30 03:26:56 by jwe]
jwe
parents: 2879
diff changeset
136 string oper (void) const;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
137
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
138 void accept (tree_walker& tw);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
139
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
140 private:
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
141
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
142 // The type of the expression.
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
143 type etype;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
144 };
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
145
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
146 // Binary expressions.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
147
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
148 class
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
149 tree_binary_expression : public tree_expression
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
150 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
151 public:
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
152
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
153 tree_binary_expression (int l = -1, int c = -1,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
154 octave_value::binary_op t
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
155 = octave_value::unknown_binary_op)
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
156 : tree_expression (l, c), op_lhs (0), op_rhs (0), etype (t) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
157
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
158 tree_binary_expression (tree_expression *a, tree_expression *b,
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
159 int l = -1, int c = -1,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
160 octave_value::binary_op t
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
161 = octave_value::unknown_binary_op)
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
162 : tree_expression (l, c), op_lhs (a), op_rhs (b), etype (t) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
163
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
164 ~tree_binary_expression (void)
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
165 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
166 delete op_lhs;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
167 delete op_rhs;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
168 }
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
169
2859
00c0cd0f2ee7 [project @ 1997-03-31 19:02:32 by jwe]
jwe
parents: 2847
diff changeset
170 octave_value eval (bool print = false);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
171
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
172 void eval_error (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
173
2900
5ed088015839 [project @ 1997-04-30 03:26:56 by jwe]
jwe
parents: 2879
diff changeset
174 string oper (void) const;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
175
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
176 tree_expression *lhs (void) { return op_lhs; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
177 tree_expression *rhs (void) { return op_rhs; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
178
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
179 void accept (tree_walker& tw);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
180
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
181 protected:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
182
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
183 // The operands for the expression.
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
184 tree_expression *op_lhs;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
185 tree_expression *op_rhs;
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
186
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
187 private:
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
188
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
189 // The type of the expression.
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
190 octave_value::binary_op etype;
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
191 };
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
192
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
193 // Boolean expressions.
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
194
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
195 class
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
196 tree_boolean_expression : public tree_binary_expression
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
197 {
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
198 public:
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
199
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
200 enum type
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
201 {
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
202 unknown,
2805
68e6d0c93fc8 [project @ 1997-03-11 04:52:44 by jwe]
jwe
parents: 2532
diff changeset
203 bool_and,
68e6d0c93fc8 [project @ 1997-03-11 04:52:44 by jwe]
jwe
parents: 2532
diff changeset
204 bool_or
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
205 };
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
206
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
207 tree_boolean_expression (int l = -1, int c = -1, type t = unknown)
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
208 : tree_binary_expression (l, c), etype (t) { }
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
209
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
210 tree_boolean_expression (tree_expression *a, tree_expression *b,
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
211 int l = -1, int c = -1, type t = unknown)
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
212 : tree_binary_expression (a, b, l, c), etype (t) { }
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
213
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
214 ~tree_boolean_expression (void) { }
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
215
2859
00c0cd0f2ee7 [project @ 1997-03-31 19:02:32 by jwe]
jwe
parents: 2847
diff changeset
216 octave_value eval (bool print = false);
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
217
2900
5ed088015839 [project @ 1997-04-30 03:26:56 by jwe]
jwe
parents: 2879
diff changeset
218 string oper (void) const;
2388
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
219
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
220 private:
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
221
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
222 // The type of the expression.
4be11abb8d8c [project @ 1996-10-12 18:53:51 by jwe]
jwe
parents: 2124
diff changeset
223 type etype;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
224 };
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
225
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
226 // Simple assignment expressions.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
227
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
228 class
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
229 tree_simple_assignment_expression : public tree_expression
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
230 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
231 public:
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
232
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
233 tree_simple_assignment_expression
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
234 (bool plhs = false, bool ans_assign = false, int l = -1, int c = -1,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
235 octave_value::assign_op t = octave_value::asn_eq)
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
236 : tree_expression (l, c), lhs_idx_expr (0), lhs (0), index (0),
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
237 rhs (0), preserve (plhs), ans_ass (ans_assign), etype (t) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
238
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
239 tree_simple_assignment_expression
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
240 (tree_identifier *i, tree_expression *r, bool plhs = false,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
241 bool ans_assign = false, int l = -1, int c = -1,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
242 octave_value::assign_op t = octave_value::asn_eq);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
243
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
244 tree_simple_assignment_expression
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
245 (tree_indirect_ref *i, tree_expression *r, bool plhs = false,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
246 bool ans_assign = false, int l = -1, int c = -1,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
247 octave_value::assign_op t = octave_value::asn_eq)
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
248 : tree_expression (l, c), lhs_idx_expr (0), lhs (i), index (0),
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
249 rhs (r), preserve (plhs), ans_ass (ans_assign), etype (t) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
250
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
251 tree_simple_assignment_expression
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
252 (tree_index_expression *idx_expr, tree_expression *r,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
253 bool plhs = false, bool ans_assign = false, int l = -1, int c = -1,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
254 octave_value::assign_op t = octave_value::asn_eq);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
255
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
256 ~tree_simple_assignment_expression (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
257
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1742
diff changeset
258 bool left_hand_side_is_identifier_only (void);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
259
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
260 tree_identifier *left_hand_side_id (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
261
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1742
diff changeset
262 bool is_ans_assign (void)
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
263 { return ans_ass; }
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
264
2859
00c0cd0f2ee7 [project @ 1997-03-31 19:02:32 by jwe]
jwe
parents: 2847
diff changeset
265 octave_value eval (bool print = false);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
266
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1742
diff changeset
267 bool is_assignment_expression (void) const
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1742
diff changeset
268 { return true; }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
269
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
270 void eval_error (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
271
2900
5ed088015839 [project @ 1997-04-30 03:26:56 by jwe]
jwe
parents: 2879
diff changeset
272 string oper (void) const;
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
273
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
274 tree_indirect_ref *left_hand_side (void) { return lhs; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
275
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
276 tree_argument_list *lhs_index (void) { return index; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
277
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
278 tree_expression *right_hand_side (void) { return rhs; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
279
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
280 void accept (tree_walker& tw);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
281
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
282 private:
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
283
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
284 void do_assign (octave_variable_reference& ult,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
285 const octave_value_list& args,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
286 const octave_value& rhs_val);
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
287
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
288 void do_assign (octave_variable_reference& ult,
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
289 const octave_value& rhs_val);
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
290
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
291 // The left hand side of the assignment, as an index expression. If
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
292 // the assignment is constructed from an index expression, the index
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
293 // expression is split into the its components in the constructor.
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
294 tree_index_expression *lhs_idx_expr;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
295
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
296 // The indirect reference (id or structure reference) on the left
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
297 // hand side of the assignemnt.
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
298 tree_indirect_ref *lhs;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
299
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
300 // The index of the left hand side of the assignment, if any.
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
301 tree_argument_list *index;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
302
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
303 // The right hand side of the assignment.
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
304 tree_expression *rhs;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
305
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
306 // True if we should not delete the lhs.
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1742
diff changeset
307 bool preserve;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
308
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
309 // True if this is an assignment to the built-in variable ans.
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1742
diff changeset
310 bool ans_ass;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
311
2879
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
312 // The type of the expression.
4309724baab6 [project @ 1997-04-24 09:30:23 by jwe]
jwe
parents: 2859
diff changeset
313 octave_value::assign_op etype;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
314 };
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
315
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
316 // Colon expressions.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
317
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
318 class
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
319 tree_colon_expression : public tree_expression
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
320 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
321 public:
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
322
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
323 tree_colon_expression (int l = -1, int c = -1)
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
324 : tree_expression (l, c), op_base (0), op_limit (0), op_increment (0) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
325
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
326 tree_colon_expression (tree_expression *a, tree_expression *b,
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
327 int l = -1, int c = -1)
2960
194b50e4725b [project @ 1997-05-12 00:43:54 by jwe]
jwe
parents: 2900
diff changeset
328 : tree_expression (l, c), op_base (a), op_limit (b), op_increment (0) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
329
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
330 ~tree_colon_expression (void)
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
331 {
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
332 delete op_base;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
333 delete op_limit;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
334 delete op_increment;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
335 }
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
336
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
337 tree_colon_expression *chain (tree_expression *t);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
338
2859
00c0cd0f2ee7 [project @ 1997-03-31 19:02:32 by jwe]
jwe
parents: 2847
diff changeset
339 octave_value eval (bool print = false);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
340
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
341 void eval_error (const char *s);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
342
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
343 tree_expression *base (void) { return op_base; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
344 tree_expression *limit (void) { return op_limit; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
345 tree_expression *increment (void) { return op_increment; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
346
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
347 void accept (tree_walker& tw);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
348
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
349 private:
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
350
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
351 // The components of the expression.
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
352 tree_expression *op_base;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
353 tree_expression *op_limit;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
354 tree_expression *op_increment;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
355 };
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
356
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
357 #endif
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
358
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
359 /*
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
360 ;;; Local Variables: ***
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
361 ;;; mode: C++ ***
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
362 ;;; End: ***
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
363 */