[Gambas-user] Ambiguous expression?
Benoît Minisini
gambas at ...1...
Wed Mar 10 19:53:55 CET 2010
> Alessandro Rinaldi ha scritto:
> > I really think yes.
> > Standard symbol for fractions is /, why should you use \?
>
> Backslash is "integer division", and should yeld an integer result.
> Slash is "float" division, and yelds a float number (this is "Basic"
> syntax; other languages use different methods).
>
> The expression "1\2*3" is not really ambiguous, it is only for Gambas
> (don't ask me why); it should be seen as "take an integer number,
> integer-divide it for another integer number, and multiply the result
> for another integer number, giving an integer result".
>
> About integer division, there are other reasons apart from wanting an
> *integer* division: for example is faster.
>
> Regards,
> Doriano
>
I noticed that operator evaluation order differ between languages, even if
they agree on most parts.
So I decided to raise an error when the compiler encounters different
operators having the same evaluation order weight, and when I thought that the
interpreter may not do what the user thinks.
By compelling the user to add brackets, I make the source code less ambiguous
for another reader, so this is a good thing.
But the test is not perfect, and I don't remember why I do not raise the error
for 1/2*3 and I raise it for 1\2*3.
Maybe because that mixing "*" and "/" is usual in mathematics, but mixing an
integer division with a normal multiplication not, and I wanted to force the
use of brackets.
Morever, that error is actually just a warning. I can suppress it, and Gambas
will just apply its operator evaluation order without telling anything. But I
don't think I will do it!
Regards,
--
Benoît Minisini
More information about the User
mailing list