annotate src/pt-pr-code.h @ 2372:b21b42c25350

[project @ 1996-10-12 00:15:08 by jwe]
author jwe
date Sat, 12 Oct 1996 00:15:08 +0000
parents ee55d81f585a
children 64f403ef483d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
1 /*
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
2
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
3 Copyright (C) 1996 John W. Eaton
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
4
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
6
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
10 later version.
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
11
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
15 for more details.
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
16
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
20
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
21 */
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
22
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
23 #if !defined (octave_tree_print_code_h)
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
24 #define octave_tree_print_code_h 1
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
25
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
26 #if defined (__GNUG__)
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
27 #pragma interface
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
28 #endif
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
29
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
30 #include "pt-walk.h"
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
31
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
32 // How to print the code that the parse trees represent.
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
33
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
34 class
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
35 tree_print_code : public tree_walker
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
36 {
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
37 public:
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
38
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
39 tree_print_code (ostream& os_arg) : os (os_arg) { }
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
40
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
41 ~tree_print_code (void) { }
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
42
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
43 void visit_argument_list (tree_argument_list&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
44
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
45 void visit_binary_expression (tree_binary_expression&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
46
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
47 void visit_break_command (tree_break_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
48
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
49 void visit_builtin (tree_builtin&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
50
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
51 void visit_colon_expression (tree_colon_expression&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
52
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
53 void visit_continue_command (tree_continue_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
54
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
55 void visit_for_command (tree_for_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
56
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
57 void visit_function (tree_function&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
58
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
59 void visit_function_header (tree_function&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
60
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
61 void visit_function_trailer (tree_function&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
62
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
63 void visit_global (tree_global&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
64
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
65 void visit_global_command (tree_global_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
66
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
67 void visit_global_init_list (tree_global_init_list&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
68
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
69 void visit_identifier (tree_identifier&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
70
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
71 void visit_if_clause (tree_if_clause&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
72
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
73 void visit_if_command (tree_if_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
74
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
75 void visit_if_command_list (tree_if_command_list&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
76
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
77 void visit_index_expression (tree_index_expression&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
78
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
79 void visit_indirect_ref (tree_indirect_ref&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
80
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
81 void visit_matrix (tree_matrix&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
82
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
83 void visit_matrix_row (tree_matrix_row&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
84
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
85 void visit_multi_assignment_expression (tree_multi_assignment_expression&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
86
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
87 void visit_oct_obj (tree_oct_obj&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
88
2372
b21b42c25350 [project @ 1996-10-12 00:15:08 by jwe]
jwe
parents: 2123
diff changeset
89 void visit_constant (tree_constant&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
90
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
91 void visit_parameter_list (tree_parameter_list&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
92
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
93 void visit_plot_command (tree_plot_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
94
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
95 void visit_plot_limits (plot_limits&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
96
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
97 void visit_plot_range (plot_range&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
98
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
99 void visit_postfix_expression (tree_postfix_expression&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
100
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
101 void visit_prefix_expression (tree_prefix_expression&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
102
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
103 void visit_return_command (tree_return_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
104
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
105 void visit_return_list (tree_return_list&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
106
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
107 void visit_simple_assignment_expression (tree_simple_assignment_expression&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
108
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
109 void visit_statement (tree_statement&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
110
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
111 void visit_statement_list (tree_statement_list&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
112
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
113 void visit_subplot (subplot&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
114
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
115 void visit_subplot_list (subplot_list&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
116
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
117 void visit_subplot_style (subplot_style&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
118
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
119 void visit_subplot_using (subplot_using&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
120
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
121 void visit_try_catch_command (tree_try_catch_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
122
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
123 void visit_unary_expression (tree_unary_expression&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
124
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
125 void visit_unwind_protect_command (tree_unwind_protect_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
126
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
127 void visit_while_command (tree_while_command&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
128
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
129 private:
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
130
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
131 ostream& os;
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
132
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
133 static int curr_print_indent_level;
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
134 static bool beginning_of_line;
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
135
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
136 void reset_indent_level (void)
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
137 { curr_print_indent_level = 0; }
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
138
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
139 void increment_indent_level (void)
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
140 { curr_print_indent_level += 2; }
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
141
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
142 void decrement_indent_level (void)
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
143 { curr_print_indent_level -= 2; }
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
144
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
145 void newline (void);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
146
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
147 void indent (void);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
148
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
149 void reset (void);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
150
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
151 // Must create with an output stream!
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
152
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
153 tree_print_code (void);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
154
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
155 // No copying!
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
156
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
157 tree_print_code (const tree_print_code&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
158
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
159 tree_print_code& operator = (const tree_print_code&);
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
160 };
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
161
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
162 #endif
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
163
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
164 /*
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
165 ;;; Local Variables: ***
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
166 ;;; mode: C++ ***
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
167 ;;; End: ***
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
168 */