是否可以通过限制Google V8中的Javascript支持来创建一种更简单的语言?我想将V8引擎嵌入我自己的工具中以运行动态脚本,并且喜欢V8预先编译速度源的想法。但是,我需要极大地限制语言中可能出现的情况。

这意味着没有动态分配数据容器(例如数组),没有导入的库,没有递归,没有线程。与通用语言相比,它在哲学上与Renderman着色语言更相似。因此,“新”语言要简单得多,由于熟悉的语法以及已经存在良好的“编译器”(V8),我只考虑使用JS。我可能还希望它在Chrome的本机代码(NaCl)环境中运行脚本代码,Google似乎正在努力在V8中支持该脚本代码。

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

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

最佳答案

对于您想要的所有功能限制,您都需要对V8进行一次大手术,因为V8从未设计用于如此重大的修改。

一种替代解决方案是发明一种类似于JavaScript的语言(具有您可以施加的所有限制),然后将其编译为普通JavaScript,然后可以与V8(或其他任何JavaScript引擎)一起运行。这种方法的著名示例是GWT(来自Java),Dart和TypeScript。

09-30 16:05
查看更多