annotate src/pt-misc.h @ 2124:97a566037a75

[project @ 1996-05-12 07:16:36 by jwe]
author jwe
date Sun, 12 May 1996 07:16:36 +0000
parents bfb775fb6fe8
children 2c0f259cf83d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
1 /*
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
2
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
3 Copyright (C) 1996 John W. Eaton
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
4
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
6
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
10 later version.
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
11
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
15 for more details.
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
16
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
1315
611d403c7f3d [project @ 1995-06-25 19:56:32 by jwe]
jwe
parents: 1297
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
20
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
21 */
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
22
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
23 #if !defined (octave_tree_misc_h)
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
24 #define octave_tree_misc_h 1
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
25
1297
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1269
diff changeset
26 #if defined (__GNUG__)
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1269
diff changeset
27 #pragma interface
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1269
diff changeset
28 #endif
12ecc2ecf0e3 [project @ 1995-05-01 18:39:43 by jwe]
jwe
parents: 1269
diff changeset
29
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
30 class ostream;
1740
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
31
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
32 class octave_value_list;
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
33 class octave_value;
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
34 class tree_command;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
35 class tree_expression;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
36 class tree_simple_assignment_expression;
1740
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
37 class tree_index_expression;
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
38 class tree_identifier;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
39 class symbol_record;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
40 class symbol_table;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
41
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
42 class tree_statement;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
43 class tree_statement_list;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
44 class tree_argument_list;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
45 class tree_parameter_list;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
46 class tree_return_list;
723
1c072f20b522 [project @ 1994-09-21 16:00:10 by jwe]
jwe
parents: 672
diff changeset
47 class tree_va_return_list;
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
48 class tree_global;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
49 class tree_global_init_list;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
50
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
51 class tree_walker;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
52
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
53 #include <SLList.h>
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
54
1740
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
55 #include "pt-base.h"
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
56
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
57 // A statement is either a command to execute or an expression to
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
58 // evaluate.
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
59
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
60 class
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
61 tree_statement
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
62 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
63 friend class tree_statement_list;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
64
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
65 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
66
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
67 tree_statement (void)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
68 : cmd (0), expr (0), print_flag (true) { }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
69
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
70 tree_statement (tree_command *c)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
71 : cmd (c), expr (0), print_flag (true) { }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
72
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
73 tree_statement (tree_expression *e)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
74 : cmd (0), expr (e), print_flag (true) { }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
75
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
76 ~tree_statement (void);
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
77
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
78 void set_print_flag (bool print)
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
79 { print_flag = print; }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
80
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
81 bool is_command (void)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
82 { return cmd != 0; }
1510
fe9c39fd89c7 [project @ 1995-10-03 10:43:11 by jwe]
jwe
parents: 1491
diff changeset
83
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
84 bool is_expression (void)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
85 { return expr != 0; }
1510
fe9c39fd89c7 [project @ 1995-10-03 10:43:11 by jwe]
jwe
parents: 1491
diff changeset
86
1740
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
87 int line (void);
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
88 int column (void);
1510
fe9c39fd89c7 [project @ 1995-10-03 10:43:11 by jwe]
jwe
parents: 1491
diff changeset
89
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
90 void maybe_echo_code (bool);
1588
27f5ac98fc4a [project @ 1995-10-31 06:04:47 by jwe]
jwe
parents: 1510
diff changeset
91
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
92 bool print_result (void) { return print_flag; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
93
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
94 tree_command *command (void) { return cmd; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
95
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
96 tree_expression *expression (void) { return expr; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
97
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
98 void accept (tree_walker& tw);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
99
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
100 private:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
101
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
102 // Only one of cmd or expr can be valid at once.
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
103
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
104 // Command to execute.
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
105 tree_command *cmd;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
106
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
107 // Expression to evaluate.
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
108 tree_expression *expr;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
109
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
110 // Print result of eval for this command?
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
111 bool print_flag;
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
112 };
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
113
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
114 // A list of statements to evaluate.
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
115
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
116 class
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
117 tree_statement_list : public SLList<tree_statement *>
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
118 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
119 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
120
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
121 tree_statement_list (void)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
122 : SLList<tree_statement *> (), function_body (false) { }
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
123
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
124 tree_statement_list (tree_statement *s)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
125 : SLList<tree_statement *> (), function_body (false) { append (s); }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
126
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
127 ~tree_statement_list (void)
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
128 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
129 while (! empty ())
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
130 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
131 tree_statement *t = remove_front ();
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
132 delete t;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
133 }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
134 }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
135
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
136 void mark_as_function_body (void) { function_body = true; }
1588
27f5ac98fc4a [project @ 1995-10-31 06:04:47 by jwe]
jwe
parents: 1510
diff changeset
137
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
138 octave_value eval (bool print);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
139
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
140 octave_value_list eval (bool print, int nargout);
672
066e1551639c [project @ 1994-09-07 21:10:32 by jwe]
jwe
parents: 632
diff changeset
141
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
142 void accept (tree_walker& tw);
1588
27f5ac98fc4a [project @ 1995-10-31 06:04:47 by jwe]
jwe
parents: 1510
diff changeset
143
27f5ac98fc4a [project @ 1995-10-31 06:04:47 by jwe]
jwe
parents: 1510
diff changeset
144 private:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
145
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
146 // Does this list of statements make up the body of a function?
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
147 bool function_body;
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
148 };
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
149
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
150 // Argument lists. Used to hold the list of expressions that are the
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
151 // arguments in a function call or index expression.
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
152
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
153 class
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
154 tree_argument_list : public SLList<tree_expression *>
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
155 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
156 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
157
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
158 tree_argument_list (void)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
159 : SLList<tree_expression *> () { }
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
160
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
161 tree_argument_list (tree_expression *t)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
162 : SLList<tree_expression *> () { append (t); }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
163
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
164 ~tree_argument_list (void)
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
165 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
166 while (! empty ())
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
167 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
168 tree_expression *t = remove_front ();
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
169 delete t;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
170 }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
171 }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
172
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
173 octave_value_list convert_to_const_vector (void);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
174
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
175 void accept (tree_walker& tw);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
176 };
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
177
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
178 // Parameter lists. Used to hold the list of input and output
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
179 // parameters in a function definition. Elements are identifiers
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
180 // only.
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
181
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
182 class
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
183 tree_parameter_list : public SLList<tree_identifier *>
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
184 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
185 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
186
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
187 tree_parameter_list (void)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
188 : SLList<tree_identifier *> (), marked_for_varargs (0) { }
632
ddc21c0f0089 [project @ 1994-08-19 22:20:16 by jwe]
jwe
parents: 581
diff changeset
189
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
190 tree_parameter_list (tree_identifier *t)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
191 : SLList<tree_identifier *> (), marked_for_varargs (0) { append (t); }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
192
1740
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
193 ~tree_parameter_list (void);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
194
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
195 void mark_as_formal_parameters (void);
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
196
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
197 void mark_varargs (void)
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
198 { marked_for_varargs = 1; }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
199
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
200 bool takes_varargs (void) const
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
201 { return marked_for_varargs != 0; }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
202
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
203 void mark_varargs_only (void)
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
204 { marked_for_varargs = -1; }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
205
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
206 bool varargs_only (void)
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
207 { return (marked_for_varargs < 0); }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
208
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
209 void initialize_undefined_elements (octave_value& val);
1093
51fd9e40a7f7 [project @ 1995-02-03 21:57:34 by jwe]
jwe
parents: 1063
diff changeset
210
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
211 void define_from_arg_vector (const octave_value_list& args);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
212
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
213 bool is_defined (void);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
214
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
215 octave_value_list convert_to_const_vector (tree_va_return_list *vr_list);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
216
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
217 void accept (tree_walker& tw);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
218
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
219 private:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
220
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
221 int marked_for_varargs;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
222 };
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
223
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
224 // Return lists. Used to hold the right hand sides of multiple
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
225 // assignment expressions.
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
226
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
227 class
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
228 tree_return_list : public SLList<tree_index_expression *>
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
229 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
230 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
231
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
232 tree_return_list (void)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
233 : SLList<tree_index_expression *> () { }
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
234
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
235 tree_return_list (tree_index_expression *t)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
236 : SLList<tree_index_expression *> () { append (t); }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
237
1740
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
238 ~tree_return_list (void);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
239
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
240 void accept (tree_walker& tw);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
241 };
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
242
723
1c072f20b522 [project @ 1994-09-21 16:00:10 by jwe]
jwe
parents: 672
diff changeset
243 class
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
244 tree_va_return_list : public SLList<octave_value>
723
1c072f20b522 [project @ 1994-09-21 16:00:10 by jwe]
jwe
parents: 672
diff changeset
245 {
1c072f20b522 [project @ 1994-09-21 16:00:10 by jwe]
jwe
parents: 672
diff changeset
246 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
247
2086
bfb775fb6fe8 [project @ 1996-04-25 05:55:19 by jwe]
jwe
parents: 1996
diff changeset
248 tree_va_return_list (void) : SLList<octave_value> () { }
1269
abaf21f34109 [project @ 1995-04-20 19:16:24 by jwe]
jwe
parents: 1227
diff changeset
249
abaf21f34109 [project @ 1995-04-20 19:16:24 by jwe]
jwe
parents: 1227
diff changeset
250 ~tree_va_return_list (void) { }
723
1c072f20b522 [project @ 1994-09-21 16:00:10 by jwe]
jwe
parents: 672
diff changeset
251 };
1c072f20b522 [project @ 1994-09-21 16:00:10 by jwe]
jwe
parents: 672
diff changeset
252
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
253 // List of expressions that make up a global statement.
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
254
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
255 class
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
256 tree_global
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
257 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
258 public:
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
259
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
260 tree_global (void)
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
261 : id (0), ass_expr (0) { }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
262
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
263 tree_global (tree_identifier *i)
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
264 : id (i), ass_expr (0) { }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
265
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
266 tree_global (tree_simple_assignment_expression *ass)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
267 : id (0), ass_expr (ass) { }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
268
1740
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
269 ~tree_global (void);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
270
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
271 void eval (void);
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
272
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
273 tree_identifier *ident (void) { return id; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
274
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
275 tree_simple_assignment_expression *assign_expr (void) { return ass_expr; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
276
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
277 void accept (tree_walker& tw);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
278
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
279 private:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
280
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
281 // Only one of id or ass_expr can be valid at once.
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
282
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
283 // An identifier to make global.
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
284 tree_identifier *id;
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
285
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
286 // An assignemnt expression. Valid only if the left hand side of
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
287 // the assignment is a simple identifier.
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
288 tree_simple_assignment_expression *ass_expr;
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
289 };
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
290
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
291 class
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
292 tree_global_init_list : public SLList<tree_global *>
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
293 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
294 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
295
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
296 tree_global_init_list (void)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
297 : SLList<tree_global *> () { }
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
298
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
299 tree_global_init_list (tree_global *t)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
300 : SLList<tree_global *> () { append (t); }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
301
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
302 ~tree_global_init_list (void)
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
303 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
304 while (! empty ())
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
305 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
306 tree_global *t = remove_front ();
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
307 delete t;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
308 }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
309 }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
310
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
311 void eval (void);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
312
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
313 void accept (tree_walker& tw);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
314 };
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
315
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
316 class
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
317 tree_if_clause
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
318 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
319 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
320
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
321 tree_if_clause (void) : expr (0), list (0) { }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
322
1740
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
323 tree_if_clause (tree_statement_list *l)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
324 : expr (0), list (l) { }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
325
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
326 tree_if_clause (tree_expression *e, tree_statement_list *l)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
327 : expr (e), list (l) { }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
328
1740
fe9d3b2ded26 [project @ 1996-01-12 11:03:26 by jwe]
jwe
parents: 1588
diff changeset
329 ~tree_if_clause (void);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
330
1827
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
331 bool is_else_clause (void)
effa9400766f [project @ 1996-02-02 14:07:51 by jwe]
jwe
parents: 1740
diff changeset
332 { return ! expr; }
1063
1a3121ebf088 [project @ 1995-01-24 03:25:37 by jwe]
jwe
parents: 1009
diff changeset
333
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
334 int eval (void);
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
335
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
336 tree_expression *condition (void) { return expr; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
337
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
338 tree_statement_list *commands (void) { return list; }
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
339
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
340 void accept (tree_walker& tw);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
341
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
342 private:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
343
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
344 // The condition to test.
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
345 tree_expression *expr;
2124
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 // The list of statements to evaluate if expr is true.
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
348 tree_statement_list *list;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
349 };
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
350
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
351 class
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
352 tree_if_command_list : public SLList<tree_if_clause *>
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
353 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
354 public:
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
355
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
356 tree_if_command_list (void)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
357 : SLList<tree_if_clause *> () { }
1227
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
358
766e2a1a4e7b [project @ 1995-04-10 00:48:19 by jwe]
jwe
parents: 1127
diff changeset
359 tree_if_command_list (tree_if_clause *t)
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
360 : SLList<tree_if_clause *> () { append (t); }
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
361
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
362 ~tree_if_command_list (void)
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
363 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
364 while (! empty ())
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
365 {
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
366 tree_if_clause *t = remove_front ();
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
367 delete t;
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
368 }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
369 }
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
370
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
371 void eval (void);
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 577
diff changeset
372
2124
97a566037a75 [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents: 2086
diff changeset
373 void accept (tree_walker& tw);
577
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
374 };
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
375
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
376 #endif
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
377
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
378 /*
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
379 ;;; Local Variables: ***
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
380 ;;; mode: C++ ***
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
381 ;;; End: ***
91e2164fb1b2 [project @ 1994-08-03 20:06:54 by jwe]
jwe
parents:
diff changeset
382 */