通过限制Google V8中的Javascript支持来创建更简单的特定于域的语言?

时间:2012-12-14 19:41:50

标签: javascript google-chrome v8

是否可以通过限制Google V8中的Javascript支持来创建更简单的语言?我想在我自己的工具中嵌入V8引擎来运行动态脚本,就像V8预先知道速度来源的想法一样。但是,我需要彻底限制语言中的可能性。

这意味着没有动态分配数据容器(例如数组),没有导入的库,没有递归,没有线程。与通用语言相比,它在哲学上与Renderman着色语言更相似。因此,'新'语言更简单,我只考虑JS,因为熟悉的语法和已经有一个好的'编译器'(V8)。我可能还希望它能够在Chrome的本机代码(NaCl)环境中运行脚本代码,谷歌似乎正在努力支持V8。

重新定义JS'语法'或其他任何代码定义语言有多容易?

我的另一个选择是从头开始创建一个新的编译语言(也许使用LLVM的东西)。

2 个答案:

答案 0 :(得分:0)

对于你想要的所有功能限制,你需要在V8上进行大手术,因为V8从未被设计用于这种根本性的修改。

另一种解决方案是发明类似JavaScript的语言(具有您可以施加的所有限制)并编译成普通的JavaScript,然后您可以使用V8运行(或任何其他JavaScript引擎)。这种方法的众所周知的例子是GWT(来自Java),Dart和TypeScript。

答案 1 :(得分:0)

仔细看看松鼠语言: http://squirrel-lang.org 来自描述概述: “编译器和虚拟机都在大约7k行的C ++代码中组合在一起,并且只增加了大约100kb-150kb的可执行文件大小。”

享受!