[Gambas-user] Ambiguous expression?

2010-03-10 Thread Jussi Lahtinen
Hi!
This;  1\2*3
Yields this; Ambiguous expression. Please use braces

But if I write; 1/2*3
Then no problem.

Why? Is this planned behaviour?

Gambas 3 revision 2664 (old!)
Ubuntu 9.10 64bit

Jussi

--
Download Intel#174; 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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user


Re: [Gambas-user] Ambiguous expression?

2010-03-10 Thread Alessandro Rinaldi
I really think yes.
Standard symbol for fractions is /, why should you use \?

--
Download Intel#174; 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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user


Re: [Gambas-user] Ambiguous expression?

2010-03-10 Thread Jussi Lahtinen
1/2 = 0.5
1\2 = 0
3\2 = 1

\ operator gives only integer part.

Jussi


On Wed, Mar 10, 2010 at 19:48, Alessandro Rinaldi
alerina...@linuxzogno.org wrote:
 I really think yes.
 Standard symbol for fractions is /, why should you use \?

 --
 Download Intel#174; 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@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/gambas-user


--
Download Intel#174; 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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user


Re: [Gambas-user] Ambiguous expression?

2010-03-10 Thread Alessandro Rinaldi
Wow, interesting! Didn't know it :)
Thanks!
So, I really don't know what's the problem, have you tried using brackets?

--
Download Intel#174; 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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user


Re: [Gambas-user] Ambiguous expression?

2010-03-10 Thread Doriano Blengino
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


--
Download Intel#174; 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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user


Re: [Gambas-user] Ambiguous expression?

2010-03-10 Thread Benoît Minisini
 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

--
Download Intel#174; 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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user


Re: [Gambas-user] Ambiguous expression?

2010-03-10 Thread 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#174; 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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user


Re: [Gambas-user] Ambiguous expression?

2010-03-10 Thread Les Hardy
Benoît Minisini wrote:
 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,

   
You are correct to not suppress it. The warning is correct.
The actual value of the numbers is not important.
The expression is ambiguous without the brackets.
 5 \ (2 * 3) = 0
 (5 \ 2) * 3 = 6

This is also ambiguous
5/2*3

 5 / (2 * 3) = 0.8333
 (5 / 2) * 3 = 7.5

Regards
Les Hardy



--
Download Intel#174; 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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user


Re: [Gambas-user] Ambiguous expression?

2010-03-10 Thread Benoît Minisini
 You are correct to not suppress it. The warning is correct.
 The actual value of the numbers is not important.
 The expression is ambiguous without the brackets.
  5 \ (2 * 3) = 0
  (5 \ 2) * 3 = 6
 
 This is also ambiguous
 5/2*3
 
  5 / (2 * 3) = 0.8333
  (5 / 2) * 3 = 7.5
 

This is less ambiguous, because it is commonly known that / and * are 
associative from left to right a * b / c = (a * b) / c.

Regards,

-- 
Benoît Minisini

--
Download Intel#174; 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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user