是否可以通过限制Google V8中的Javascript支持来创建更简单的语言?我想在我自己的工具中嵌入V8引擎来运行动态脚本,就像V8预先知道速度来源的想法一样。但是,我需要彻底限制语言中的可能性。
这意味着没有动态分配数据容器(例如数组),没有导入的库,没有递归,没有线程。与通用语言相比,它在哲学上与Renderman着色语言更相似。因此,'新'语言更简单,我只考虑JS,因为熟悉的语法和已经有一个好的'编译器'(V8)。我可能还希望它能够在Chrome的本机代码(NaCl)环境中运行脚本代码,谷歌似乎正在努力支持V8。
重新定义JS'语法'或其他任何代码定义语言有多容易?
我的另一个选择是从头开始创建一个新的编译语言(也许使用LLVM的东西)。
答案 0 :(得分:0)
对于你想要的所有功能限制,你需要在V8上进行大手术,因为V8从未被设计用于这种根本性的修改。
另一种解决方案是发明类似JavaScript的语言(具有您可以施加的所有限制)并将编译成普通的JavaScript,然后您可以使用V8运行(或任何其他JavaScript引擎)。这种方法的众所周知的例子是GWT(来自Java),Dart和TypeScript。
答案 1 :(得分:0)
仔细看看松鼠语言: http://squirrel-lang.org 来自描述概述: “编译器和虚拟机都在大约7k行的C ++代码中组合在一起,并且只增加了大约100kb-150kb的可执行文件大小。”
享受!