[Gambas-user] [SPAM] Re: Ambiguous expression?

Tim Koeller gmail tkoeller at ...626...
Thu Mar 11 04:00:59 CET 2010


... and when operators are of equal precedence then the operators are
executed left to right.

Tim

On 3/10/10, Dag Jarle Johansen <dag.jarle.johansen at ...2312...> wrote:
> Sorry
> this i mathe
> if you have been on a highschool or a college, you would know: it's easy
> multiplication and diviation goes for addition and subtsraction.
> Gambas works like this, if you are unsure, use parantesis ()
>
> regards,
> Dag-Jarle Johansen
>
>
> Am Mittwoch, den 10.03.2010, 20:20 +0100 schrieb Doriano Blengino:
>> Benoît Minisini ha scritto:
>> >> 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".
>> >>
>> >>
>> > 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.
>> >
>> Perhaps this is because C has "/" and "*", and both have a double
>> meaning (integer and float);
>> pascal has two separated "/" and "DIV", and only one "*". So gambas is
>> similar to pascal.
>> When an operator is the same on different types (integer and floats),
>> the compiler checks the arguments of the operator to decide whether
>> promote one of the two (and the result).
>> In this very case, all the arguments are integer, so all the operators
>> are integer too, and there should be no doubt.
>> Anyway, division and multiplication have the same precedence and
>> (probably?) same associativity.
>>
>> But I agree with you: by combining precedence and associativity it is
>> easy to make up a mess, and sometimes a solution like yours is better.
>> The C language has something like 15 or more rules, so who remembers the
>> exact result of "*pointer-- >> 3+1"?
>> > 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!
>> >
>> >
>> Uhm... *it is* an error if the compiler refuses to compile... it would
>> be possible to turn it in a warning (does gambas have warnings?), if
>> only one is very sure about promoting. But gambas uses a typing scheme
>> different from C and pascal, and automatic type conversions, so you are
>> probably right in keeping your way.
>>
>> Regards,
>> Doriano
>>
>>
>> ------------------------------------------------------------------------------
>> Download Intel® Parallel Studio Eval
>> Try the new software tools for yourself. Speed compiling, find bugs
>> proactively, and fine-tune applications for parallel performance.
>> See why Intel Parallel Studio got high marks during beta.
>> http://p.sf.net/sfu/intel-sw-dev
>> _______________________________________________
>> Gambas-user mailing list
>> Gambas-user at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>
>
>
> ------------------------------------------------------------------------------
> Download Intel® Parallel Studio Eval
> Try the new software tools for yourself. Speed compiling, find bugs
> proactively, and fine-tune applications for parallel performance.
> See why Intel Parallel Studio got high marks during beta.
> http://p.sf.net/sfu/intel-sw-dev
> _______________________________________________
> Gambas-user mailing list
> Gambas-user at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
>


-- 
Tim Koeller




More information about the User mailing list