lua-users home
lua-l archive

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


On Wed, 5 Jun 2019 at 15:59, Dibyendu Majumdar <mobile@majumdar.org.uk> wrote:
>
> On Wed, 5 Jun 2019 at 15:53, Matthew Wild <mwild1@gmail.com> wrote:
> > $ cat resource.lua
> > local resource x = 5
> > print(resource, x)
> >
> > $ lua5.3 resource.lua
> > nil        5
> >
>
> Okay, I am a bit puzzled. The grammar says:
>
> local namelist [‘=’ explist]
>
> namelist ::= Name {‘,’ Name}
>
> So what you showed appears invalid grammatically ... but the parser allows it?

The Lua grammar is not line-based. Usually these two statements would
be written:

```
local resource
x = 5
```

But Lua would also accept it as:

```
local
resource
x
=
5
```

with the exact same semantics. Check luac -l if it helps.

The proposal of how to handle 'resource' as a semi-keyword would
change the meaning of this block of code, however it was written.

Designing language syntax is not trivial :)

Regards,
Matthew