compiler-construction - 静态类型的 Lua

标签 compiler-construction lua static-typing

我正在寻找一个在编译时进行类型检查的 Lua 前端编译器,但输出标准 Lua 5.1 字节码(只有运行时类型)。我想要的是相当数量的静态编译时语法分析和可选类型,以便比运行时更快地检测到微不足道的错误。生成的字节码必须与使用标准 LoadString() 编译的现有 Lua 字节码很好地配合。

需要明确的是——任何差异只会发生在字节编译时。在运行时,字节码不会知道在编译阶段发生了任何不同/不寻常的事情。

我的想法听起来很像 ActionScript;我什至不介意输出 Lua 字节码的 ActionScript 编译器!

有没有人听说过这样的努力?我已经看到一些关于使用 MetaLua 来执行此操作的引用资料,但老实说,我还不够聪明,无法对他们的文档做出正面评价

最佳答案

请看 this Metalua blog post .

-{ 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/

相关文章:

python - 如何在cython的函数参数中键入函数

c++ - 从<iostream.h> 更改为<iostream> 会导致缓冲区溢出吗?

iphone - 用于 iOS 开发的 LLVM 与 GCC

java - 从java代码到jvm字节代码的转换会被视为编译还是转译?

c - Lua c lib Windows : The specified procedure could not be found

lua - 如何获取Lua表中的条目数?

c++ - 我可以通过链接此 dl 从动态库加载函数,但如果不链接此 dl,我无法在代码中使用 'dlsym' 加载它

lua - 添加到 f=io.open() 的文件扩展名

c++ - 当基类指针指向在基类中声明的派生类虚函数时,为什么会出现编译时错误?

typescript - 在 TypeScript 中对非类型化数据强制类型化