annotate src/pt-cmd.h @ 494:2c4d694b87e9

[project @ 1994-07-06 14:55:23 by jwe] Initial revision
author jwe
date Wed, 06 Jul 1994 14:55:23 +0000
parents
children 7ea224e713cd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
494
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
1 // Tree classes. -*- C++ -*-
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
2 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
3
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
4 Copyright (C) 1992, 1993, 1994 John W. Eaton
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
5
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
7
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
11 later version.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
12
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but WITHOUT
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
16 for more details.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
17
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
19 along with Octave; see the file COPYING. If not, write to the Free
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
20 Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
21
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
22 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
23
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
24 #if !defined (octave_tree_cmd_h)
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
25 #define octave_tree_cmd_h 1
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
26
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
27 #if defined (__GNUG__)
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
28 #pragma interface
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
29 #endif
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
30
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
31 class tree_expression;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
32 class tree_index_expression;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
33 class tree_constant;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
34 class symbol_record;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
35
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
36 class tree_command;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
37 class tree_command_list;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
38 class tree_global_command;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
39 class tree_while_command;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
40 class tree_for_command;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
41 class tree_if_command;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
42 class tree_break_command;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
43 class tree_continue_command;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
44 class tree_return_command;
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
45
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
46 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
47 * A base class for commands.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
48 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
49 class
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
50 tree_command : public tree
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
51 {
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
52 };
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
53
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
54 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
55 * A command or two to be executed.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
56 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
57 class
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
58 tree_command_list : public tree_command
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
59 {
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
60 public:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
61 tree_command_list (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
62 tree_command_list (tree *t);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
63
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
64 ~tree_command_list (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
65
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
66 tree_command_list *chain (tree *t);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
67 tree_command_list *reverse (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
68
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
69 void set_print_flag (int print);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
70
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
71 tree_constant eval (int print);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
72
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
73 private:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
74 tree *command; // Command to execute.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
75 int print_flag; // Print result of eval for this command?
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
76 tree_command_list *next; // Next command in list.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
77 };
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
78
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
79 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
80 * Global.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
81 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
82 class
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
83 tree_global_command : public tree_command
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
84 {
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
85 public:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
86 tree_global_command (int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
87 tree_global_command (symbol_record *s, int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
88 tree_global_command (symbol_record *s, tree_expression *e,
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
89 int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
90
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
91 ~tree_global_command (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
92
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
93 tree_global_command *chain (symbol_record *s, int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
94 tree_global_command *chain (symbol_record *s, tree_expression *e,
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
95 int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
96 tree_global_command *reverse (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
97
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
98 tree_constant eval (int print);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
99
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
100 void eval_error (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
101
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
102 private:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
103 symbol_record *sr; // Symbol record from local symbol table.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
104 tree_expression *rhs; // RHS of assignment.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
105 tree_global_command *next; // Next global command.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
106 };
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
107
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
108 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
109 * While.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
110 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
111 class
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
112 tree_while_command : public tree_command
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
113 {
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
114 public:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
115 tree_while_command (int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
116 tree_while_command (tree_expression *e, int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
117 tree_while_command (tree_expression *e, tree *lst, int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
118
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
119 ~tree_while_command (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
120
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
121 tree_constant eval (int print);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
122
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
123 void eval_error (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
124
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
125 private:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
126 tree_expression *expr; // Expression to test.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
127 tree *list; // List of commands to execute.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
128 };
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
129
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
130 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
131 * For.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
132 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
133 class
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
134 tree_for_command : public tree_command
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
135 {
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
136 public:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
137 tree_for_command (int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
138 tree_for_command (tree_index_expression *id, tree_expression *e, tree *lst,
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
139 int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
140
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
141 ~tree_for_command (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
142
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
143 tree_constant eval (int print);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
144
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
145 void eval_error (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
146
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
147 private:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
148 tree_constant do_for_loop_once (tree_constant *rhs, int& quit);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
149
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
150 tree_index_expression *id; // Identifier to modify.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
151 tree_expression *expr; // Expression to evaluate.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
152 tree *list; // List of commands to execute.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
153 };
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
154
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
155 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
156 * Simple if.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
157 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
158 class
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
159 tree_if_command : public tree_command
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
160 {
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
161 public:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
162 tree_if_command (int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
163 tree_if_command (tree *lst, int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
164 tree_if_command (tree_expression *e, tree *lst, int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
165
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
166 ~tree_if_command (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
167
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
168 tree_if_command *chain (tree *lst, int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
169 tree_if_command *chain (tree_expression *e, tree *lst, int l = -1,
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
170 int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
171 tree_if_command *reverse (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
172
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
173 tree_constant eval (int print);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
174
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
175 void eval_error (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
176
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
177 private:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
178 tree_expression *expr; // Expression to test.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
179 tree *list; // Commands to execute.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
180 tree_if_command *next; // Next if command.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
181 };
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
182
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
183 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
184 * Break.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
185 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
186 class
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
187 tree_break_command : public tree_command
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
188 {
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
189 public:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
190 tree_break_command (int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
191
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
192 ~tree_break_command (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
193
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
194 tree_constant eval (int print);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
195 };
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
196
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
197 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
198 * Continue.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
199 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
200 class
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
201 tree_continue_command : public tree_command
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
202 {
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
203 public:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
204 tree_continue_command (int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
205
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
206 ~tree_continue_command (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
207
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
208 tree_constant eval (int print);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
209 };
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
210
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
211 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
212 * Return.
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
213 */
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
214 class
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
215 tree_return_command : public tree_command
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
216 {
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
217 public:
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
218 tree_return_command (int l = -1, int c = -1);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
219
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
220 ~tree_return_command (void);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
221
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
222 tree_constant eval (int print);
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
223 };
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
224
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
225 #endif
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
226
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
227 /*
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
228 ;;; Local Variables: ***
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
229 ;;; mode: C++ ***
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
230 ;;; page-delimiter: "^/\\*" ***
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
231 ;;; End: ***
2c4d694b87e9 [project @ 1994-07-06 14:55:23 by jwe]
jwe
parents:
diff changeset
232 */