REPL和脚本之间的Lua语法规则有何不同?

REPL和脚本之间的Lua语法规则有何不同?,lua,lua-5.3,Lua,Lua 5.3,我很少使用Lua,所以这可能是一个无关紧要的问题,但我注意到,使用Lua 5.3.2,在交互式REPL中,我可以编写以下示例: > 1 == 2 or error('numbers not equal') 这就是我在Bash或Perl中执行错误处理的方式(当然,或左侧的语句在实际代码中更有用,例如两个变量) 但是如果我将1==2或error('numbers not equal')粘贴到某个文件foo.lua中,然后执行lua foo.lua,这将导致lua:foo.lua:1:在“1”

我很少使用Lua,所以这可能是一个无关紧要的问题,但我注意到,使用Lua 5.3.2,在交互式REPL中,我可以编写以下示例:

> 1 == 2 or error('numbers not equal')
这就是我在Bash或Perl中执行错误处理的方式(当然,
左侧的语句在实际代码中更有用,例如两个变量)

但是如果我将
1==2或error('numbers not equal')
粘贴到某个文件
foo.lua
中,然后执行
lua foo.lua
,这将导致
lua:foo.lua:1:在“1”附近出现意外符号。


我可以接受这是无效的语法,但我发现REPL仍然会接受这条语句,这很奇怪。有人能解释一下这是怎么回事吗?关于我在REPL中可以做什么在脚本中不能做的事情,是否有一些一般规则?

Lua REPL尝试将输入作为表达式进行求值。(*)如果成功,它将打印结果。这只是为了方便


(*)它通过将
return
预先添加到输入并尝试将其作为脚本运行来实现这一点。

啊,好的,这是有意义的。非常感谢。