Mercurial > octave
annotate libinterp/parse-tree/token.h @ 27923:bd51beb6205e
update formatting of copyright notices
* Use <https://octave.org/copyright/> instead of
<https://octave.org/COPYRIGHT.html/>.
* For consistency with other comments in the Octave sources, use
C++-style comments for copyright blocks in C and C++ files.
* Use delimiters above and below copyright blocks that are appropriate
for the language used in the file.
* Eliminate extra spacing inside copyright blocks.
* lex.ll (looks_like_copyright): Also allow newlines and carriage
returns before the word "Copyright".
* scripts/mk-doc.pl (gethelp): Also skip empty comment lines.
* bp-table.cc, type.m: Adjust tests.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 08 Jan 2020 11:59:41 -0500 |
parents | 1891570abac8 |
children | 376ca9022b7e 0a5b15007766 |
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 // |
bd51beb6205e
update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents:
27919
diff
changeset
|
3 // Copyright (C) 1993-2020 The Octave Project Developers |
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" |
24362
3fc24b792a24
avoid including symtab.h, symscope.h, or symrec.h unnecessarily
John W. Eaton <jwe@octave.org>
parents:
24270
diff
changeset
|
34 #include "symrec.h" |
16134
ec9c6222ef5a
move static parser helper functions to octave_parser class
John W. Eaton <jwe@octave.org>
parents:
15195
diff
changeset
|
35 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
36 namespace octave |
142 | 37 { |
27765
dd93e1fdc7db
require position info when creating tokens for the parser
John W. Eaton <jwe@octave.org>
parents:
26718
diff
changeset
|
38 class token |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
39 { |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
40 public: |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
41 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
42 enum token_type |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
43 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
44 generic_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
45 keyword_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
46 string_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
47 double_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
48 ettype_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
49 sym_rec_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
50 scls_name_token, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
51 }; |
142 | 52 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
53 enum end_tok_type |
25103
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
54 { |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
55 simple_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
56 classdef_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
57 enumeration_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
58 events_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
59 for_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
60 function_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
61 if_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
62 methods_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
63 parfor_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
64 properties_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
65 switch_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
66 try_catch_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
67 unwind_protect_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
68 while_end, |
078b795c5219
maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
69 }; |
142 | 70 |
27769
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
71 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
|
72 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
73 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
|
74 , const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
75 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
76 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
|
77 const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
78 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
79 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
|
80 const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
81 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
82 token (int tv, double d, 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
|
83 const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
84 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
85 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
|
86 const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
87 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
88 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
|
89 const filepos& end_pos); |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
90 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
91 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
|
92 const filepos& beg_pos, const filepos& end_pos); |
142 | 93 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
94 // No copying! |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
95 |
23372 | 96 token (const token&) = delete; |
16257
db7f07b22b9b
1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16255
diff
changeset
|
97 |
23372 | 98 token& operator = (const token&) = delete; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
99 |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
100 ~token (void); |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
101 |
23372 | 102 void mark_may_be_command (void) { m_maybe_cmd = true; } |
103 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
|
104 |
23372 | 105 void mark_trailing_space (void) { m_tspc = true; } |
106 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
|
107 |
23372 | 108 int token_value (void) const { return m_tok_val; } |
109 bool token_value_is (int tv) const { return tv == m_tok_val; } | |
142 | 110 |
27769
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
111 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
|
112 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
|
113 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
114 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
|
115 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
|
116 |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
117 // These will probably be removed. |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
118 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
|
119 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
|
120 |
26059
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
121 bool iskeyword (void) const |
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
122 { |
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
123 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
|
124 } |
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
125 |
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
126 OCTAVE_DEPRECATED (5, "use 'octave::iskeyword' instead") |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
127 bool is_keyword (void) const |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
128 { |
26059
da2bbcf1fbcd
Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents:
25103
diff
changeset
|
129 return iskeyword (); |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
130 } |
16267
15f55df088e7
6/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents:
16257
diff
changeset
|
131 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
132 bool is_symbol (void) const |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
133 { |
23372 | 134 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
|
135 } |
16360
11115c237231
recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents:
16267
diff
changeset
|
136 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
137 std::string text (void) const; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
138 std::string symbol_name (void) const; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
139 double number (void) const; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
140 token_type ttype (void) const; |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
141 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
|
142 symbol_record sym_rec (void) const; |
142 | 143 |
26718
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
144 std::string superclass_method_name (void) const; |
23372 | 145 std::string superclass_class_name (void) const; |
581 | 146 |
23372 | 147 std::string text_rep (void) const; |
3552 | 148 |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
149 private: |
1288 | 150 |
23372 | 151 bool m_maybe_cmd; |
152 | |
153 bool m_tspc; | |
154 | |
27769
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
155 filepos m_beg_pos; |
07ffed9878ad
store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents:
27766
diff
changeset
|
156 filepos m_end_pos; |
23372 | 157 |
158 int m_tok_val; | |
159 | |
160 token_type m_type_tag; | |
161 | |
162 union tok_info | |
142 | 163 { |
23372 | 164 tok_info (void) { } |
165 | |
166 tok_info (const char *s) : m_str (new std::string (s)) { } | |
167 | |
168 tok_info (const std::string& str) : m_str (new std::string (str)) { } | |
169 | |
170 tok_info (double num) : m_num (num) { } | |
171 | |
172 tok_info (end_tok_type et) : m_et (et) { } | |
173 | |
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
|
174 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
|
175 : 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
|
176 { } |
23372 | 177 |
26718
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
178 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
|
179 : m_superclass_info (new superclass_info (meth, cls)) |
23372 | 180 { } |
181 | |
182 tok_info (const tok_info&) = delete; | |
183 | |
184 tok_info& operator = (const tok_info&) = delete; | |
185 | |
186 ~tok_info (void) { } | |
187 | |
188 std::string *m_str; | |
189 | |
190 double m_num; | |
191 | |
192 end_tok_type m_et; | |
193 | |
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
|
194 symbol_record *m_sr; |
23372 | 195 |
196 struct superclass_info | |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
197 { |
23372 | 198 superclass_info (void) = delete; |
199 | |
26718
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
200 superclass_info (const std::string& meth, |
26686
581d01526b34
eliminate unnecessary tree_funcall class
John W. Eaton <jwe@octave.org>
parents:
26377
diff
changeset
|
201 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
|
202 : m_method_name (meth), m_class_name (cls) |
23372 | 203 { } |
204 | |
205 superclass_info (const superclass_info&) = delete; | |
206 | |
207 superclass_info& operator = (const superclass_info&) = delete; | |
208 | |
209 ~superclass_info (void) = default; | |
210 | |
26718
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 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
|
212 // "@" 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
|
213 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
|
214 |
9b0335f4bc74
revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents:
26686
diff
changeset
|
215 // 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
|
216 // 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
|
217 std::string m_class_name; |
23372 | 218 }; |
219 | |
220 superclass_info *m_superclass_info; | |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
221 }; |
23372 | 222 |
223 tok_info m_tok_info; | |
224 | |
225 std::string m_orig_text; | |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
226 }; |
23075
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
227 } |
4e3d47dc7e25
move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents:
22869
diff
changeset
|
228 |
142 | 229 #endif |