Strange parser error: 1/+3*x == 1/(+3*x)



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