Arm*_*age 17 compiler-construction lua static-typing
我正在寻找一个在编译时进行类型检查的Lua前端编译器,但输出标准的Lua 5.1字节代码(只有运行时类型).我想要的是一定量的静态,编译时语法分析和可选类型,以便比运行时更快地检测到琐碎的错误.生成的字节代码必须与使用标准LoadString()编译的现有Lua字节代码很好地配合.
要清楚 - 任何差异只会发生在字节编译时.在运行时,字节代码不知道在编译阶段发生了任何不同/异常的事情.
我的想法听起来很像ActionScript; 我甚至不介意输出Lua字节代码的ActionScript编译器!
有没有人听说过这样的努力?我已经看到了一些使用MetaLua来做这件事的引用,但老实说,我不够聪明,无法做出文档的尾巴.
Nor*_*sey 14
在2005年夏天或者附近,我与一位非常聪明的本科生一起研究了为Lua做一些编译时类型推断的问题,可能是由注释辅助的.这个问题难以置信!(我的学生写了一篇简短的技术说明,但它并不是真正用于一般发行的.)
如果我想解决你提出的问题,有了它允许重要静态类型检查的双重约束,并且它与标准字节码编译的Lua代码互操作,我会从头开始设计一种新语言来满足这两个约束.这将是一项大量的工作,但比尝试将类型系统改造为Lua要容易得多.
请参阅这篇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
Run Code Online (Sandbox Code Playgroud)
这看起来像是一个运行时解决方案.
无论如何,请随时在Metalua邮件列表中提出您的问题.如果你想扩展Lua语法,Metalua是第一个看的工具.
PS请永远不要把Lua写成全部大写!
小智 6
这个问题已有六年历史了……但这里有一个新答案:http : //terralang.org/
与 C 一样,Terra 是一种简单的、静态类型的、具有手动内存管理功能的编译语言。但与 C 不同的是,它从一开始就被设计为与 Lua 互操作。Terra 函数是使用 terra 关键字创建的一流 Lua 值。需要时,它们会被 JIT 编译为机器代码。
| 归档时间: |
|
| 查看次数: |
7683 次 |
| 最近记录: |