changeset 10207:76a880a588ce

error when using ~ in matrix expression
author Jaroslav Hajek <highegg@gmail.com>
date Wed, 27 Jan 2010 13:13:26 +0100
parents 37a08e0ce2dc
children c54ee101d13c
files src/ChangeLog src/oct-parse.yy
diffstat 2 files changed, 19 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Wed Jan 27 12:41:49 2010 +0100
+++ b/src/ChangeLog	Wed Jan 27 13:13:26 2010 +0100
@@ -1,3 +1,8 @@
+2010-01-27  Jaroslav Hajek  <highegg@gmail.com>
+
+	* oct-parse.yy (validate_matrix_row): New static helper func.
+	(cell_or_matrix_row): Call it here.
+
 2010-01-27  Jaroslav Hajek  <highegg@gmail.com>
 
 	* oct-lvalue.h (octave_lvalue::is_black_hole): New method.
--- a/src/oct-parse.yy	Wed Jan 27 12:41:49 2010 +0100
+++ b/src/oct-parse.yy	Wed Jan 27 13:13:26 2010 +0100
@@ -315,6 +315,10 @@
 static tree_decl_command *
 make_decl_command (int tok, token *tok_val, tree_decl_init_list *lst);
 
+// Validate argument list forming a matrix or cell row.
+static tree_argument_list *
+validate_matrix_row (tree_argument_list *row);
+
 // Finish building a matrix list.
 static tree_expression *
 finish_matrix (tree_matrix *m);
@@ -714,9 +718,9 @@
 
 cell_or_matrix_row
 		: arg_list
-		  { $$ = $1; }
+		  { $$ = validate_matrix_row ($1); }
 		| arg_list ','	// Ignore trailing comma.
-		  { $$ = $1; }
+		  { $$ = validate_matrix_row ($1); }
 		;
 
 fcn_handle	: '@' FCN_HANDLE
@@ -3104,6 +3108,14 @@
   return retval;
 }
 
+static tree_argument_list *
+validate_matrix_row (tree_argument_list *row)
+{
+  if (row && row->has_magic_tilde ())
+    yyerror ("invalid use of tilde (~) in matrix expression");
+  return row;
+}
+
 // Finish building a matrix list.
 
 static tree_expression *