Inequality (*solved*) - Printable Version

+- Forum (
+-- Forum: Compilers and Computer Languages (
+--- Forum: ZX Basic Compiler (
+---- Forum: Bug Reports (
+---- Thread: Inequality (*solved*) (/showthread.php?tid=467)

Inequality (*solved*) - britlion - 06-06-2012

Am I doing something wrong here? I think the order of operations is messing up. This looks very odd. Is BAND a lower priority than = ?

dim n as uInteger

for n=0 to 65530
    print at 10,10;n;"  ";n BAND 7
    print at 12,6;"n BAND 7 = 7 is ";
    IF n BAND 7 = 7 then
        print "TRUE "
        print "FALSE"
    END IF
pause 0
next n

I /think/ this is doing boolean logic of

( n BAND ( 7 = 7 ) )

Or, n BAND 1

Which can't be right, surely?

Re: Inequality - boriel - 06-06-2012

Could be a bug, yes. Will check it. If bAND has the same priority as AND then it will proceed as you said. bAND should behave like * operator (multiply), I Think

Re: Inequality - boriel - 06-11-2012

Hi, Britlion.
In effect, the operators priority was not the standard one.
I think this one is the expected one. :?:
('left', 'OR'),
    ('left', 'AND'),
    ('left', 'XOR'),
    ('right', 'NOT'),
    ('left', 'LT', 'GT', 'EQ', 'LE', 'GE', 'NE'),
    ('left', 'BOR'),
    ('left', 'BAND', 'BXOR', 'SHR', 'SHL'),
    ('left', 'BNOT', 'PLUS', 'MINUS'),
    ('left', 'MOD'),
    ('left', 'MUL', 'DIV'),
    ('right', 'UMINUS'),
    ('right', 'POW')
Note: The "left" and "right" refers to the operator associativity. Less precedence is on top, higher precedence is on the bottom (so POW -> ^ is takes the highest precedence). Also now BOR, BAND and BXOR have higher precedence than =, <>, >=, <= etc... (relational operators, here named EQ, NE, LE, etc...)

Re: Inequality - boriel - 06-17-2012

Ok. Please download version 1.2.9s882. It addressed many bugs (this being one of them).
Please, try it and tell me. :roll: