[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: odd typo, what's happening
- From: Dirk Laurie <dirk.laurie@...>
- Date: Sun, 20 Dec 2015 14:48:46 +0200
2015-12-20 14:31 GMT+02:00 Soni L. <fakedme@gmail.com>:
>
>
> On 20/12/15 05:41 AM, Dirk Laurie wrote:
>>
>> 2015-12-20 6:19 GMT+02:00 Egor Skriptunoff <egor.skriptunoff@gmail.com>:
>>>
>>> On Fri, Dec 18, 2015 at 3:19 PM, Rena <hyperhacker@gmail.com> wrote:
>>>>
>>>> The exception is when it's ambiguous:
>>>> x = f
>>>> (a or b):c()
>>>> That expression could be interpreted as two statements or one (remove
>>>> the
>>>> line break and see). In that case Lua is kind enough to make an
>>>> exception to
>>>> the "ignore whitespace" rule and raise an error
>>>
>>> Really?
>>> I've always thought that Lua treats this chunk as absolutely correct way
>>> to
>>> write the following code:
>>> x = (f(a or b)):c()
>>
>> It depends on the Lua version. It changed between Lua 5.1 and Lua 5.2,
>> A linebreak between a function and its arguments used to be illegal,
>> and an error message was issued. As from 5.2, no matter what whitespace
>> sits between the two parts (several blank lines if you like), x = (f(a
>> or b)):c()
>> is performed.
>>
> It changed bewteen Lua 5.0 and Lua 5.2.
>
> In Lua 5.0, a linebreak between a function and its arguments made 2
> statements, not a function and its arguments. (so a newline worked like a
> semicolon)
Did you try that out? On my system it does as I said.
Lua 5.0.3 Copyright (C) 1994-2006 Tecgraf, PUC-Rio
> a = {c=print}
> b = {c=print}
> a:c(); b:c()
table: 0x1003d40
table: 0x1004150
> f = function(t) if t==a then return b else return t end end
> f(a or b):c()
table: 0x1004150
> do
>> x = f
>> (a or b):c()
stdin:3: ambiguous syntax (function call x new statement) near `('
- References:
- odd typo, what's happening, Thijs Schreijer
- Re: odd typo, what's happening, Rena
- Re: odd typo, what's happening, Egor Skriptunoff
- Re: odd typo, what's happening, Dirk Laurie
- Re: odd typo, what's happening, Soni L.