annotate libinterp/parse-tree/pt-pr-code.h @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents c19f8cbe0fd5
children e88a07dec498
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29724
diff changeset
3 // Copyright (C) 1996-2022 The Octave Project Developers
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
4 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 // See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 // distribution or <https://octave.org/copyright/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
7 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
8 // This file is part of Octave.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
9 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
10 // Octave is free software: you can redistribute it and/or modify it
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
11 // under the terms of the GNU General Public License as published by
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
12 // the Free Software Foundation, either version 3 of the License, or
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
13 // (at your option) any later version.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
14 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
15 // Octave is distributed in the hope that it will be useful, but
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
16 // WITHOUT ANY WARRANTY; without even the implied warranty of
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
17 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
18 // GNU General Public License for more details.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
19 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
20 // You should have received a copy of the GNU General Public License
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
21 // along with Octave; see the file COPYING. If not, see
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
22 // <https://www.gnu.org/licenses/>.
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 //
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ////////////////////////////////////////////////////////////////////////
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
25
20791
f7084eae3318 maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents: 19697
diff changeset
26 #if ! defined (octave_pt_pr_code_h)
17822
ebb3ef964372 maint: Use common #define syntax "octave_filename_h" in h_files.
Rik <rik@octave.org>
parents: 17744
diff changeset
27 #define octave_pt_pr_code_h 1
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
28
21244
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21017
diff changeset
29 #include "octave-config.h"
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21017
diff changeset
30
4676
c0aa75a64635 [project @ 2003-12-16 16:47:52 by jwe]
jwe
parents: 4342
diff changeset
31 #include <stack>
2530
64f403ef483d [project @ 1996-11-19 18:06:02 by jwe]
jwe
parents: 2372
diff changeset
32 #include <string>
64f403ef483d [project @ 1996-11-19 18:06:02 by jwe]
jwe
parents: 2372
diff changeset
33
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
34 #include "pt-walk.h"
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
35
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
36 namespace octave
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
37 {
23750
ea879bc55272 move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents: 23615
diff changeset
38 class comment_elt;
ea879bc55272 move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents: 23615
diff changeset
39 class comment_list;
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
40 class tree_decl_command;
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
41 class tree_expression;
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
42
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
43 // How to print the code that the parse trees represent.
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
44
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
45 class tree_print_code : public tree_walker
4676
c0aa75a64635 [project @ 2003-12-16 16:47:52 by jwe]
jwe
parents: 4342
diff changeset
46 {
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
47 public:
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
48
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
49 tree_print_code (std::ostream& os_arg,
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
50 const std::string& pfx = "",
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
51 bool pr_orig_txt = true)
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
52 : m_os (os_arg), m_prefix (pfx), m_nesting (),
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
53 m_print_original_text (pr_orig_txt),
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
54 m_curr_print_indent_level (0), m_beginning_of_line (true),
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
55 m_suppress_newlines (0)
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
56 {
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
57 // For "none".
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
58 m_nesting.push ('n');
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
59 }
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
60
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
61 // No copying!
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
62
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
63 tree_print_code (const tree_print_code&) = delete;
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
64
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
65 tree_print_code& operator = (const tree_print_code&) = delete;
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
66
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
67 ~tree_print_code (void) = default;
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
68
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
69 void visit_anon_fcn_handle (tree_anon_fcn_handle&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
70
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
71 void visit_argument_list (tree_argument_list&);
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
72
29724
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
73 void visit_arguments_block (tree_arguments_block&);
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
74
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
75 void visit_args_block_attribute_list (tree_args_block_attribute_list&);
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
76
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
77 void visit_args_block_validation_list (tree_args_block_validation_list&);
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
78
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
79 void visit_arg_validation (tree_arg_validation&);
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
80
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
81 void visit_arg_size_spec (tree_arg_size_spec&);
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
82
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
83 void visit_arg_validation_fcns (tree_arg_validation_fcns&);
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
84
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
85 void visit_binary_expression (tree_binary_expression&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
86
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
87 void visit_break_command (tree_break_command&);
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents: 7715
diff changeset
88
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
89 void visit_colon_expression (tree_colon_expression&);
2846
52e7c4509983 [project @ 1997-03-26 23:27:35 by jwe]
jwe
parents: 2764
diff changeset
90
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
91 void visit_continue_command (tree_continue_command&);
2846
52e7c4509983 [project @ 1997-03-26 23:27:35 by jwe]
jwe
parents: 2764
diff changeset
92
23469
2699c5974844 handle global and persistent in tree_decl_command, not as separate classes
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
93 void visit_decl_command (tree_decl_command&);
2846
52e7c4509983 [project @ 1997-03-26 23:27:35 by jwe]
jwe
parents: 2764
diff changeset
94
23469
2699c5974844 handle global and persistent in tree_decl_command, not as separate classes
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
95 void visit_decl_init_list (tree_decl_init_list&);
2969
1b47dd00a831 [project @ 1997-05-15 17:57:48 by jwe]
jwe
parents: 2961
diff changeset
96
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
97 void visit_decl_elt (tree_decl_elt&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
98
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
99 void visit_simple_for_command (tree_simple_for_command&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
100
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
101 void visit_complex_for_command (tree_complex_for_command&);
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
102
28518
b8ab8b58547d accept spmd command blocks as language elements (bug #58676)
John W. Eaton <jwe@octave.org>
parents: 28256
diff changeset
103 void visit_spmd_command (tree_spmd_command&);
b8ab8b58547d accept spmd command blocks as language elements (bug #58676)
John W. Eaton <jwe@octave.org>
parents: 28256
diff changeset
104
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
105 void visit_octave_user_script (octave_user_script&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
106
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
107 void visit_octave_user_function (octave_user_function&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
108
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
109 void visit_octave_user_function_header (octave_user_function&);
7715
5b4d278ec828 parse scripts completely before executing
John W. Eaton <jwe@octave.org>
parents: 7017
diff changeset
110
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
111 void visit_octave_user_function_trailer (octave_user_function&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
112
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
113 void visit_function_def (tree_function_def&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
114
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
115 void visit_identifier (tree_identifier&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
116
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
117 void visit_if_clause (tree_if_clause&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
118
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
119 void visit_if_command (tree_if_command&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
120
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
121 void visit_if_command_list (tree_if_command_list&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
122
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
123 void visit_index_expression (tree_index_expression&);
3351
8623649c967c [project @ 1999-11-15 16:17:01 by jwe]
jwe
parents: 3165
diff changeset
124
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
125 void visit_matrix (tree_matrix&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
126
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
127 void visit_cell (tree_cell&);
2620
5c773d4745d6 [project @ 1997-01-23 16:26:25 by jwe]
jwe
parents: 2530
diff changeset
128
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
129 void visit_multi_assignment (tree_multi_assignment&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
130
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
131 void visit_no_op_command (tree_no_op_command&);
4342
813effe14ee1 [project @ 2003-02-20 08:35:55 by jwe]
jwe
parents: 4207
diff changeset
132
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
133 void visit_constant (tree_constant&);
15035
a820a990968e new tree_funcall class
John W. Eaton <jwe@octave.org>
parents: 14294
diff changeset
134
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
135 void visit_fcn_handle (tree_fcn_handle&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
136
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
137 void visit_parameter_list (tree_parameter_list&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
138
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
139 void visit_postfix_expression (tree_postfix_expression&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
140
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
141 void visit_prefix_expression (tree_prefix_expression&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
142
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
143 void visit_return_command (tree_return_command&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
144
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
145 void visit_simple_assignment (tree_simple_assignment&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
146
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
147 void visit_statement (tree_statement&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
148
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
149 void visit_statement_list (tree_statement_list&);
2846
52e7c4509983 [project @ 1997-03-26 23:27:35 by jwe]
jwe
parents: 2764
diff changeset
150
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
151 void visit_switch_case (tree_switch_case&);
2846
52e7c4509983 [project @ 1997-03-26 23:27:35 by jwe]
jwe
parents: 2764
diff changeset
152
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
153 void visit_switch_command (tree_switch_command&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
154
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
155 void visit_try_catch_command (tree_try_catch_command&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
156
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
157 void visit_unwind_protect_command (tree_unwind_protect_command&);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
158
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
159 void visit_while_command (tree_while_command&);
3484
8b1f46ac2b64 [project @ 2000-01-27 23:30:45 by jwe]
jwe
parents: 3351
diff changeset
160
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
161 void visit_do_until_command (tree_do_until_command&);
4980
003bbf6c13d8 [project @ 2004-09-09 15:47:17 by jwe]
jwe
parents: 4676
diff changeset
162
26686
581d01526b34 eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
163 void visit_superclass_ref (tree_superclass_ref&);
581d01526b34 eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
164
581d01526b34 eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
165 void visit_metaclass_query (tree_metaclass_query&);
581d01526b34 eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents: 26377
diff changeset
166
23600
db947ba52118 explicitly limit anonymous functions to a single expression
John W. Eaton <jwe@octave.org>
parents: 23469
diff changeset
167 void print_fcn_handle_body (tree_expression *);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
168
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
169 private:
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
170
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
171 std::ostream& m_os;
2530
64f403ef483d [project @ 1996-11-19 18:06:02 by jwe]
jwe
parents: 2372
diff changeset
172
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
173 std::string m_prefix;
4676
c0aa75a64635 [project @ 2003-12-16 16:47:52 by jwe]
jwe
parents: 4342
diff changeset
174
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
175 std::stack<char> m_nesting;
2530
64f403ef483d [project @ 1996-11-19 18:06:02 by jwe]
jwe
parents: 2372
diff changeset
176
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
177 bool m_print_original_text;
3708
9b9efdcbdfd3 [project @ 2000-07-28 20:50:58 by jwe]
jwe
parents: 3665
diff changeset
178
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
179 // Current indentation.
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
180 int m_curr_print_indent_level;
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
181
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
182 // TRUE means we are at the beginning of a line.
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
183 bool m_beginning_of_line;
4980
003bbf6c13d8 [project @ 2004-09-09 15:47:17 by jwe]
jwe
parents: 4676
diff changeset
184
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
185 // Nonzero means we are not printing newlines and indenting.
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
186 int m_suppress_newlines;
8658
73c4516fae10 New evaluator and debugger derived from tree-walker class
John W. Eaton <jwe@octave.org>
parents: 7715
diff changeset
187
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
188 void reset_indent_level (void) { m_curr_print_indent_level = 0; }
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
189
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
190 void increment_indent_level (void) { m_curr_print_indent_level += 2; }
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
191
24846
7620f1f5290d use m_ prefix for member variables in parse tree classes
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
192 void decrement_indent_level (void) { m_curr_print_indent_level -= 2; }
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
193
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
194 void newline (const char *alt_txt = ", ");
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
195
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
196 void indent (void);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
197
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
198 void reset (void);
2961
8a77d52c9d02 [project @ 1997-05-12 01:36:04 by jwe]
jwe
parents: 2960
diff changeset
199
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
200 void print_parens (const tree_expression& expr, const char *txt);
3665
0689afb1d001 [project @ 2000-05-11 19:07:56 by jwe]
jwe
parents: 3523
diff changeset
201
23750
ea879bc55272 move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents: 23615
diff changeset
202 void print_comment_list (comment_list *comment_list);
3665
0689afb1d001 [project @ 2000-05-11 19:07:56 by jwe]
jwe
parents: 3523
diff changeset
203
23750
ea879bc55272 move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents: 23615
diff changeset
204 void print_comment_elt (const comment_elt& comment_elt);
3665
0689afb1d001 [project @ 2000-05-11 19:07:56 by jwe]
jwe
parents: 3523
diff changeset
205
23750
ea879bc55272 move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents: 23615
diff changeset
206 void print_indented_comment (comment_list *comment_list);
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
207
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
208 // Must create with an output stream!
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
209
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
210 tree_print_code (void);
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
211 };
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
212 }
2123
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
213
ee55d81f585a [project @ 1996-05-12 07:16:36 by jwe]
jwe
parents:
diff changeset
214 #endif