Mercurial > octave
annotate libinterp/parse-tree/token.h @ 29359:7854d5752dd2
maint: merge stable to default.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 10 Feb 2021 10:10:40 -0500 |
parents | dc8de424fc72 0a5b15007766 |
children | 6858992dfadf |
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 // |
29358
0a5b15007766
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
27923
diff
changeset
|
3 // Copyright (C) 1993-2021 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 //////////////////////////////////////////////////////////////////////// |
142 | 25 |
20791
f7084eae3318
maint: Use Octave coding conventions for #if statements.
Rik <rik@octave.org>
parents:
20075
diff
changeset
|
26 #if ! defined (octave_token_h) |
383 | 27 #define octave_token_h 1 |
142 | 28 |
21244
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
21017
diff
changeset
|
29 #include "octave-config.h" |
1473547f50f5
include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents:
21017
diff
changeset
|
30 |
1755 | 31 #include <string> |
32 | |
27766
0ca7f17de041
use file position object to track line and column info in lexer and parser
John W. Eaton <jwe@octave.org>
parents:
27765
diff
changeset
|
33 #include "filepos.h" |
28582
dc8de424fc72
use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents:
28517
diff
changeset
|
34 #include "ov.h" |
24362
3fc24b792a24
avoid including symtab.h, symscope.h, or symrec.h unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24270
diff
changeset
|
35 #include "symrec.h" |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
36 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
37 namespace octave |
142 | 38 { |
27765
dd93e1fdc7db
require position info when creating tokens for the parser
John W. Eaton <jwe@octave.org>
parents:
26718
diff
changeset
|
39 class token |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
40 { |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
41 public: |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
42 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
43 enum token_type |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
44 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
45 generic_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
46 keyword_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
47 string_token, |
28582
dc8de424fc72
use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents:
28517
diff
changeset
|
48 numeric_token, |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
49 ettype_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
50 sym_rec_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
51 scls_name_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
52 }; |
142 | 53 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
54 enum end_tok_type |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
55 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
56 simple_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
57 classdef_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
58 enumeration_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
59 events_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
60 for_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
61 function_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
62 if_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
63 methods_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
64 parfor_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
65 properties_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
66 switch_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
67 try_catch_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
68 unwind_protect_end, |
28517
6e8a9845d118
Add 'spmd' as interpreter keyword for Matlab compatibility (bug #58676).
Rik <rik@octave.org>
parents:
28078
diff
changeset
|
69 spmd_end, |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
70 while_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
71 }; |
142 | 72 |
27769
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
73 token (int tv, const filepos& beg_pos, const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
74 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
75 token (int tv, bool is_keyword, const filepos& beg_pos |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
76 , const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
77 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
78 token (int tv, const char *s, const filepos& beg_pos, |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
79 const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
80 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
81 token (int tv, const std::string& s, const filepos& beg_pos, |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
82 const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
83 |
28582
dc8de424fc72
use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents:
28517
diff
changeset
|
84 token (int tv, const octave_value& val, const std::string& s, |
dc8de424fc72
use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents:
28517
diff
changeset
|
85 const filepos& beg_pos, const filepos& end_pos); |
27769
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
86 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
87 token (int tv, end_tok_type t, const filepos& beg_pos, |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
88 const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
89 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
90 token (int tv, const symbol_record& s, const filepos& beg_pos, |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
91 const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
92 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
93 token (int tv, const std::string& mth, const std::string& cls, |
27769
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
94 const filepos& beg_pos, const filepos& end_pos); |
142 | 95 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
96 // No copying! |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
97 |
23372 | 98 token (const token&) = delete; |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
99 |
23372 | 100 token& operator = (const token&) = delete; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
101 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
102 ~token (void); |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
103 |
23372 | 104 void mark_may_be_command (void) { m_maybe_cmd = true; } |
105 bool may_be_command (void) const { return m_maybe_cmd; } | |
16255
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16134
diff
changeset
|
106 |
23372 | 107 void mark_trailing_space (void) { m_tspc = true; } |
108 bool space_follows_token (void) const { return m_tspc; } | |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
109 |
23372 | 110 int token_value (void) const { return m_tok_val; } |
111 bool token_value_is (int tv) const { return tv == m_tok_val; } | |
142 | 112 |
27769
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
113 filepos beg_pos (void) const { return m_beg_pos; } |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
114 filepos end_pos (void) const { return m_end_pos; } |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
115 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
116 void beg_pos (const filepos& pos) { m_beg_pos = pos; } |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
117 void end_pos (const filepos& pos) { m_end_pos = pos; } |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
118 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
119 // These will probably be removed. |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
120 int line (void) const { return m_beg_pos.line (); } |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
121 int column (void) const { return m_beg_pos.column (); } |
16255
12bf6a3f8c45
store more info in token value class
John W. Eaton <jwe@octave.org>
parents:
16134
diff
changeset
|
122 |
26059
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
123 bool iskeyword (void) const |
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
124 { |
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
125 return m_type_tag == keyword_token || m_type_tag == ettype_token; |
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
126 } |
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
127 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
128 bool is_symbol (void) const |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
129 { |
23372 | 130 return m_type_tag == sym_rec_token; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
131 } |
16360
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16267
diff
changeset
|
132 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
133 std::string text (void) const; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
134 std::string symbol_name (void) const; |
28582
dc8de424fc72
use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents:
28517
diff
changeset
|
135 octave_value number (void) const; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
136 token_type ttype (void) const; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
137 end_tok_type ettype (void) const; |
24270
bc3819b7cca1
don't use symbol_table:: nesting for symbol_record, symbol_scope, or fcn_info
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
138 symbol_record sym_rec (void) const; |
142 | 139 |
26718
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
140 std::string superclass_method_name (void) const; |
23372 | 141 std::string superclass_class_name (void) const; |
581 | 142 |
23372 | 143 std::string text_rep (void) const; |
3552 | 144 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
145 private: |
1288 | 146 |
23372 | 147 bool m_maybe_cmd; |
148 | |
149 bool m_tspc; | |
150 | |
27769
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
151 filepos m_beg_pos; |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
152 filepos m_end_pos; |
23372 | 153 |
154 int m_tok_val; | |
155 | |
156 token_type m_type_tag; | |
157 | |
158 union tok_info | |
142 | 159 { |
23372 | 160 tok_info (void) { } |
161 | |
162 tok_info (const char *s) : m_str (new std::string (s)) { } | |
163 | |
164 tok_info (const std::string& str) : m_str (new std::string (str)) { } | |
165 | |
28582
dc8de424fc72
use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents:
28517
diff
changeset
|
166 tok_info (const octave_value& num) : m_num (new octave_value (num)) { } |
23372 | 167 |
168 tok_info (end_tok_type et) : m_et (et) { } | |
169 | |
24270
bc3819b7cca1
don't use symbol_table:: nesting for symbol_record, symbol_scope, or fcn_info
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
170 tok_info (const symbol_record& sr) |
bc3819b7cca1
don't use symbol_table:: nesting for symbol_record, symbol_scope, or fcn_info
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
171 : m_sr (new symbol_record (sr)) |
23602
214cb58ccc1c
use pointer to scope instead of scope id
John W. Eaton <jwe@octave.org>
parents:
23446
diff
changeset
|
172 { } |
23372 | 173 |
26718
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
174 tok_info (const std::string& meth, const std::string& cls) |
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
175 : m_superclass_info (new superclass_info (meth, cls)) |
23372 | 176 { } |
177 | |
178 tok_info (const tok_info&) = delete; | |
179 | |
180 tok_info& operator = (const tok_info&) = delete; | |
181 | |
182 ~tok_info (void) { } | |
183 | |
184 std::string *m_str; | |
185 | |
28582
dc8de424fc72
use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents:
28517
diff
changeset
|
186 octave_value *m_num; |
23372 | 187 |
188 end_tok_type m_et; | |
189 | |
24270
bc3819b7cca1
don't use symbol_table:: nesting for symbol_record, symbol_scope, or fcn_info
John W. Eaton <jwe@octave.org>
parents:
23615
diff
changeset
|
190 symbol_record *m_sr; |
23372 | 191 |
192 struct superclass_info | |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
193 { |
23372 | 194 superclass_info (void) = delete; |
195 | |
26718
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
196 superclass_info (const std::string& meth, |
26686
581d01526b34
eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents:
26377
diff
changeset
|
197 const std::string& cls) |
26718
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
198 : m_method_name (meth), m_class_name (cls) |
23372 | 199 { } |
200 | |
201 superclass_info (const superclass_info&) = delete; | |
202 | |
203 superclass_info& operator = (const superclass_info&) = delete; | |
204 | |
205 ~superclass_info (void) = default; | |
206 | |
26718
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
207 // The name of the method to call. This is the text before the |
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
208 // "@" and may be of the form "object.method". |
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
209 std::string m_method_name; |
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
210 |
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
211 // The name of the superclass. This is the text after the "@" |
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
212 // and may be of the form "object.method". |
26686
581d01526b34
eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents:
26377
diff
changeset
|
213 std::string m_class_name; |
23372 | 214 }; |
215 | |
216 superclass_info *m_superclass_info; | |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
217 }; |
23372 | 218 |
219 tok_info m_tok_info; | |
220 | |
221 std::string m_orig_text; | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
222 }; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
223 } |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
224 |
142 | 225 #endif |