我正在寻找一个在编译时进行类型检查的 Lua 前端编译器,但输出标准 Lua 5.1 字节码(只有运行时类型)。我想要的是相当数量的静态编译时语法分析和可选类型,以便比运行时更快地检测到微不足道的错误。生成的字节码必须与使用标准 LoadString() 编译的现有 Lua 字节码很好地配合。
需要明确的是——任何差异只会发生在字节编译时。在运行时,字节码不会知道在编译阶段发生了任何不同/不寻常的事情。
我的想法听起来很像 ActionScript;我什至不介意输出 Lua 字节码的 ActionScript 编译器!
有没有人听说过这样的努力?我已经看到一些关于使用 MetaLua 来执行此操作的引用资料,但老实说,我还不够聪明,无法对他们的文档做出正面评价
最佳答案
-{ extension "types" }
function sum (x :: list(number)) :: number
local acc :: number = 0
for i=1, #x do acc=acc+x[i] end
return acc
end
不过,这看起来像是一个运行时解决方案。
无论如何,请随时在 Metalua mailing list 中提出您的问题.如果你想扩展 Lua 语法,Metalua 是第一个要看的工具。
附言请never write Lua as all-caps !
关于compiler-construction - 静态类型的 Lua,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/813926/