[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
parsing problem. Bug?
From: 
John W. Eaton 
Subject: 
parsing problem. Bug? 
Date: 
Wed, 28 Jan 1998 15:13:11 0600 
On 28Jan1998, Andy Adler <address@hidden> wrote:
 I've had the following parsing problem. I get the same
 error in octave 2.0.9 and 2.1.2.

 if you try to define a vector

 octave:69> a=b=c=d=1;
 octave:70> [a b (c+d)]
 error: invalid vector index = 2
 error: evaluating index expression near line 70, column 5
This is parsed as
a b (c+d)
variable indexexpression
 If you bracket the b the answer is wrong
 octave:70> [a (b) (c+d)]
 ans = 1 2
This is parsed as
a (b) (c+d)
indexexpression binaryexpression
 You need to give everything brackets
 octave:71> [(a) (b) (c+d)]
 ans =
 1 1 2
You could just write `[a b c+d]', or use a temporary variable:
d = c+b;
[a b d]
or, as you say, use commas where they are needed.
 I realize that the right_thing_to_do (tm) is use commas to
 separate elements, but I think this behaviour is a bug.

 PS. In matlab you get
 >> [a b (c+d)]
 ans = 1 1 2
If there is a bug, I think it is in the way that Matlab treats
whitespace differently in different contexts.
If you want the Matlab behavior, you can set the variable
`whitespace_in_literal_matrix' to "traditional".
jwe