Mercurial > hg > octave-nkf
diff libinterp/parse-tree/pt-exp.h @ 19589:b39cbe9f3bb0
allow ranges to be disabled
* ov.cc, ov.h: Allow creation of range object to be disabled.
Also allow range objects to be forced, even when generally disabled.
* pt-exp.h (tree_expression::for_cmd_expr): New member variable.
(tree_expression::mark_as_for_cmd_expr,
tree_expression::is_for_cmd_expr): New functions.
* oct-parse.in.yy: Mark for command expressions.
* pt-colon.cc (tree_colon_expression::make_range): Force creation of
range if expression is a for command expression.
* basics.txi, numbers.txi: Document changes.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 08 Dec 2014 12:59:47 -0500 |
parents | c7b68a11074b |
children | 4197fc428c7d |
line wrap: on
line diff
--- a/libinterp/parse-tree/pt-exp.h +++ b/libinterp/parse-tree/pt-exp.h @@ -41,7 +41,7 @@ tree_expression (int l = -1, int c = -1) : tree (l, c), num_parens (0), postfix_index_type ('\0'), - print_flag (false) { } + for_cmd_expr (false), print_flag (false) { } virtual ~tree_expression (void) { } @@ -104,6 +104,10 @@ virtual void mark_braindead_shortcircuit (void) { } + void mark_as_for_cmd_expr (void) { for_cmd_expr = true; } + + bool is_for_cmd_expr (void) const { return for_cmd_expr; } + tree_expression *mark_in_parens (void) { num_parens++; @@ -144,6 +148,10 @@ // See the code in tree_identifier::rvalue for the rationale. char postfix_index_type; + // TRUE if this expression is the EXPR in for loop: + // FOR i = EXPR ... END + bool for_cmd_expr; + // Print result of rvalue for this expression? bool print_flag;