当前位置:  开发笔记 > 编程语言 > 正文

静态打字的Lua

如何解决《静态打字的Lua》经验,为你挑选了2个好方法。

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

要清楚 - 任何差异只会发生在字节编译时.在运行时,字节代码不知道在编译阶段发生了任何不同/异常的事情.

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

有没有人听说过这样的努力?我已经看到了一些使用MetaLua来做这件事的引用,但老实说,我不够聪明,无法做出文档的尾巴.



1> Norman Ramse..:

在2005年夏天或者附近,我与一位非常聪明的本科生一起研究了为Lua做一些编译时类型推断的问题,可能是由注释辅助的.这个问题难以置信!(我的学生写了一篇简短的技术说明,但它并不是真正用于一般发行的.)

如果我想解决你提出的问题,有了它允许重要静态类型检查的双重约束,并且它与标准字节码编译的Lua代码互操作,我会从头开始设计一种新语言来满足这两个约束.这将是一项大量的工作,但比尝试将类型系统改造为Lua要容易得多.


诺曼,应该分享知识.我会非常有兴趣了解你的研究结论是什么!

2> Alexander Gl..:

请参阅这篇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邮件列表中提出您的问题.如果你想扩展Lua语法,Metalua是第一个看的工具.

PS请永远不要把Lua写成全部大写!

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有