diff libinterp/parse-tree/pt-exp.h @ 19394: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	Mon Dec 08 10:18:35 2014 -0500
+++ b/libinterp/parse-tree/pt-exp.h	Mon Dec 08 12:59:47 2014 -0500
@@ -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;