Mercurial > hg > octave-nkf
annotate src/pt-pr-code.h @ 10811:e38c071bbc41
allow user query the maximum array size
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Wed, 21 Jul 2010 08:47:34 +0200 |
parents | f3b65e1ae355 |
children | 64e7538db12a |
rev | line source |
---|---|
2123 | 1 /* |
2 | |
7017 | 3 Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2005, |
8920 | 4 2006, 2007, 2008, 2009 John W. Eaton |
2123 | 5 |
6 This file is part of Octave. | |
7 | |
8 Octave is free software; you can redistribute it and/or modify it | |
9 under the terms of the GNU General Public License as published by the | |
7016 | 10 Free Software Foundation; either version 3 of the License, or (at your |
11 option) any later version. | |
2123 | 12 |
13 Octave is distributed in the hope that it will be useful, but WITHOUT | |
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
16 for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
7016 | 19 along with Octave; see the file COPYING. If not, see |
20 <http://www.gnu.org/licenses/>. | |
2123 | 21 |
22 */ | |
23 | |
24 #if !defined (octave_tree_print_code_h) | |
25 #define octave_tree_print_code_h 1 | |
26 | |
4676 | 27 #include <stack> |
2530 | 28 #include <string> |
29 | |
3665 | 30 #include "comment-list.h" |
2123 | 31 #include "pt-walk.h" |
32 | |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
7715
diff
changeset
|
33 class tree_decl_command; |
2961 | 34 class tree_expression; |
35 | |
2123 | 36 // How to print the code that the parse trees represent. |
37 | |
38 class | |
39 tree_print_code : public tree_walker | |
40 { | |
41 public: | |
42 | |
3708 | 43 tree_print_code (std::ostream& os_arg, |
10313 | 44 const std::string& pfx = std::string (), |
45 bool pr_orig_txt = true) | |
4676 | 46 : os (os_arg), prefix (pfx), nesting (), |
47 print_original_text (pr_orig_txt), | |
4980 | 48 curr_print_indent_level (0), beginning_of_line (true), |
49 printing_newlines (true) | |
4676 | 50 { |
51 // For "none". | |
52 nesting.push ('n'); | |
53 } | |
2123 | 54 |
55 ~tree_print_code (void) { } | |
56 | |
5861 | 57 void visit_anon_fcn_handle (tree_anon_fcn_handle&); |
58 | |
2123 | 59 void visit_argument_list (tree_argument_list&); |
60 | |
61 void visit_binary_expression (tree_binary_expression&); | |
62 | |
4207 | 63 void visit_break_command (tree_break_command&); |
2123 | 64 |
65 void visit_colon_expression (tree_colon_expression&); | |
66 | |
4207 | 67 void visit_continue_command (tree_continue_command&); |
2123 | 68 |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
7715
diff
changeset
|
69 void visit_global_command (tree_global_command&); |
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
7715
diff
changeset
|
70 |
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
7715
diff
changeset
|
71 void visit_static_command (tree_static_command&); |
2846 | 72 |
73 void visit_decl_elt (tree_decl_elt&); | |
74 | |
75 void visit_decl_init_list (tree_decl_init_list&); | |
76 | |
2969 | 77 void visit_simple_for_command (tree_simple_for_command&); |
78 | |
79 void visit_complex_for_command (tree_complex_for_command&); | |
2123 | 80 |
7715
5b4d278ec828
parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents:
7017
diff
changeset
|
81 void visit_octave_user_script (octave_user_script&); |
5b4d278ec828
parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents:
7017
diff
changeset
|
82 |
2891 | 83 void visit_octave_user_function (octave_user_function&); |
2123 | 84 |
2891 | 85 void visit_octave_user_function_header (octave_user_function&); |
2123 | 86 |
2891 | 87 void visit_octave_user_function_trailer (octave_user_function&); |
2123 | 88 |
7715
5b4d278ec828
parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents:
7017
diff
changeset
|
89 void visit_function_def (tree_function_def&); |
5b4d278ec828
parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents:
7017
diff
changeset
|
90 |
2123 | 91 void visit_identifier (tree_identifier&); |
92 | |
93 void visit_if_clause (tree_if_clause&); | |
94 | |
95 void visit_if_command (tree_if_command&); | |
96 | |
97 void visit_if_command_list (tree_if_command_list&); | |
98 | |
99 void visit_index_expression (tree_index_expression&); | |
100 | |
101 void visit_matrix (tree_matrix&); | |
102 | |
3351 | 103 void visit_cell (tree_cell&); |
104 | |
2969 | 105 void visit_multi_assignment (tree_multi_assignment&); |
2123 | 106 |
2620 | 107 void visit_no_op_command (tree_no_op_command&); |
108 | |
2372 | 109 void visit_constant (tree_constant&); |
2123 | 110 |
4342 | 111 void visit_fcn_handle (tree_fcn_handle&); |
112 | |
2123 | 113 void visit_parameter_list (tree_parameter_list&); |
114 | |
115 void visit_postfix_expression (tree_postfix_expression&); | |
116 | |
117 void visit_prefix_expression (tree_prefix_expression&); | |
118 | |
4207 | 119 void visit_return_command (tree_return_command&); |
2123 | 120 |
121 void visit_return_list (tree_return_list&); | |
122 | |
2969 | 123 void visit_simple_assignment (tree_simple_assignment&); |
2123 | 124 |
125 void visit_statement (tree_statement&); | |
126 | |
127 void visit_statement_list (tree_statement_list&); | |
128 | |
2846 | 129 void visit_switch_case (tree_switch_case&); |
130 | |
131 void visit_switch_case_list (tree_switch_case_list&); | |
132 | |
133 void visit_switch_command (tree_switch_command&); | |
134 | |
2123 | 135 void visit_try_catch_command (tree_try_catch_command&); |
136 | |
137 void visit_unwind_protect_command (tree_unwind_protect_command&); | |
138 | |
139 void visit_while_command (tree_while_command&); | |
140 | |
3484 | 141 void visit_do_until_command (tree_do_until_command&); |
142 | |
4980 | 143 void suspend_newline (void) { printing_newlines = false; } |
144 | |
145 void resume_newline (void) { printing_newlines = true; } | |
146 | |
2123 | 147 private: |
148 | |
3523 | 149 std::ostream& os; |
2123 | 150 |
3523 | 151 std::string prefix; |
2530 | 152 |
4676 | 153 std::stack<char> nesting; |
154 | |
2530 | 155 bool print_original_text; |
156 | |
3708 | 157 // Current indentation. |
158 int curr_print_indent_level; | |
159 | |
160 // TRUE means we are at the beginning of a line. | |
161 bool beginning_of_line; | |
2123 | 162 |
4980 | 163 // TRUE means we are printing newlines and indenting. |
164 bool printing_newlines; | |
165 | |
8658
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
7715
diff
changeset
|
166 void do_decl_command (tree_decl_command& cmd); |
73c4516fae10
New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents:
7715
diff
changeset
|
167 |
3933 | 168 void reset_indent_level (void) { curr_print_indent_level = 0; } |
2123 | 169 |
3933 | 170 void increment_indent_level (void) { curr_print_indent_level += 2; } |
2123 | 171 |
3933 | 172 void decrement_indent_level (void) { curr_print_indent_level -= 2; } |
2123 | 173 |
4980 | 174 void newline (const char *alt_txt = ", "); |
2123 | 175 |
176 void indent (void); | |
177 | |
178 void reset (void); | |
179 | |
2961 | 180 void print_parens (const tree_expression& expr, const char *txt); |
181 | |
3665 | 182 void print_comment_list (octave_comment_list *comment_list); |
183 | |
184 void print_comment_elt (const octave_comment_elt& comment_elt); | |
185 | |
186 void print_indented_comment (octave_comment_list *comment_list); | |
187 | |
2123 | 188 // Must create with an output stream! |
189 | |
190 tree_print_code (void); | |
191 | |
192 // No copying! | |
193 | |
194 tree_print_code (const tree_print_code&); | |
195 | |
196 tree_print_code& operator = (const tree_print_code&); | |
197 }; | |
198 | |
199 #endif |