Mercurial > hg > octave-nkf
view libinterp/parse-tree/module.mk @ 18588: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 | c702371ff6df |
children | dcb260e7a648 |
line wrap: on
line source
EXTRA_DIST += \ parse-tree/module.mk \ parse-tree/oct-parse.in.yy \ parse-tree/octave.gperf PARSER_INC = \ parse-tree/lex.h \ parse-tree/parse.h PARSER_SRC = \ parse-tree/lex.ll \ parse-tree/oct-parse.yy PARSE_TREE_INC = \ parse-tree/pt-all.h \ parse-tree/pt-arg-list.h \ parse-tree/pt-array-list.h \ parse-tree/pt-assign.h \ parse-tree/pt-binop.h \ parse-tree/pt-bp.h \ parse-tree/pt-cbinop.h \ parse-tree/pt-cell.h \ parse-tree/pt-check.h \ parse-tree/pt-classdef.h \ parse-tree/pt-cmd.h \ parse-tree/pt-colon.h \ parse-tree/pt-const.h \ parse-tree/pt-decl.h \ parse-tree/pt-eval.h \ parse-tree/pt-except.h \ parse-tree/pt-exp.h \ parse-tree/pt-fcn-handle.h \ parse-tree/pt-funcall.h \ parse-tree/pt-id.h \ parse-tree/pt-idx.h \ parse-tree/pt-jump.h \ parse-tree/pt-loop.h \ parse-tree/pt-mat.h \ parse-tree/pt-misc.h \ parse-tree/pt-pr-code.h \ parse-tree/pt-select.h \ parse-tree/pt-stmt.h \ parse-tree/pt-unop.h \ parse-tree/pt-walk.h \ parse-tree/pt.h \ parse-tree/token.h PARSE_TREE_SRC = \ parse-tree/pt-arg-list.cc \ parse-tree/pt-array-list.cc \ parse-tree/pt-assign.cc \ parse-tree/pt-binop.cc \ parse-tree/pt-bp.cc \ parse-tree/pt-cbinop.cc \ parse-tree/pt-cell.cc \ parse-tree/pt-check.cc \ parse-tree/pt-classdef.cc \ parse-tree/pt-cmd.cc \ parse-tree/pt-colon.cc \ parse-tree/pt-const.cc \ parse-tree/pt-decl.cc \ parse-tree/pt-eval.cc \ parse-tree/pt-except.cc \ parse-tree/pt-exp.cc \ parse-tree/pt-fcn-handle.cc \ parse-tree/pt-funcall.cc \ parse-tree/pt-id.cc \ parse-tree/pt-idx.cc \ parse-tree/pt-jump.cc \ parse-tree/pt-loop.cc \ parse-tree/pt-mat.cc \ parse-tree/pt-misc.cc \ parse-tree/pt-pr-code.cc \ parse-tree/pt-select.cc \ parse-tree/pt-stmt.cc \ parse-tree/pt-unop.cc \ parse-tree/pt.cc \ parse-tree/token.cc ## Special rules for sources which must be built before rest of compilation. ## Don't use a pipeline to process gperf output since if gperf ## is missing but sed is not, the exit status of the pipeline ## will still be success and we will end up creating an empty ## oct-gperf.h file. parse-tree/oct-gperf.h: parse-tree/octave.gperf $(GPERF) -t -C -D -G -L C++ -Z octave_kw_hash $< > $@-t1 $(SED) 's,lookup\[,gperf_lookup[,' < $@-t1 > $@-t mv $@-t $@ rm -f $@-t1 parse-tree/oct-parse.yy: parse-tree/oct-parse.in.yy case "$(BISON_PUSH_PULL_DECL_STYLE)" in \ *quote*) quote='"' ;; \ *) quote="" ;; \ esac; \ case "$(BISON_PUSH_PULL_DECL_STYLE)" in \ *dash*) decl="%define api.push-pull $${quote}both$${quote}"; ;; \ *underscore*) decl="%define api.push_pull $${quote}both$${quote}"; ;; \ esac; \ $(SED) "s/%PUSH_PULL_DECL%/$$decl/" $< > $@-t mv $@-t $@ noinst_LTLIBRARIES += \ parse-tree/libparse-tree.la \ parse-tree/libparser.la parse_tree_libparse_tree_la_SOURCES = $(PARSE_TREE_SRC) parse_tree_libparse_tree_la_CPPFLAGS = $(liboctinterp_la_CPPFLAGS) parse_tree_libparser_la_SOURCES = $(PARSER_SRC) parse_tree_libparser_la_CPPFLAGS = $(liboctinterp_la_CPPFLAGS) parse_tree_libparser_la_CXXFLAGS = \ $(filter-out -Wold-style-cast, $(AM_CXXFLAGS))