Some of you may have noticed that my parsing example was a bit
strange.... I only noticed this after sending it off. This bug also
happens in normal command-line parsing.
It turns out that a plus sign immediately following a multiplicative
operator causes the next multiplicative term to bind tightly:
1/+3*x == 1/(+3*x) == 1/(3*x) (!!)
should be (1/3)*x
1/+x/3 == 1/(+x/3) == 3/x (!!)
should be (1/+x)/3 = 1/(3*x)
a^+b*c == a^+(b*c) (!!)
should be (a^b)*c
With negative signs, these parse correctly:
1/-3*x == (-1/3)*x == -x/3
1/-x/3 == (1/-x)/3 == -1/(3*x)
a^-b*c == (a^-b)*c == c/(a^-b)
Maxima 5.9.0 on GCL 2.5.0 mingw32 W2k Athlon