lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Maybe it's a parsing issue. This from the Lua Demo site:

print( ((1 or false) and true) or false)
local x, y, z = 1, true, false
print( ((x or z) and y) or z )

-->1
-->true

The strange behaviour doesn't happen if the inner parenthesis is
(false or 1) for example.

Vaughan

2009/4/16 Linker <linker.m.lin@gmail.com>:
> I had try it in Lua 5.1.4 win xp:
>> =1 or false
> 1 -- right
>> =1 and true or false
> true -- right
>> =1 or false and true or false
> 1 -- wrong
>> =((1 or false) and true)or false
> 1 -- wrong
>>
>
>
> On Thu, Apr 16, 2009 at 12:37, Kelley, Brian <bkelley@qualcomm.com> wrote:
>>
>> I was surprised to notice the following:
>>
>>   Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
>>   > =((1 or false) and true) or false
>>   1
>>
>> Same results on 5.1.2 and 5.1.3, MacOS and Windows.
>>
>> For what it's worth, I observed in lcode.c that the OPR_AND expression
>> inherited the 'k' (kind) of VTRUE from its rhs subexpression, which seems
>> wrong and seems to throw off the subsequent call to luaK_goiffalse().
>>
>> -bhk
>>
>
>
>
> --
> Regards,
> Linker Lin
> linker.m.lin@gmail.com
>