annotate libinterp/parse-tree/token.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 14b098a6ba46
children e88a07dec498
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ////////////////////////////////////////////////////////////////////////
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 //
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30155
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 ////////////////////////////////////////////////////////////////////////
142
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
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
0b52c68ec81f [project @ 1994-03-09 21:19:44 by jwe]
jwe
parents: 240
diff changeset
27 #define octave_token_h 1
142
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
28
21244
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21017
diff changeset
29 #include "octave-config.h"
1473547f50f5 include octave-config.h in public header files
John W. Eaton <jwe@octave.org>
parents: 21017
diff changeset
30
1755
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1489
diff changeset
31 #include <string>
3a9462b655f1 [project @ 1996-01-22 04:47:22 by jwe]
jwe
parents: 1489
diff changeset
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"
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
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
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,
28582
dc8de424fc72 use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents: 28517
diff changeset
47 numeric_token,
25103
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 scls_name_token,
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
50 };
142
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
51
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
52 enum end_tok_type
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
53 {
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
54 simple_end,
29724
c19f8cbe0fd5 initial implementation of parsing for arguments validaton block (bug #59405)
John W. Eaton <jwe@octave.org>
parents: 29723
diff changeset
55 arguments_end,
25103
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,
28517
6e8a9845d118 Add 'spmd' as interpreter keyword for Matlab compatibility (bug #58676).
Rik <rik@octave.org>
parents: 28078
diff changeset
68 spmd_end,
25103
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
69 while_end,
078b795c5219 maint: style check C++ ahead of 4.4 release.
Rik <rik@octave.org>
parents: 25054
diff changeset
70 };
142
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
71
27769
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
72 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
73
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
74 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
75 , const filepos& end_pos);
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
76
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
77 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
78 const filepos& end_pos);
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
79
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
80 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
81 const filepos& end_pos);
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
82
28582
dc8de424fc72 use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents: 28517
diff changeset
83 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
84 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
85
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
86 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
87 const filepos& end_pos);
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
88
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
89 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
90 const filepos& beg_pos, const filepos& end_pos);
142
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
91
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
92 // No copying!
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
93
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
94 token (const token&) = delete;
16257
db7f07b22b9b 1/10 commits reworking the lexer
John W. Eaton <jwe@octave.org>
parents: 16255
diff changeset
95
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
96 token& operator = (const token&) = delete;
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
97
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
98 ~token (void);
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
99
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
100 void mark_may_be_command (void) { m_maybe_cmd = true; }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
101 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
102
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
103 void mark_trailing_space (void) { m_tspc = true; }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
104 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
105
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
106 int token_value (void) const { return m_tok_val; }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
107 bool token_value_is (int tv) const { return tv == m_tok_val; }
142
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
108
27769
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
109 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
110 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
111
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
112 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
113 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
114
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
115 // These will probably be removed.
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
116 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
117 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
118
26059
da2bbcf1fbcd Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents: 25103
diff changeset
119 bool iskeyword (void) const
da2bbcf1fbcd Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents: 25103
diff changeset
120 {
da2bbcf1fbcd Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents: 25103
diff changeset
121 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
122 }
da2bbcf1fbcd Deprecate C++ function is_keyword in favor of iskeyword for readability.
Rik <rik@octave.org>
parents: 25103
diff changeset
123
29723
6858992dfadf enter symbols into current scope in parser instead of lexer
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
124 bool isstring (void) const { return m_type_tag == string_token; }
16360
11115c237231 recognize variables when parsing (bug #38576)
John W. Eaton <jwe@octave.org>
parents: 16267
diff changeset
125
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
126 std::string text (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
127 octave_value number (void) const;
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
128 token_type ttype (void) const;
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
129 end_tok_type ettype (void) const;
142
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
130
26718
9b0335f4bc74 revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents: 26686
diff changeset
131 std::string superclass_method_name (void) const;
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
132 std::string superclass_class_name (void) const;
581
bc813f5eb025 [project @ 1994-08-07 01:02:15 by jwe]
jwe
parents: 476
diff changeset
133
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
134 std::string text_rep (void) const;
3552
41daa489833a [project @ 2000-02-03 03:05:28 by jwe]
jwe
parents: 3548
diff changeset
135
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
136 private:
1288
4acabfbdd381 [project @ 1995-04-28 20:23:04 by jwe]
jwe
parents: 1009
diff changeset
137
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
138 bool m_maybe_cmd;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
139
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
140 bool m_tspc;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
141
27769
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
142 filepos m_beg_pos;
07ffed9878ad store begin and end position in tokens
John W. Eaton <jwe@octave.org>
parents: 27766
diff changeset
143 filepos m_end_pos;
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
144
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
145 int m_tok_val;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
146
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
147 token_type m_type_tag;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
148
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
149 union tok_info
142
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
150 {
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
151 tok_info (void) { }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
152
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
153 tok_info (const char *s) : m_str (new std::string (s)) { }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
154
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
155 tok_info (const std::string& str) : m_str (new std::string (str)) { }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
156
28582
dc8de424fc72 use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents: 28517
diff changeset
157 tok_info (const octave_value& num) : m_num (new octave_value (num)) { }
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
158
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
159 tok_info (end_tok_type et) : m_et (et) { }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
160
26718
9b0335f4bc74 revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents: 26686
diff changeset
161 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
162 : m_superclass_info (new superclass_info (meth, cls))
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
163 { }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
164
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
165 tok_info (const tok_info&) = delete;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
166
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
167 tok_info& operator = (const tok_info&) = delete;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
168
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
169 ~tok_info (void) { }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
170
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
171 std::string *m_str;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
172
28582
dc8de424fc72 use octave_value object to store numeric tokens in the lexer
John W. Eaton <jwe@octave.org>
parents: 28517
diff changeset
173 octave_value *m_num;
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
174
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
175 end_tok_type m_et;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
176
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
177 struct superclass_info
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
178 {
30155
14b098a6ba46 maint: Use public: qualifier in structs that are really classes.
Rik <rik@octave.org>
parents: 29724
diff changeset
179 public:
14b098a6ba46 maint: Use public: qualifier in structs that are really classes.
Rik <rik@octave.org>
parents: 29724
diff changeset
180 superclass_info (const std::string& meth, 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
181 : m_method_name (meth), m_class_name (cls)
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
182 { }
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
183
30155
14b098a6ba46 maint: Use public: qualifier in structs that are really classes.
Rik <rik@octave.org>
parents: 29724
diff changeset
184 superclass_info (void) = delete;
14b098a6ba46 maint: Use public: qualifier in structs that are really classes.
Rik <rik@octave.org>
parents: 29724
diff changeset
185
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
186 superclass_info (const superclass_info&) = delete;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
187
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
188 superclass_info& operator = (const superclass_info&) = delete;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
189
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
190 ~superclass_info (void) = default;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
191
30155
14b098a6ba46 maint: Use public: qualifier in structs that are really classes.
Rik <rik@octave.org>
parents: 29724
diff changeset
192 //--------
14b098a6ba46 maint: Use public: qualifier in structs that are really classes.
Rik <rik@octave.org>
parents: 29724
diff changeset
193
26718
9b0335f4bc74 revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents: 26686
diff changeset
194 // 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
195 // "@" 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
196 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
197
9b0335f4bc74 revise naming of the parts of a superclass reference
John W. Eaton <jwe@octave.org>
parents: 26686
diff changeset
198 // 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
199 // 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
200 std::string m_class_name;
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
201 };
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
202
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
203 superclass_info *m_superclass_info;
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
204 };
23372
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
205
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
206 tok_info m_tok_info;
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
207
8a23ed65ef21 modernize token sources
John W. Eaton <jwe@octave.org>
parents: 23220
diff changeset
208 std::string m_orig_text;
17787
175b392e91fe Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents: 17744
diff changeset
209 };
23075
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
210 }
4e3d47dc7e25 move parse tree classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 22869
diff changeset
211
142
6906d6591452 [project @ 1993-10-04 00:40:57 by jwe]
jwe
parents:
diff changeset
212 #endif