Mercurial > octave
annotate libinterp/parse-tree/parse.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 | a61e1a0f6024 |
children | 7781b1e77406 |
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:
30390
diff
changeset
|
3 // Copyright (C) 1993-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 //////////////////////////////////////////////////////////////////////// |
1 | 25 |
20791
f7084eae3318
maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
26 #if ! defined (octave_parse_h) |
383 | 27 #define octave_parse_h 1 |
1 | 28 |
21244
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
21139
diff
changeset
|
29 #include "octave-config.h" |
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
21139
diff
changeset
|
30 |
3021 | 31 #include <cstdio> |
32 | |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
33 #include <deque> |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
34 #include <map> |
27504
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
35 #include <memory> |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
36 #include <set> |
27504
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
37 #include <string> |
4426 | 38 |
28266
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
39 #include "input.h" |
16139
2fd39ab12209
move a function and data member from lexical_feedback to octave_parser
John W. Eaton <jwe@octave.org>
parents:
16138
diff
changeset
|
40 #include "lex.h" |
23654
da89ce0d49eb
avoid possible memory leak in parser
John W. Eaton <jwe@octave.org>
parents:
23653
diff
changeset
|
41 #include "pt-misc.h" |
24362
3fc24b792a24
avoid including symtab.h, symscope.h, or symrec.h unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24361
diff
changeset
|
42 #include "symscope.h" |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
43 #include "token.h" |
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
44 |
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
45 class octave_function; |
29864
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
46 class octave_user_code; |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
47 class octave_user_function; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
48 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
49 namespace octave |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
50 { |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
51 class comment_list; |
29864
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
52 class parse_exception; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
53 class tree; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
54 class tree_anon_fcn_handle; |
29724
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
55 class tree_arg_size_spec; |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
56 class tree_arg_validation; |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
57 class tree_arg_validation_fcns; |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
58 class tree_args_block_attribute_list; |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
59 class tree_args_block_validation_list; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
60 class tree_argument_list; |
29724
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
61 class tree_arguments_block; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
62 class tree_array_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
63 class tree_cell; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
64 class tree_classdef; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
65 class tree_classdef_attribute_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
66 class tree_classdef_body; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
67 class tree_classdef_enum_block; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
68 class tree_classdef_enum_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
69 class tree_classdef_events_block; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
70 class tree_classdef_events_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
71 class tree_classdef_methods_block; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
72 class tree_classdef_methods_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
73 class tree_classdef_properties_block; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
74 class tree_classdef_property_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
75 class tree_classdef_superclass_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
76 class tree_colon_expression; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
77 class tree_command; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
78 class tree_constant; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
79 class tree_decl_command; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
80 class tree_decl_init_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
81 class tree_expression; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
82 class tree_fcn_handle; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
83 class tree_function_def; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
84 class tree_identifier; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
85 class tree_if_clause; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
86 class tree_if_command; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
87 class tree_if_command_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
88 class tree_index_expression; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
89 class tree_matrix; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
90 class tree_matrix; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
91 class tree_parameter_list; |
28518
b8ab8b58547d
accept spmd command blocks as language elements (bug #58676)
John W. Eaton <jwe@octave.org>
parents:
28516
diff
changeset
|
92 class tree_spmd_command; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
93 class tree_statement; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
94 class tree_statement_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
95 class tree_statement_listtree_statement; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
96 class tree_switch_case; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
97 class tree_switch_case_list; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
98 class tree_switch_command; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
99 } |
3772 | 100 |
20940
48b2ad5ee801
maint: Rename oct-obj.[cc|h] to ovl.[cc|h] for clarity.
Rik <rik@octave.org>
parents:
20791
diff
changeset
|
101 #include "ovl.h" |
1 | 102 |
103 // Nonzero means print parser debugging info (-d). | |
4753 | 104 extern int octave_debug; |
1 | 105 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
106 namespace octave |
16133
249d62b3fac8
new class for parser state
John W. Eaton <jwe@octave.org>
parents:
16122
diff
changeset
|
107 { |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
108 class base_parser |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
109 { |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
110 private: |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
111 |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
112 class parent_scope_info |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
113 { |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
114 public: |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
115 |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24270
diff
changeset
|
116 typedef std::pair<symbol_scope, std::string> value_type; |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
117 |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
118 typedef std::deque<value_type>::iterator iterator; |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
119 typedef std::deque<value_type>::const_iterator const_iterator; |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
120 |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
121 typedef std::deque<value_type>::reverse_iterator reverse_iterator; |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
122 typedef std::deque<value_type>::const_reverse_iterator const_reverse_iterator; |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
123 |
28698
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
124 parent_scope_info (void) = delete; |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
125 |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
126 parent_scope_info (base_parser& parser) |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
127 : m_parser (parser), m_info (), m_all_names () |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
128 { } |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
129 |
28718
45d958bc3437
disable copying for base_parser::parent_scope_info class
John W. Eaton <jwe@octave.org>
parents:
28698
diff
changeset
|
130 // No copying! |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
131 |
28718
45d958bc3437
disable copying for base_parser::parent_scope_info class
John W. Eaton <jwe@octave.org>
parents:
28698
diff
changeset
|
132 parent_scope_info (const parent_scope_info&) = delete; |
45d958bc3437
disable copying for base_parser::parent_scope_info class
John W. Eaton <jwe@octave.org>
parents:
28698
diff
changeset
|
133 |
45d958bc3437
disable copying for base_parser::parent_scope_info class
John W. Eaton <jwe@octave.org>
parents:
28698
diff
changeset
|
134 parent_scope_info& operator = (const parent_scope_info&) = delete; |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
135 |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
136 ~parent_scope_info (void) = default; |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
137 |
29572
aef11bb4e6d1
use std::size_t and std::ptrdiff_t in C++ code (bug #60471)
John W. Eaton <jwe@octave.org>
parents:
29359
diff
changeset
|
138 OCTINTERP_API std::size_t size (void) const; |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
139 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
140 OCTINTERP_API void push (const value_type& elt); |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
141 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
142 OCTINTERP_API void push (const symbol_scope& id); |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
143 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
144 OCTINTERP_API void pop (void); |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
145 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
146 OCTINTERP_API bool name_ok (const std::string& name); |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
147 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
148 OCTINTERP_API bool name_current_scope (const std::string& name); |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
149 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
150 OCTINTERP_API symbol_scope parent_scope (void) const; |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
151 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
152 OCTINTERP_API std::string parent_name (void) const; |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
153 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
154 OCTINTERP_API void clear (void); |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
155 |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
156 private: |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
157 |
28698
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
158 base_parser& m_parser; |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
159 std::deque<value_type> m_info; |
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
160 std::set<std::string> m_all_names; |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
161 }; |
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
162 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
163 public: |
16195
b52d2f9294b6
use class for reading lexer input
John W. Eaton <jwe@octave.org>
parents:
16177
diff
changeset
|
164 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
165 OCTINTERP_API base_parser (base_lexer& lxr); |
16157
335041cc657a
optionally use push parser interface
John W. Eaton <jwe@octave.org>
parents:
16153
diff
changeset
|
166 |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
167 // No copying! |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
168 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
169 base_parser (const base_parser&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
170 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
171 base_parser& operator = (const base_parser&) = delete; |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
172 |
29752
e04b4706ca18
declare base_parser destructor virtual
John W. Eaton <jwe@octave.org>
parents:
29654
diff
changeset
|
173 virtual ~base_parser (void); |
16139
2fd39ab12209
move a function and data member from lexical_feedback to octave_parser
John W. Eaton <jwe@octave.org>
parents:
16138
diff
changeset
|
174 |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
175 base_lexer& get_lexer (void) const { return m_lexer; } |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
176 |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
177 bool at_end_of_input (void) const { return m_lexer.m_end_of_input; } |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
178 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
179 OCTINTERP_API void reset (void); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
180 |
27504
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
181 void classdef_object (const std::shared_ptr<tree_classdef>& obj) |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
182 { |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
183 m_classdef_object = obj; |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
184 } |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
185 |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
186 std::shared_ptr<tree_classdef> classdef_object (void) const |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
187 { |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
188 return m_classdef_object; |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
189 } |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
190 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
191 OCTINTERP_API void statement_list (std::shared_ptr<tree_statement_list>& lst); |
27504
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
192 |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
193 std::shared_ptr<tree_statement_list> statement_list (void) const |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
194 { |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
195 return m_stmt_list; |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
196 } |
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
197 |
28698
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
198 void parsing_subfunctions (bool flag) |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
199 { |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
200 m_parsing_subfunctions = flag; |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
201 } |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
202 |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
203 bool parsing_subfunctions (void) const |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
204 { |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
205 return m_parsing_subfunctions; |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
206 } |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
207 |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
208 void parsing_local_functions (bool flag) |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
209 { |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
210 m_parsing_local_functions = flag; |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
211 } |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
212 |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
213 bool parsing_local_functions (void) const |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
214 { |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
215 return m_parsing_local_functions; |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
216 } |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
217 |
28698
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
218 int curr_fcn_depth (void) const |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
219 { |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
220 return m_curr_fcn_depth; |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
221 } |
d45d1b4bb919
allow functions to be redefined in scripts (bug #52851)
John W. Eaton <jwe@octave.org>
parents:
28511
diff
changeset
|
222 |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
223 void endfunction_found (bool flag) |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
224 { |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
225 m_endfunction_found = flag; |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
226 } |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
227 |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
228 bool endfunction_found (void) const |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
229 { |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
230 return m_endfunction_found; |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
231 } |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
232 |
27956
2310164737b3
fix many spelling errors (bug #57613)
John W. Eaton <jwe@octave.org>
parents:
26512
diff
changeset
|
233 // Error messages for mismatched end tokens. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
234 OCTINTERP_API void |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
235 end_token_error (token *tok, token::end_tok_type expected); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
236 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
237 // Check to see that end tokens are properly matched. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
238 OCTINTERP_API bool end_token_ok (token *tok, token::end_tok_type expected); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
239 |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
240 // Handle pushing symbol table for new function scope. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
241 OCTINTERP_API bool push_fcn_symtab (void); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
242 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
243 // Build a constant. |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
244 OCTINTERP_API tree_constant * make_constant (token *tok_val); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
245 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
246 OCTINTERP_API tree_black_hole * make_black_hole (void); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
247 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
248 OCTINTERP_API tree_matrix * make_matrix (tree_argument_list *row); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
249 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
250 OCTINTERP_API tree_matrix * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
251 append_matrix_row (tree_matrix *matrix, tree_argument_list *row); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
252 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
253 OCTINTERP_API tree_cell * make_cell (tree_argument_list *row); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
254 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
255 OCTINTERP_API tree_cell * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
256 append_cell_row (tree_cell *cell, tree_argument_list *row); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
257 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
258 // Build a function handle. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
259 OCTINTERP_API tree_fcn_handle * make_fcn_handle (token *tok_val); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
260 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
261 // Build an anonymous function handle. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
262 OCTINTERP_API tree_anon_fcn_handle * |
23600
db947ba52118
explicitly limit anonymous functions to a single expression
John W. Eaton <jwe@octave.org>
parents:
23502
diff
changeset
|
263 make_anon_fcn_handle (tree_parameter_list *param_list, |
30390
a61e1a0f6024
maint: style check C++ files in libinterp/ ahead of 7.1 release.
Rik <rik@octave.org>
parents:
30144
diff
changeset
|
264 tree_expression *expr, const filepos& at_pos); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
265 |
23655
bbcc1e08aaed
improve colon expression construction and avoid possible memory leak
John W. Eaton <jwe@octave.org>
parents:
23654
diff
changeset
|
266 // Build a colon expression. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
267 OCTINTERP_API tree_expression * |
23655
bbcc1e08aaed
improve colon expression construction and avoid possible memory leak
John W. Eaton <jwe@octave.org>
parents:
23654
diff
changeset
|
268 make_colon_expression (tree_expression *base, tree_expression *limit, |
bbcc1e08aaed
improve colon expression construction and avoid possible memory leak
John W. Eaton <jwe@octave.org>
parents:
23654
diff
changeset
|
269 tree_expression *incr = nullptr); |
bbcc1e08aaed
improve colon expression construction and avoid possible memory leak
John W. Eaton <jwe@octave.org>
parents:
23654
diff
changeset
|
270 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
271 // Build a binary expression. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
272 OCTINTERP_API tree_expression * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
273 make_binary_op (int op, tree_expression *op1, token *tok_val, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
274 tree_expression *op2); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
275 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
276 // Build a boolean expression. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
277 OCTINTERP_API tree_expression * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
278 make_boolean_op (int op, tree_expression *op1, token *tok_val, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
279 tree_expression *op2); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
280 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
281 // Build a prefix expression. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
282 OCTINTERP_API tree_expression * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
283 make_prefix_op (int op, tree_expression *op1, token *tok_val); |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
284 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
285 // Build a postfix expression. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
286 OCTINTERP_API tree_expression * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
287 make_postfix_op (int op, tree_expression *op1, token *tok_val); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
288 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
289 // Build an unwind-protect command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
290 OCTINTERP_API tree_command * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
291 make_unwind_command (token *unwind_tok, tree_statement_list *body, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
292 tree_statement_list *cleanup, token *end_tok, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
293 comment_list *lc, comment_list *mc); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
294 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
295 // Build a try-catch command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
296 OCTINTERP_API tree_command * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
297 make_try_command (token *try_tok, tree_statement_list *body, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
298 char catch_sep, tree_statement_list *cleanup, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
299 token *end_tok, comment_list *lc, |
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
300 comment_list *mc); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
301 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
302 // Build a while command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
303 OCTINTERP_API tree_command * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
304 make_while_command (token *while_tok, tree_expression *expr, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
305 tree_statement_list *body, token *end_tok, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
306 comment_list *lc); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
307 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
308 // Build a do-until command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
309 OCTINTERP_API tree_command * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
310 make_do_until_command (token *until_tok, tree_statement_list *body, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
311 tree_expression *expr, comment_list *lc); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
312 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
313 // Build a for command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
314 OCTINTERP_API tree_command * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
315 make_for_command (int tok_id, token *for_tok, tree_argument_list *lhs, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
316 tree_expression *expr, tree_expression *maxproc, |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
317 tree_statement_list *body, token *end_tok, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
318 comment_list *lc); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
319 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
320 // Build a break command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
321 OCTINTERP_API tree_command * make_break_command (token *break_tok); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
322 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
323 // Build a continue command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
324 OCTINTERP_API tree_command * make_continue_command (token *continue_tok); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
325 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
326 // Build a return command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
327 OCTINTERP_API tree_command * make_return_command (token *return_tok); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
328 |
28518
b8ab8b58547d
accept spmd command blocks as language elements (bug #58676)
John W. Eaton <jwe@octave.org>
parents:
28516
diff
changeset
|
329 // Build an spmd command. |
b8ab8b58547d
accept spmd command blocks as language elements (bug #58676)
John W. Eaton <jwe@octave.org>
parents:
28516
diff
changeset
|
330 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
331 OCTINTERP_API tree_spmd_command * |
28518
b8ab8b58547d
accept spmd command blocks as language elements (bug #58676)
John W. Eaton <jwe@octave.org>
parents:
28516
diff
changeset
|
332 make_spmd_command (token *spmd_tok, tree_statement_list *body, |
b8ab8b58547d
accept spmd command blocks as language elements (bug #58676)
John W. Eaton <jwe@octave.org>
parents:
28516
diff
changeset
|
333 token *end_tok, comment_list *lc, comment_list *tc); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
334 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
335 // Start an if command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
336 OCTINTERP_API tree_if_command_list * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
337 start_if_command (tree_expression *expr, tree_statement_list *list); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
338 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
339 // Finish an if command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
340 OCTINTERP_API tree_if_command * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
341 finish_if_command (token *if_tok, tree_if_command_list *list, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
342 token *end_tok, comment_list *lc); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
343 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
344 // Build an elseif clause. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
345 OCTINTERP_API tree_if_clause * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
346 make_elseif_clause (token *elseif_tok, tree_expression *expr, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
347 tree_statement_list *list, comment_list *lc); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
348 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
349 OCTINTERP_API tree_if_clause * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
350 make_else_clause (token *else_tok, comment_list *lc, |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
351 tree_statement_list *list); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
352 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
353 OCTINTERP_API tree_if_command_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
354 append_if_clause (tree_if_command_list *list, tree_if_clause *clause); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
355 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
356 // Finish a switch command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
357 OCTINTERP_API tree_switch_command * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
358 finish_switch_command (token *switch_tok, tree_expression *expr, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
359 tree_switch_case_list *list, token *end_tok, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
360 comment_list *lc); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
361 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
362 OCTINTERP_API tree_switch_case_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
363 make_switch_case_list (tree_switch_case *switch_case); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
364 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
365 // Build a switch case. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
366 OCTINTERP_API tree_switch_case * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
367 make_switch_case (token *case_tok, tree_expression *expr, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
368 tree_statement_list *list, comment_list *lc); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
369 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
370 OCTINTERP_API tree_switch_case * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
371 make_default_switch_case (token *default_tok, comment_list *lc, |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
372 tree_statement_list *list); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
373 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
374 OCTINTERP_API tree_switch_case_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
375 append_switch_case (tree_switch_case_list *list, tree_switch_case *elt); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
376 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
377 // Build an assignment to a variable. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
378 OCTINTERP_API tree_expression * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
379 make_assign_op (int op, tree_argument_list *lhs, token *eq_tok, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
380 tree_expression *rhs); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
381 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
382 // Define a script. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
383 OCTINTERP_API void |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
384 make_script (tree_statement_list *cmds, tree_statement *end_script); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
385 |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
386 // Handle identifier that is recognized as a function name. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
387 OCTINTERP_API tree_identifier * |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
388 make_fcn_name (tree_identifier *id); |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
389 |
23673
1d1ce4df5255
refactor bison rules for parsing functions
John W. Eaton <jwe@octave.org>
parents:
23655
diff
changeset
|
390 // Define a function. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
391 OCTINTERP_API tree_function_def * |
23673
1d1ce4df5255
refactor bison rules for parsing functions
John W. Eaton <jwe@octave.org>
parents:
23655
diff
changeset
|
392 make_function (token *fcn_tok, tree_parameter_list *ret_list, |
1d1ce4df5255
refactor bison rules for parsing functions
John W. Eaton <jwe@octave.org>
parents:
23655
diff
changeset
|
393 tree_identifier *id, tree_parameter_list *param_list, |
1d1ce4df5255
refactor bison rules for parsing functions
John W. Eaton <jwe@octave.org>
parents:
23655
diff
changeset
|
394 tree_statement_list *body, tree_statement *end_fcn_stmt, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
395 comment_list *lc); |
23673
1d1ce4df5255
refactor bison rules for parsing functions
John W. Eaton <jwe@octave.org>
parents:
23655
diff
changeset
|
396 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
397 // Begin defining a function. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
398 OCTINTERP_API octave_user_function * |
23673
1d1ce4df5255
refactor bison rules for parsing functions
John W. Eaton <jwe@octave.org>
parents:
23655
diff
changeset
|
399 start_function (tree_identifier *id, tree_parameter_list *param_list, |
1d1ce4df5255
refactor bison rules for parsing functions
John W. Eaton <jwe@octave.org>
parents:
23655
diff
changeset
|
400 tree_statement_list *body, tree_statement *end_function); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
401 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
402 // Create a no-op statement for end_function. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
403 OCTINTERP_API tree_statement * |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
404 make_end (const std::string& type, bool eof, |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
405 const filepos& beg_pos, const filepos& end_pos); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
406 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
407 // Do most of the work for defining a function. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
408 OCTINTERP_API octave_user_function * |
23673
1d1ce4df5255
refactor bison rules for parsing functions
John W. Eaton <jwe@octave.org>
parents:
23655
diff
changeset
|
409 frob_function (tree_identifier *id, octave_user_function *fcn); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
410 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
411 // Finish defining a function. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
412 OCTINTERP_API tree_function_def * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
413 finish_function (tree_parameter_list *ret_list, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
414 octave_user_function *fcn, comment_list *lc, |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
415 int l, int c); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
416 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
417 OCTINTERP_API tree_statement_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
418 append_function_body (tree_statement_list *body, tree_statement_list *list); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
419 |
29724
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
420 // Make an arguments validation block. |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
421 OCTINTERP_API tree_arguments_block * |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
422 make_arguments_block (token *arguments_tok, |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
423 tree_args_block_attribute_list *attr_list, |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
424 tree_args_block_validation_list *validation_list, |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
425 token *end_tok, comment_list *lc, comment_list *tc); |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
426 |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
427 OCTINTERP_API tree_args_block_attribute_list * |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
428 make_args_attribute_list (tree_identifier *attribute_name); |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
429 |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
430 // Make an argument validation. |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
431 OCTINTERP_API tree_arg_validation * |
29729
d0ce7260978d
also accept validation syntax for classdef properties
John W. Eaton <jwe@octave.org>
parents:
29724
diff
changeset
|
432 make_arg_validation (tree_arg_size_spec *size_spec, |
29724
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
433 tree_identifier *class_name, |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
434 tree_arg_validation_fcns *validation_fcns, |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
435 tree_expression *default_value); |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
436 |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
437 // Make an argument validation list. |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
438 OCTINTERP_API tree_args_block_validation_list * |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
439 make_args_validation_list (tree_arg_validation *arg_validation); |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
440 |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
441 // Append an argument validation to an existing list. |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
442 OCTINTERP_API tree_args_block_validation_list * |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
443 append_args_validation_list (tree_args_block_validation_list *list, |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
444 tree_arg_validation *arg_validation); |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
445 |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
446 // Make an argument size specification object. |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
447 OCTINTERP_API tree_arg_size_spec * |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
448 make_arg_size_spec (tree_argument_list *size_args); |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
449 |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
450 // Make a list of argument validation functions. |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
451 OCTINTERP_API tree_arg_validation_fcns * |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
452 make_arg_validation_fcns (tree_argument_list *fcn_args); |
c19f8cbe0fd5
initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents:
29655
diff
changeset
|
453 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
454 // Reset state after parsing function. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
455 OCTINTERP_API void |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
456 recover_from_parsing_function (void); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
457 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
458 OCTINTERP_API tree_classdef * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
459 make_classdef (token *tok_val, tree_classdef_attribute_list *a, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
460 tree_identifier *id, tree_classdef_superclass_list *sc, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
461 tree_classdef_body *body, token *end_tok, |
28511
59dfd9ed72a3
capture comments for classdef classes, properties, events, and enumerations
John W. Eaton <jwe@octave.org>
parents:
28407
diff
changeset
|
462 comment_list *lc, comment_list *tc); |
16155
0259254a3ccc
maint: periodic merge of default to classdef
John W. Eaton <jwe@octave.org>
parents:
16153
diff
changeset
|
463 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
464 OCTINTERP_API tree_classdef_properties_block * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
465 make_classdef_properties_block (token *tok_val, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
466 tree_classdef_attribute_list *a, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
467 tree_classdef_property_list *plist, |
28511
59dfd9ed72a3
capture comments for classdef classes, properties, events, and enumerations
John W. Eaton <jwe@octave.org>
parents:
28407
diff
changeset
|
468 token *end_tok, comment_list *lc, |
59dfd9ed72a3
capture comments for classdef classes, properties, events, and enumerations
John W. Eaton <jwe@octave.org>
parents:
28407
diff
changeset
|
469 comment_list *tc); |
16155
0259254a3ccc
maint: periodic merge of default to classdef
John W. Eaton <jwe@octave.org>
parents:
16153
diff
changeset
|
470 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
471 OCTINTERP_API tree_classdef_property_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
472 make_classdef_property_list (tree_classdef_property *prop); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
473 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
474 OCTINTERP_API tree_classdef_property * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
475 make_classdef_property (comment_list *lc, tree_identifier *id, |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
476 tree_arg_validation *av); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
477 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
478 OCTINTERP_API tree_classdef_property_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
479 append_classdef_property (tree_classdef_property_list *list, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
480 tree_classdef_property *elt); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
481 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
482 OCTINTERP_API tree_classdef_methods_block * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
483 make_classdef_methods_block (token *tok_val, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
484 tree_classdef_attribute_list *a, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
485 tree_classdef_methods_list *mlist, |
28511
59dfd9ed72a3
capture comments for classdef classes, properties, events, and enumerations
John W. Eaton <jwe@octave.org>
parents:
28407
diff
changeset
|
486 token *end_tok, comment_list *lc, |
59dfd9ed72a3
capture comments for classdef classes, properties, events, and enumerations
John W. Eaton <jwe@octave.org>
parents:
28407
diff
changeset
|
487 comment_list *tc); |
16155
0259254a3ccc
maint: periodic merge of default to classdef
John W. Eaton <jwe@octave.org>
parents:
16153
diff
changeset
|
488 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
489 OCTINTERP_API tree_classdef_events_block * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
490 make_classdef_events_block (token *tok_val, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
491 tree_classdef_attribute_list *a, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
492 tree_classdef_events_list *elist, |
28511
59dfd9ed72a3
capture comments for classdef classes, properties, events, and enumerations
John W. Eaton <jwe@octave.org>
parents:
28407
diff
changeset
|
493 token *end_tok, comment_list *lc, |
59dfd9ed72a3
capture comments for classdef classes, properties, events, and enumerations
John W. Eaton <jwe@octave.org>
parents:
28407
diff
changeset
|
494 comment_list *tc); |
16155
0259254a3ccc
maint: periodic merge of default to classdef
John W. Eaton <jwe@octave.org>
parents:
16153
diff
changeset
|
495 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
496 OCTINTERP_API tree_classdef_events_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
497 make_classdef_events_list (tree_classdef_event *e); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
498 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
499 OCTINTERP_API tree_classdef_event * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
500 make_classdef_event (comment_list *lc, tree_identifier *id); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
501 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
502 OCTINTERP_API tree_classdef_events_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
503 append_classdef_event (tree_classdef_events_list *list, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
504 tree_classdef_event *elt); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
505 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
506 OCTINTERP_API tree_classdef_enum_block * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
507 make_classdef_enum_block (token *tok_val, |
16155
0259254a3ccc
maint: periodic merge of default to classdef
John W. Eaton <jwe@octave.org>
parents:
16153
diff
changeset
|
508 tree_classdef_attribute_list *a, |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
509 tree_classdef_enum_list *elist, |
28511
59dfd9ed72a3
capture comments for classdef classes, properties, events, and enumerations
John W. Eaton <jwe@octave.org>
parents:
28407
diff
changeset
|
510 token *end_tok, comment_list *lc, |
59dfd9ed72a3
capture comments for classdef classes, properties, events, and enumerations
John W. Eaton <jwe@octave.org>
parents:
28407
diff
changeset
|
511 comment_list *tc); |
16155
0259254a3ccc
maint: periodic merge of default to classdef
John W. Eaton <jwe@octave.org>
parents:
16153
diff
changeset
|
512 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
513 OCTINTERP_API tree_classdef_enum_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
514 make_classdef_enum_list (tree_classdef_enum *e); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
515 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
516 OCTINTERP_API tree_classdef_enum * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
517 make_classdef_enum (tree_identifier *id, tree_expression *expr, |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
518 comment_list *lc); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
519 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
520 OCTINTERP_API tree_classdef_enum_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
521 append_classdef_enum (tree_classdef_enum_list *list, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
522 tree_classdef_enum *elt); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
523 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
524 OCTINTERP_API tree_classdef_superclass_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
525 make_classdef_superclass_list (tree_classdef_superclass *sc); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
526 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
527 OCTINTERP_API tree_classdef_superclass * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
528 make_classdef_superclass (token *fqident); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
529 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
530 OCTINTERP_API tree_classdef_superclass_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
531 append_classdef_superclass (tree_classdef_superclass_list *list, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
532 tree_classdef_superclass *elt); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
533 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
534 OCTINTERP_API tree_classdef_attribute_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
535 make_classdef_attribute_list (tree_classdef_attribute *attr); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
536 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
537 OCTINTERP_API tree_classdef_attribute * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
538 make_classdef_attribute (tree_identifier *id, |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
539 tree_expression *expr = nullptr); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
540 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
541 OCTINTERP_API tree_classdef_attribute * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
542 make_not_classdef_attribute (tree_identifier *id); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
543 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
544 OCTINTERP_API tree_classdef_attribute_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
545 append_classdef_attribute (tree_classdef_attribute_list *list, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
546 tree_classdef_attribute *elt); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
547 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
548 OCTINTERP_API tree_classdef_body * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
549 make_classdef_body (tree_classdef_properties_block *pb); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
550 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
551 OCTINTERP_API tree_classdef_body * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
552 make_classdef_body (tree_classdef_methods_block *mb); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
553 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
554 OCTINTERP_API tree_classdef_body * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
555 make_classdef_body (tree_classdef_events_block *evb); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
556 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
557 OCTINTERP_API tree_classdef_body * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
558 make_classdef_body (tree_classdef_enum_block *enb); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
559 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
560 OCTINTERP_API tree_classdef_body * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
561 append_classdef_properties_block (tree_classdef_body *body, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
562 tree_classdef_properties_block *block); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
563 |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
564 OCTINTERP_API tree_classdef_body * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
565 append_classdef_methods_block (tree_classdef_body *body, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
566 tree_classdef_methods_block *block); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
567 |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
568 OCTINTERP_API tree_classdef_body * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
569 append_classdef_events_block (tree_classdef_body *body, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
570 tree_classdef_events_block *block); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
571 |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
572 OCTINTERP_API tree_classdef_body * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
573 append_classdef_enum_block (tree_classdef_body *body, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
574 tree_classdef_enum_block *block); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
575 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
576 OCTINTERP_API octave_user_function * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
577 start_classdef_external_method (tree_identifier *id, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
578 tree_parameter_list *pl); |
16155
0259254a3ccc
maint: periodic merge of default to classdef
John W. Eaton <jwe@octave.org>
parents:
16153
diff
changeset
|
579 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
580 OCTINTERP_API tree_function_def * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
581 finish_classdef_external_method (octave_user_function *fcn, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
582 tree_parameter_list *ret_list, |
23750
ea879bc55272
move comment_list and comment_elt classes to octave namespace
John W. Eaton <jwe@octave.org>
parents:
23696
diff
changeset
|
583 comment_list *cl); |
18262
69990d5edcc2
Allow to parse external methods declaration in classdef files.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17856
diff
changeset
|
584 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
585 OCTINTERP_API tree_classdef_methods_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
586 make_classdef_methods_list (tree_function_def *fcn_def); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
587 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
588 OCTINTERP_API tree_classdef_methods_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
589 append_classdef_method (tree_classdef_methods_list *list, |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
590 tree_function_def *fcn_def); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
591 |
29864
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
592 OCTINTERP_API bool |
24067
5b88383b9a69
install local functions after classdef parse is complete (bug #52080)
John W. Eaton <jwe@octave.org>
parents:
23750
diff
changeset
|
593 finish_classdef_file (tree_classdef *cls, |
5b88383b9a69
install local functions after classdef parse is complete (bug #52080)
John W. Eaton <jwe@octave.org>
parents:
23750
diff
changeset
|
594 tree_statement_list *local_fcns); |
5b88383b9a69
install local functions after classdef parse is complete (bug #52080)
John W. Eaton <jwe@octave.org>
parents:
23750
diff
changeset
|
595 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
596 // Make an index expression. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
597 OCTINTERP_API tree_index_expression * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
598 make_index_expression (tree_expression *expr, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
599 tree_argument_list *args, char type); |
18262
69990d5edcc2
Allow to parse external methods declaration in classdef files.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
17856
diff
changeset
|
600 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
601 // Make an indirect reference expression. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
602 OCTINTERP_API tree_index_expression * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
603 make_indirect_ref (tree_expression *expr, const std::string&); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
604 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
605 // Make an indirect reference expression with dynamic field name. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
606 OCTINTERP_API tree_index_expression * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
607 make_indirect_ref (tree_expression *expr, tree_expression *field); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
608 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
609 // Make a declaration command. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
610 OCTINTERP_API tree_decl_command * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
611 make_decl_command (int tok, token *tok_val, tree_decl_init_list *lst); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
612 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
613 OCTINTERP_API tree_decl_init_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
614 make_decl_init_list (tree_decl_elt *elt); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
615 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
616 OCTINTERP_API tree_decl_elt * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
617 make_decl_elt (tree_identifier *id, token *eq_op = nullptr, |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
618 tree_expression *expr = nullptr); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
619 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
620 OCTINTERP_API tree_decl_init_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
621 append_decl_init_list (tree_decl_init_list *list, tree_decl_elt *elt); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
622 |
23654
da89ce0d49eb
avoid possible memory leak in parser
John W. Eaton <jwe@octave.org>
parents:
23653
diff
changeset
|
623 // Validate an function parameter list. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
624 OCTINTERP_API bool |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
625 validate_param_list (tree_parameter_list *lst, |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
626 tree_parameter_list::in_or_out type); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
627 // Validate matrix or cell |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
628 OCTINTERP_API bool validate_array_list (tree_expression *e); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
629 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
630 // Validate matrix object used in "[lhs] = ..." assignments. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
631 OCTINTERP_API tree_argument_list * |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
632 validate_matrix_for_assignment (tree_expression *e); |
16273
c5e5f6ccac5d
9/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16237
diff
changeset
|
633 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
634 // Finish building an array_list (common action for finish_matrix |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
635 // and finish_cell). |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
636 OCTINTERP_API tree_expression * |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
637 finish_array_list (tree_array_list *a, token *open_delim, |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
638 token *close_delim); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
639 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
640 // Finish building a matrix list. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
641 OCTINTERP_API tree_expression * |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
642 finish_matrix (tree_matrix *m, token *open_delim, token *close_delim); |
16237
70f465930546
rearrange class heirarchy for tree_cell and tree_matrix
John W. Eaton <jwe@octave.org>
parents:
16210
diff
changeset
|
643 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
644 // Finish building a cell list. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
645 OCTINTERP_API tree_expression * |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
646 finish_cell (tree_cell *c, token *open_delim, token *close_delim); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
647 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
648 OCTINTERP_API tree_identifier * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
649 make_identifier (token *ident); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
650 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
651 OCTINTERP_API tree_superclass_ref * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
652 make_superclass_ref (token *superclassref); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
653 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
654 OCTINTERP_API tree_metaclass_query * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
655 make_metaclass_query (token *metaquery); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
656 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
657 // Set the print flag for a statement based on the separator type. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
658 OCTINTERP_API tree_statement_list * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
659 set_stmt_print_flag (tree_statement_list *, char, bool); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
660 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
661 // Finish building a statement. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
662 template <typename T> |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
663 OCTINTERP_API tree_statement * make_statement (T *arg); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
664 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
665 // Create a statement list. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
666 OCTINTERP_API tree_statement_list * |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
667 make_statement_list (tree_statement *stmt); |
17693
efbe746f8fa8
eliminate octave_comment_buffer singleton
John W. Eaton <jwe@octave.org>
parents:
17283
diff
changeset
|
668 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
669 // Append a statement to an existing statement list. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
670 OCTINTERP_API tree_statement_list * |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
671 append_statement_list (tree_statement_list *list, char sep, |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
672 tree_statement *stmt, bool warn_missing_semi); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
673 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
674 OCTINTERP_API tree_argument_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
675 make_argument_list (tree_expression *expr); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
676 |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
677 OCTINTERP_API tree_argument_list * |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
678 append_argument_list (tree_argument_list *list, tree_expression *expr); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
679 |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
680 OCTINTERP_API tree_parameter_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
681 make_parameter_list (tree_parameter_list::in_or_out io); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
682 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
683 OCTINTERP_API tree_parameter_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
684 make_parameter_list (tree_parameter_list::in_or_out io, tree_decl_elt *t); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
685 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
686 OCTINTERP_API tree_parameter_list * |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
687 make_parameter_list (tree_parameter_list::in_or_out io, |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
688 tree_identifier *id); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
689 |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
690 OCTINTERP_API tree_parameter_list * |
30144
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
691 append_parameter_list (tree_parameter_list *list, tree_decl_elt *t); |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
692 |
3c2dee80b542
attempt more uniform handling of list concatenation in the parser
John W. Eaton <jwe@octave.org>
parents:
30140
diff
changeset
|
693 OCTINTERP_API tree_parameter_list * |
30140
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
694 append_parameter_list (tree_parameter_list *list, tree_identifier *id); |
a001811a68e6
use parser functions to build parse tree objects in grammar rule actions
John W. Eaton <jwe@octave.org>
parents:
29864
diff
changeset
|
695 |
26662
05fc703b419a
update handling of command-style function call syntax in eval
John W. Eaton <jwe@octave.org>
parents:
26513
diff
changeset
|
696 // Don't allow parsing command syntax. If the parser/lexer is |
05fc703b419a
update handling of command-style function call syntax in eval
John W. Eaton <jwe@octave.org>
parents:
26513
diff
changeset
|
697 // reset, this setting is also reset to the default (allow command |
05fc703b419a
update handling of command-style function call syntax in eval
John W. Eaton <jwe@octave.org>
parents:
26513
diff
changeset
|
698 // syntax). |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
699 OCTINTERP_API void disallow_command_syntax (void); |
26662
05fc703b419a
update handling of command-style function call syntax in eval
John W. Eaton <jwe@octave.org>
parents:
26513
diff
changeset
|
700 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
701 // Generic error messages. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
702 OCTINTERP_API void bison_error (const std::string& s); |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
703 OCTINTERP_API void bison_error (const std::string& s, const filepos& pos); |
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
704 OCTINTERP_API void bison_error (const std::string& s, int line, int column); |
29864
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
705 OCTINTERP_API void bison_error (const std::list<parse_exception>& pe); |
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
706 OCTINTERP_API void bison_error (const parse_exception& pe); |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
707 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
708 friend OCTINTERP_API octave_value |
27509
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
709 parse_fcn_file (interpreter& interp, const std::string& full_file, |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
710 const std::string& file, const std::string& dir_name, |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
711 const std::string& dispatch_type, |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
712 const std::string& package_name, bool require_file, |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
713 bool force_script, bool autoload, bool relative_lookup); |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
714 |
28266
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
715 // Thih interface allows push or pull parsers to be used |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
716 // equivalently, provided that the push parser also owns its input |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
717 // method (see below). Alternatively, the push parser interface may |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
718 // use a separate run method and completely separate input from |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
719 // lexical analysis and parsing. |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
720 |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
721 virtual int run (void) = 0; |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
722 |
29864
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
723 // Check primary script or function generated by the parser for |
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
724 // semantic errors. |
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
725 OCTINTERP_API bool validate_primary_fcn (void); |
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
726 |
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
727 OCTINTERP_API bool finish_input (tree_statement_list *lst, |
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
728 bool at_eof = false); |
e2e493712818
improve previous change for command syntax parsing (bug #60882)
John W. Eaton <jwe@octave.org>
parents:
29753
diff
changeset
|
729 |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
730 protected: |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16133
diff
changeset
|
731 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
732 // Contains error message if Bison-generated parser returns non-zero |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
733 // status. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
734 std::string m_parse_error_msg; |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
735 |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
736 // Have we found an explicit end to a function? |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
737 bool m_endfunction_found; |
16142
26d65d677557
rename yyerror to bison_error and make it a member of octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16139
diff
changeset
|
738 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
739 // TRUE means we are in the process of autoloading a function. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
740 bool m_autoloading; |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
741 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
742 // TRUE means the current function file was found in a relative path |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
743 // element. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
744 bool m_fcn_file_from_relative_lookup; |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
745 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
746 // FALSE if we are still at the primary function. Subfunctions can |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
747 // only be declared inside function files. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
748 bool m_parsing_subfunctions; |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
749 |
23343
49f051ef6f2f
local functions in classdef files (bug #41723)
John W. Eaton <jwe@octave.org>
parents:
23342
diff
changeset
|
750 // TRUE if we are parsing local functions defined at after a |
49f051ef6f2f
local functions in classdef files (bug #41723)
John W. Eaton <jwe@octave.org>
parents:
23342
diff
changeset
|
751 // classdef block. Local functions can only be declared inside |
49f051ef6f2f
local functions in classdef files (bug #41723)
John W. Eaton <jwe@octave.org>
parents:
23342
diff
changeset
|
752 // classdef files. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
753 bool m_parsing_local_functions; |
23343
49f051ef6f2f
local functions in classdef files (bug #41723)
John W. Eaton <jwe@octave.org>
parents:
23342
diff
changeset
|
754 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
755 // Maximum function depth detected. Used to determine whether |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
756 // we have nested functions or just implicitly ended subfunctions. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
757 int m_max_fcn_depth; |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
758 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
759 // = 0 currently outside any function. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
760 // = 1 inside the primary function or a subfunction. |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
761 // > 1 means we are looking at a function definition that seems to be |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
762 // inside a function. Note that the function still might not be a |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
763 // nested function. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
764 int m_curr_fcn_depth; |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
765 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
766 // Scope where we install all subfunctions and nested functions. Only |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
767 // used while reading function files. |
24361
8bcfddad15ec
use shared_ptr to manage symbol_scope objects
John W. Eaton <jwe@octave.org>
parents:
24270
diff
changeset
|
768 symbol_scope m_primary_fcn_scope; |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
769 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
770 // Name of the current class when we are parsing class methods or |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
771 // constructors. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
772 std::string m_curr_class_name; |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
773 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
774 // Name of the current package when we are parsing an element contained |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
775 // in a package directory (+-directory). |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
776 std::string m_curr_package_name; |
16676
7368654f302f
Initial support for (classdef) packages.
Michael Goffioul <michael.goffioul@gmail.com>
parents:
16644
diff
changeset
|
777 |
23054
564e959a0e89
avoid invalid nested function and subfunctions definitions (bug #50014)
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
778 // Nested function scopes and names currently being parsed. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
779 parent_scope_info m_function_scopes; |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
780 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
781 // Pointer to the primary user function or user script function. |
27505
c409d16b7190
eliminate some uses of bare pointers to octave_function objects
John W. Eaton <jwe@octave.org>
parents:
27504
diff
changeset
|
782 octave_value m_primary_fcn; |
16153
a57c2c8c8163
move some variables into the octave_parser class
John W. Eaton <jwe@octave.org>
parents:
16149
diff
changeset
|
783 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
784 // List of subfunction names, initially in the order they are |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
785 // installed in the symbol table, then ordered as they appear in the |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
786 // file. Eventually stashed in the primary function object. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
787 std::list<std::string> m_subfunction_names; |
16627
de91b1621260
adjust location of eof marker for files with subfunctions but no explicit end statements
John W. Eaton <jwe@octave.org>
parents:
16335
diff
changeset
|
788 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
789 // Pointer to the classdef object we just parsed, if any. |
27504
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
790 std::shared_ptr<tree_classdef> m_classdef_object; |
16211
3449bf257514
maint: fix botched merge of default to classdef
John W. Eaton <jwe@octave.org>
parents:
16205
diff
changeset
|
791 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
792 // Result of parsing input. |
27504
7a31b25e3252
use shared_ptr for storing classdef and statement_list objects in parser
John W. Eaton <jwe@octave.org>
parents:
27016
diff
changeset
|
793 std::shared_ptr <tree_statement_list> m_stmt_list; |
16177
a7669b4d27f6
eliminate global global_command variable
John W. Eaton <jwe@octave.org>
parents:
16164
diff
changeset
|
794 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
795 // State of the lexer. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
796 base_lexer& m_lexer; |
16149
49dfba4fd3c5
use pure parser and reentrant lexer interfaces
John W. Eaton <jwe@octave.org>
parents:
16142
diff
changeset
|
797 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
798 // Internal state of the Bison parser. |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
799 void *m_parser_state; |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
800 |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
801 private: |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
802 |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
803 // Maybe print a warning if an assignment expression is used as the |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
804 // test in a logical expression. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
805 OCTINTERP_API void maybe_warn_assign_as_truth_value (tree_expression *expr); |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
806 |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
807 // Maybe print a warning about switch labels that aren't constants. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
808 OCTINTERP_API void maybe_warn_variable_switch_label (tree_expression *expr); |
27510
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
809 |
5438a82a18fb
declare base_parser class data protected
John W. Eaton <jwe@octave.org>
parents:
27509
diff
changeset
|
810 // Maybe print a warning. |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
811 OCTINTERP_API void maybe_warn_missing_semi (tree_statement_list *); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
812 }; |
16287
04a7953496a7
create base class for parser; use reference for curr_lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
813 |
27509
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
814 // Publish externally used friend functions. |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
815 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
816 extern OCTINTERP_API octave_value |
27509
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
817 parse_fcn_file (interpreter& interp, const std::string& full_file, |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
818 const std::string& file, const std::string& dir_name, |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
819 const std::string& dispatch_type, |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
820 const std::string& package_name, bool require_file, |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
821 bool force_script, bool autoload, bool relative_lookup); |
fefc780b4e2e
move parse_fcn_file from interpreter member function to parser friend
John W. Eaton <jwe@octave.org>
parents:
27507
diff
changeset
|
822 |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
823 class parser : public base_parser |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
824 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
825 public: |
16287
04a7953496a7
create base class for parser; use reference for curr_lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
826 |
25441
143007dad864
store reference instead of pointer to interpreter in lexer
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
827 parser (interpreter& interp) |
143007dad864
store reference instead of pointer to interpreter in lexer
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
828 : base_parser (*(new lexer (interp))) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
829 { } |
16287
04a7953496a7
create base class for parser; use reference for curr_lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
830 |
25441
143007dad864
store reference instead of pointer to interpreter in lexer
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
831 parser (FILE *file, interpreter& interp) |
143007dad864
store reference instead of pointer to interpreter in lexer
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
832 : base_parser (*(new lexer (file, interp))) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
833 { } |
16287
04a7953496a7
create base class for parser; use reference for curr_lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
834 |
28953
dff830c84726
Add function "dir_encoding" to set a file encoding per directory (bug #49685).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28719
diff
changeset
|
835 parser (FILE *file, interpreter& interp, std::string encoding) |
dff830c84726
Add function "dir_encoding" to set a file encoding per directory (bug #49685).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28719
diff
changeset
|
836 : base_parser (*(new lexer (file, interp, encoding))) |
dff830c84726
Add function "dir_encoding" to set a file encoding per directory (bug #49685).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28719
diff
changeset
|
837 { } |
dff830c84726
Add function "dir_encoding" to set a file encoding per directory (bug #49685).
Markus Mützel <markus.muetzel@gmx.de>
parents:
28719
diff
changeset
|
838 |
25441
143007dad864
store reference instead of pointer to interpreter in lexer
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
839 parser (const std::string& eval_string, interpreter& interp) |
143007dad864
store reference instead of pointer to interpreter in lexer
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
840 : base_parser (*(new lexer (eval_string, interp))) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
841 { } |
16287
04a7953496a7
create base class for parser; use reference for curr_lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
842 |
26512
4d6392c879d7
avoid double free of lexer on exit (bug #55347)
John W. Eaton <jwe@octave.org>
parents:
26423
diff
changeset
|
843 // The lexer must be allocated with new. The parser object |
4d6392c879d7
avoid double free of lexer on exit (bug #55347)
John W. Eaton <jwe@octave.org>
parents:
26423
diff
changeset
|
844 // takes ownership of and deletes the lexer object in its |
4d6392c879d7
avoid double free of lexer on exit (bug #55347)
John W. Eaton <jwe@octave.org>
parents:
26423
diff
changeset
|
845 // destructor. |
4d6392c879d7
avoid double free of lexer on exit (bug #55347)
John W. Eaton <jwe@octave.org>
parents:
26423
diff
changeset
|
846 |
4d6392c879d7
avoid double free of lexer on exit (bug #55347)
John W. Eaton <jwe@octave.org>
parents:
26423
diff
changeset
|
847 parser (lexer *lxr) |
4d6392c879d7
avoid double free of lexer on exit (bug #55347)
John W. Eaton <jwe@octave.org>
parents:
26423
diff
changeset
|
848 : base_parser (*lxr) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
849 { } |
16335
bef822a80ffb
if not interactive, bypass readline and read stdin as a file (bug #38520)
John W. Eaton <jwe@octave.org>
parents:
16294
diff
changeset
|
850 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
851 // No copying! |
16133
249d62b3fac8
new class for parser state
John W. Eaton <jwe@octave.org>
parents:
16122
diff
changeset
|
852 |
22865
89756f2f085b
use c++11 style for deleting default copy constructor and assignment operator
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
853 parser (const parser&) = delete; |
16133
249d62b3fac8
new class for parser state
John W. Eaton <jwe@octave.org>
parents:
16122
diff
changeset
|
854 |
22865
89756f2f085b
use c++11 style for deleting default copy constructor and assignment operator
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
855 parser& operator = (const parser&) = delete; |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
856 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
857 ~parser (void) = default; |
16287
04a7953496a7
create base class for parser; use reference for curr_lexer
John W. Eaton <jwe@octave.org>
parents:
16273
diff
changeset
|
858 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
859 OCTINTERP_API int run (void); |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
860 }; |
16133
249d62b3fac8
new class for parser state
John W. Eaton <jwe@octave.org>
parents:
16122
diff
changeset
|
861 |
23694
4a62da62af09
use m_ prefix for member variables in parser
John W. Eaton <jwe@octave.org>
parents:
23673
diff
changeset
|
862 class push_parser : public base_parser |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
863 { |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
864 public: |
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
865 |
25441
143007dad864
store reference instead of pointer to interpreter in lexer
John W. Eaton <jwe@octave.org>
parents:
25103
diff
changeset
|
866 push_parser (interpreter& interp) |
28266
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
867 : base_parser (*(new push_lexer (interp))), |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
868 m_interpreter (interp), m_reader () |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
869 { } |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
870 |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
871 // The parser assumes ownership of READER, which must be created |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
872 // with new. |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
873 |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
874 push_parser (interpreter& interp, input_reader *reader) |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
875 : base_parser (*(new push_lexer (interp))), |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
876 m_interpreter (interp), m_reader (reader) |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
877 { } |
16294
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
878 |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
879 // No copying! |
16294
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
880 |
22865
89756f2f085b
use c++11 style for deleting default copy constructor and assignment operator
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
881 push_parser (const push_parser&) = delete; |
16294
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
882 |
22865
89756f2f085b
use c++11 style for deleting default copy constructor and assignment operator
John W. Eaton <jwe@octave.org>
parents:
22755
diff
changeset
|
883 push_parser& operator = (const push_parser&) = delete; |
22869
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
884 |
f75d289645ec
make deleted functions public
John W. Eaton <jwe@octave.org>
parents:
22868
diff
changeset
|
885 ~push_parser (void) = default; |
16294
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
886 |
28266
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
887 // Use the push parser in the same way as the pull parser. The |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
888 // parser arranges for input through the M_READER object. See, for |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
889 // example, interpreter::main_loop. |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
890 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
891 OCTINTERP_API int run (void); |
28266
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
892 |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
893 // Parse INPUT. M_READER is not used. The user is responsible for |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
894 // collecting input. |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
895 |
29235
d16d73a050b2
Set API tags in remaining files in libinterp (patch #8919).
Markus Mützel <markus.muetzel@gmx.de>
parents:
29151
diff
changeset
|
896 OCTINTERP_API int run (const std::string& input, bool eof); |
28266
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
897 |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
898 private: |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
899 |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
900 interpreter& m_interpreter; |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
901 |
ce7a5b60e102
restore pull parser interface when input is not interactive (bug #58198)
John W. Eaton <jwe@octave.org>
parents:
27957
diff
changeset
|
902 std::shared_ptr<input_reader> m_reader; |
22196
dd992fd74fce
put parser, lexer, and evaluator in namespace; interpreter now owns evaluator
John W. Eaton <jwe@octave.org>
parents:
21751
diff
changeset
|
903 }; |
16294
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
904 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
905 extern OCTINTERP_API std::string |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
906 get_help_from_file (const std::string& nm, bool& symbol_found, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
907 std::string& file); |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
908 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
909 extern OCTINTERP_API std::string |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
910 get_help_from_file (const std::string& nm, bool& symbol_found); |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
911 |
23653
3bb0a937c071
avoid possible memory errors when parsing function files
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
912 extern OCTINTERP_API octave_value |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
913 load_fcn_from_file (const std::string& file_name, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
914 const std::string& dir_name = "", |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
915 const std::string& dispatch_type = "", |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
916 const std::string& package_name = "", |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
917 const std::string& fcn_name = "", |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
918 bool autoload = false); |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
919 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
920 extern OCTINTERP_API void |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
921 source_file (const std::string& file_name, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
922 const std::string& context = "", |
27507
2d537a089e5d
eliminate warn_for argument for source_file and parse_fcn_file functions
John W. Eaton <jwe@octave.org>
parents:
27505
diff
changeset
|
923 bool verbose = false, bool require_file = true); |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
924 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
925 extern OCTINTERP_API octave_value_list |
26883
a2aed4b49be3
fix const-ness of feval arguments
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
926 feval (const char *name, |
a2aed4b49be3
fix const-ness of feval arguments
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
927 const octave_value_list& args = octave_value_list (), |
a2aed4b49be3
fix const-ness of feval arguments
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
928 int nargout = 0); |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
929 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
930 extern OCTINTERP_API octave_value_list |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
931 feval (const std::string& name, |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
932 const octave_value_list& args = octave_value_list (), |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
933 int nargout = 0); |
16294
0925d1f6875e
push parser/lexer interface
John W. Eaton <jwe@octave.org>
parents:
16293
diff
changeset
|
934 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
935 extern OCTINTERP_API octave_value_list |
23502
c6714ae1c06c
eliminate remaining do_multi_index_op methods
John W. Eaton <jwe@octave.org>
parents:
23473
diff
changeset
|
936 feval (octave_function *fcn, |
23473
55916f99b8b6
prefer feval over do_multi_index_op
John W. Eaton <jwe@octave.org>
parents:
23446
diff
changeset
|
937 const octave_value_list& args = octave_value_list (), |
55916f99b8b6
prefer feval over do_multi_index_op
John W. Eaton <jwe@octave.org>
parents:
23446
diff
changeset
|
938 int nargout = 0); |
55916f99b8b6
prefer feval over do_multi_index_op
John W. Eaton <jwe@octave.org>
parents:
23446
diff
changeset
|
939 |
55916f99b8b6
prefer feval over do_multi_index_op
John W. Eaton <jwe@octave.org>
parents:
23446
diff
changeset
|
940 extern OCTINTERP_API octave_value_list |
26883
a2aed4b49be3
fix const-ness of feval arguments
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
941 feval (const octave_value& val, |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
942 const octave_value_list& args = octave_value_list (), |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
943 int nargout = 0); |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
944 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
945 extern OCTINTERP_API octave_value_list |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
946 feval (const octave_value_list& args, int nargout = 0); |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
947 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
948 extern OCTINTERP_API void |
23696
08036a7f3660
remove octave:: namespace tag from symbols used inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23694
diff
changeset
|
949 cleanup_statement_list (tree_statement_list **lst); |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
950 } |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
23054
diff
changeset
|
951 |
1 | 952 #endif |