annotate src/pt-fvc.h @ 2449:31d5588dbb61

[project @ 1996-10-30 22:58:44 by jwe]
author jwe
date Wed, 30 Oct 1996 23:00:41 +0000
parents e46137c06781
children 52e7c4509983
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
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
3 Copyright (C) 1996 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_fvc2_h)
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
24 #define octave_tree_fvc2_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 #include <SLList.h>
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
33
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
34 class symbol_record;
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
35 class tree_constant;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
36 class tree_function;
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
37
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
38 class tree_walker;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
39
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
40 #include "mappers.h"
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
41 #include "pt-fvc-base.h"
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
42 #include "variables.h"
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
43
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
44 // Symbols from the symbol table.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
45
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
46 class
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
47 tree_identifier : public tree_fvc
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
48 {
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
49 friend class tree_index_expression;
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
50
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
51 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
52
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
53 tree_identifier (int l = -1, int c = -1)
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
54 : tree_fvc (l, c), sym (0), maybe_do_ans_assign (false) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
55
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
56 tree_identifier (symbol_record *s, int l = -1, int c = -1)
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
57 : tree_fvc (l, c), sym (s), maybe_do_ans_assign (false) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
58
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
59 ~tree_identifier (void) { }
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
60
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
61 bool is_identifier (void) const
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
62 { return true; }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
63
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
64 string name (void) const;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
65
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
66 tree_identifier *define (tree_constant *t);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
67 tree_identifier *define (tree_function *t);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
68
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
69 void document (const string& s);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
70
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
71 octave_value assign (const octave_value& t);
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
72 octave_value assign (const octave_value_list& args, const octave_value& t);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
73
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
74 bool is_defined (void);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
75
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
76 void increment (void);
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
77
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
78 void decrement (void);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
79
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
80 tree_fvc *do_lookup (bool& script_file_executed, bool exec_script = true);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
81
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
82 void link_to_global (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
83
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
84 void mark_as_formal_parameter (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
85
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
86 void mark_for_possible_ans_assign (void)
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
87 { maybe_do_ans_assign = true; }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
88
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
89 octave_value eval (bool print);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
90
2447
e46137c06781 [project @ 1996-10-30 19:39:03 by jwe]
jwe
parents: 2391
diff changeset
91 octave_value_list eval (bool print, int nargout,
e46137c06781 [project @ 1996-10-30 19:39:03 by jwe]
jwe
parents: 2391
diff changeset
92 const octave_value_list& args);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
93
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
94 void eval_undefined_error (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
95
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
96 void accept (tree_walker& tw);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
97
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
98 octave_value value (void) const;
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
99
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
100 octave_value& reference (void);
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
101
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
102 private:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
103
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
104 // The symbol record that this identifier references.
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
105 symbol_record *sym;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
106
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
107 // True if we should consider assigning the result of evaluating
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
108 // this identifier to the built-in variable ans.
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
109 bool maybe_do_ans_assign;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
110 };
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
111
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
112 // Indirect references to values (structure references).
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
113
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
114 class
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
115 tree_indirect_ref : public tree_fvc
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
116 {
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
117 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
118
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
119 tree_indirect_ref (int l = -1, int c = -1)
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
120 : tree_fvc (l, c), id (0), indir (0), nm (),
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
121 preserve_ident (false), preserve_indir (false),
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
122 maybe_do_ans_assign (false) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
123
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
124 tree_indirect_ref (tree_identifier *i, int l = -1, int c = -1)
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
125 : tree_fvc (l, c), id (i), indir (0), nm (),
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
126 preserve_ident (false), preserve_indir (false),
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
127 maybe_do_ans_assign (false) { }
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
128
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
129 tree_indirect_ref (tree_indirect_ref *i, const string& n,
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
130 int l = -1, int c = -1)
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
131 : tree_fvc (l, c), id (0), indir (i), nm (n),
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
132 preserve_ident (false), preserve_indir (false),
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
133 maybe_do_ans_assign (false) { }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
134
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
135 ~tree_indirect_ref (void);
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
136
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
137 bool is_indirect_ref (void) const
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
138 { return true; }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
139
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
140 bool is_identifier_only (void) const
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
141 { return (id && nm.empty ()); }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
142
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
143 tree_identifier *ident (void)
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
144 { return id; }
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
145
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
146 tree_indirect_ref *indirect (void)
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
147 { return indir; }
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
148
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
149 void preserve_identifier (void)
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
150 { preserve_ident = true; }
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
151
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
152 void preserve_indirect (void)
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
153 { preserve_indir = true; }
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
154
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
155 void mark_for_possible_ans_assign (void)
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
156 {
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
157 maybe_do_ans_assign = true;
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
158
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
159 if (is_identifier_only ())
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
160 id->mark_for_possible_ans_assign ();
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
161 }
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
162
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
163 string name (void) const;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
164
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
165 octave_value eval (bool print);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
166
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
167 octave_value_list eval (bool print, int nargout,
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
168 const octave_value_list& args);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
169
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
170 octave_value value (void) const;
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
171 octave_value& reference (void);
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
172
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
173 string elt_name (void)
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
174 { return nm; }
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
175
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
176 void accept (tree_walker& tw);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
177
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
178 private:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
179
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
180 // The identifier for this structure reference. For example, in
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
181 // a.b.c, a is the id.
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
182 tree_identifier *id;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
183
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
184 // This element just points to another indirect reference.
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
185 tree_indirect_ref *indir;
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
186
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
187 // The sub-element name.
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
188 string nm;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
189
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
190 // True if we should not delete the identifier.
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
191 bool preserve_ident;
2391
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
192
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
193 // True if we should not delete the indirect reference.
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
194 bool preserve_indir;
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
195
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
196 // True if we should consider assigning the result of evaluating
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
197 // this identifier to the built-in variable ans.
b12625d6fbcd [project @ 1996-10-12 19:35:37 by jwe]
jwe
parents: 2124
diff changeset
198 bool maybe_do_ans_assign;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
199 };
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
200
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
201 // Builtin functions.
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
202
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
203 class
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
204 tree_builtin : public tree_fvc
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
205 {
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
206 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
207
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
208 tree_builtin (const string& nm = string ());
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
209
2089
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2088
diff changeset
210 tree_builtin (const builtin_mapper_function& m_fcn,
4dcc8b77e84a [project @ 1996-04-26 07:55:54 by jwe]
jwe
parents: 2088
diff changeset
211 const string& nm = string ());
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
212
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
213 tree_builtin (Octave_builtin_fcn f, const string& nm = string ());
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
214
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
215 ~tree_builtin (void) { } // XXX ?? XXX
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
216
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
217 // int is_builtin (void) const;
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
218
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
219 bool is_mapper_function (void) const
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
220 { return is_mapper; }
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
221
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
222 octave_value eval (bool print);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
223
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
224 octave_value_list eval (bool print, int nargout, const octave_value_list& args);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
225
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
226 string name (void) const
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
227 { return my_name; }
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
228
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
229 void accept (tree_walker& tw);
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
230
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
231 private:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
232
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
233 // True if this is a mapper function.
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1755
diff changeset
234 bool is_mapper;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
235
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
236 // A structure describing the mapper function.
2088
c5b4b6d51740 [project @ 1996-04-26 06:28:59 by jwe]
jwe
parents: 2086
diff changeset
237 builtin_mapper_function mapper_fcn;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
238
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
239 // The actual function, if it is not a mapper.
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
240 Octave_builtin_fcn fcn;
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
241
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2089
diff changeset
242 // The name of this function.
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1742
diff changeset
243 string my_name;
1739
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
244 };
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
245
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
246 #endif
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
247
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
248 /*
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
249 ;;; Local Variables: ***
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
250 ;;; mode: C++ ***
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
251 ;;; End: ***
bbfca89cb1cd [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents:
diff changeset
252 */