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

时间:2019-04-06 18:01:29

标签: lua lua-5.3

我很少使用Lua,所以这可能是一个琐碎的问题,但是我刚刚注意到,在Lua 5.3.2中,我可以在交互式REPL中编写例如:

CXX = g++
CXXFLAGS = -Wall -pedantic -std=c++17 -g

Saw: main.o saw.o
    ${CXX} ${CXXFLAGS} -o $@ $^

main.o: saw.hpp
saw.o: saw.hpp

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

但是如果我将or粘贴到某个文件1 == 2 or error('numbers not equal')中,然后执行foo.lua,则会得到lua foo.lua

我可以接受这是无效的语法,但是我感到非常奇怪的是REPL仍然接受该语句。有人可以解释这里发生了什么吗?关于我在脚本中无法完成的在REPL中可以做什么的一些一般规则吗?

1 个答案:

答案 0 :(得分:1)

Lua REPL尝试将输入评估为表达式。(*)如果成功,则打印结果。这只是为了方便。

(*)通过在输入之前添加return并尝试将其作为脚本运行来实现。