lua-users home
lua-l archive

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


Hi Linker.
You have to attend that the AND operator has a higher priority than the OR one. So, "1 or false and true or false" is correct when resulting 1. But, in the last line, I agree with you, it's wrong.

On Thu, Apr 16, 2009 at 3:46 AM, Linker <linker.m.lin@gmail.com> wrote:
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



--
Marco Antonio Abreu
Analista de Sistemas