Re: Lua 5.1: Question on how the Lua parser evaluates bodies
Hello Luiz Henrique,
you are right with block() , I am sorry.
I get this in Lua 5.1:
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
Luiz Henrique de Figueiredo wrote:
>> I noticed that the Lua 5.1 parser seems to call the body() procedure
>> multiple times when parsing statements that are part of a Lua body, for
>> example statements in a `then`, `else` or `do` body.
> body() is for parsing function bodies:
> /* body -> `(' parlist `)' chunk END */
> Perhaps you mean block():
> /* block -> chunk */
Alexander> Hello Luiz Henrique,
Alexander> you are right with block() , I am sorry.
Alexander> I get this in Lua 5.1:
The REPL decides whether it has a complete statement to execute by doing
a load() on whatever it has, and seeing if there's a syntax error at the
very end of the input. So in your example, the first two calls to
block() are for the strings [[do]] (which fails) and [[do print("Lua")]]
(which also fails), and then the third call for [[do print("Lua") end]]
succeeds and the REPL then runs the resulting chunk.