Mercurial > octave-nkf
diff libinterp/parse-tree/token.h @ 18520:932aca9a7c57
Allow multi-level classdef package.
* lex.h (octave_base_lexer::fq_identifier_contains_keyword,
octave_base_lexer::handle_fq_identifier,
octave_base_lexer::enable_fq_identifier): New methods.
* lex.ll (octave_base_lexer::fq_identifier_contains_keyword,
octave_base_lexer::handle_fq_identifier,
octave_base_lexer::enable_fq_identifier): Likewise.
(FQ_IDENT_START, FQIDENT): New exclusive start condition and regex to
handle fully-qualified identifier.
(superclass reference rule, metaclass query rule): Use FQIDENT.
(octave_base_lexer::handle_superclass_identifier,
octave_base_lexer::handle_meta_identifier): Don't split package name.
* parse.h (octave_base_parser::make_superclass_ref,
octave_base_parser::make_meta_class_query): Remove package_nm argument.
* pt-classdef.h (tree_classdef_superclass::id,
tree_classdef_superclass::pkg): Removed members, replaced by cls_name.
(tree_classdef_superclass::~tree_classdef_superclass): Remove deletion
of removed members.
(tree_classdef_superclass::cls_name): New member.
(tree_classdef_superclass::tree_classdef_superclass): Initialize it.
(tree_classdef_superclass::ident, tree_classdef_superclass::package):
Removed methods.
(tree_classdef_superclass::class_name): New method.
* token.h (token::meta_name_token): Remove enum value.
(token(int, std::string, std::string, std::string, int, int)): Remove
constructor.
(token::superclass_package_name, token::meta_package_name,
token::meta_class_name): Remove methods.
(token::sc::package_nm, token::mc): Remove union members.
* token.cc
(token(int, std::string, std::string, std::string, int, int)): Remove
constructor.
(token::~token): Remove case of meta_name_token.
(token::superclass_package_name, token::meta_package_name,
token::meta_class_name): Remove methods.
* oct-parse.in.yy (FQ_IDENT): New terminal.
(superclass_identifier): Adapt to changes in class token and class
octave_base_parser.
(meta_identifier): Likewise.
(superclass_list): Add mid-rule to enable fully-qualified identifier.
(superclass): Use FQ_IDENT.
(octave_base_parser::make_superclass_ref,
octave_base_parser::make_meta_class_query): Remove package_nm argument.
* ov-classdef.cc (octave_classdef_superclass_ref::do_multi_index_op):
Adapt to removal of package_nm argument.
(F__meta_class_query__): Likewise.
(cdef_class::make_meta_class): Adapt to changes in class
tree_classdef_superclass.
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Sat, 22 Feb 2014 19:56:17 -0500 |
parents | 97e49b588f5d |
children | 4197fc428c7d |
line wrap: on
line diff
--- a/libinterp/parse-tree/token.h Sat Feb 22 08:23:26 2014 -0800 +++ b/libinterp/parse-tree/token.h Sat Feb 22 19:56:17 2014 -0500 @@ -41,7 +41,6 @@ ettype_token, sym_rec_token, scls_name_token, - meta_name_token }; enum end_tok_type @@ -69,10 +68,8 @@ int l = -1, int c = -1); token (int tv, end_tok_type t, int l = -1, int c = -1); token (int tv, symbol_table::symbol_record *s, int l = -1, int c = -1); - token (int tv, const std::string& pkg, const std::string& cls, + token (int tv, const std::string& mth, const std::string& cls, int l = -1, int c = -1); - token (int tv, const std::string& mth, const std::string& pkg, - const std::string& cls, int l = -1, int c = -1); ~token (void); @@ -106,12 +103,8 @@ symbol_table::symbol_record *sym_rec (void); std::string superclass_method_name (void); - std::string superclass_package_name (void); std::string superclass_class_name (void); - std::string meta_package_name (void); - std::string meta_class_name (void); - std::string text_rep (void); private: @@ -137,14 +130,8 @@ struct { std::string *method_nm; - std::string *package_nm; std::string *class_nm; } sc; - struct - { - std::string *package_nm; - std::string *class_nm; - } mc; }; std::string orig_text; };