Mercurial > octave
diff libinterp/octave-value/ov-fcn.h @ 15954:46ca8488de92 classdef
Re-engineer tree_expression postfix handling to make it more flexible.
* libinterp/octave-value/ov-fcn.h (octave_function::is_postfix_index_handled):
New method.
* libinterp/parse-tree/oct-parse.yy
(make_index_expression, make_indirect_ref): Set expression postfix index type.
* libinterp/parse-tree/pt-exp.h (tree_expression::postfix_index): Remove field.
(tree_expression::postfix_index_type): New field.
(tree_expression::tree_expression): Initialize it.
(tree_expression::copy_base): Copy it.
(tree_expression::set_postfix_index, tree_expression::postfix_index): New
methods.
(tree_expression::mark_postfix_indexed): Remove method.
(tree_expression::is_postfix_indexed): Use postfix_index_type field.
* libinterp/parse-tree/pt-id.cc (tree_identifier::rvalue): Let the function
object determine whether it can handle the first postfix index and call
do_multi_index_op if it can't.
author | Michael Goffioul <michael.goffioul@gmail.com> |
---|---|
date | Tue, 15 Jan 2013 17:01:10 -0500 |
parents | 5e5705b3e505 |
children | 856cb7cba231 |
line wrap: on
line diff
--- a/libinterp/octave-value/ov-fcn.h Tue Jan 15 14:50:43 2013 -0500 +++ b/libinterp/octave-value/ov-fcn.h Tue Jan 15 17:01:10 2013 -0500 @@ -152,6 +152,9 @@ virtual void accept (tree_walker&) { } + virtual bool is_postfix_index_handled (char type) const + { return (type == '(' || type == '{'); } + protected: octave_function (const std::string& nm,