- 小巧的编译代码占用空间(小于200K)。
- 没有外部依赖。
- 支持Unicode(或原始字符串)。
- 清晰的代码/组织良好。
- C(99)代码,不是C++。
- C/Java风格的语法。
- 运算符/位运算:AND/OR等。
- 线程支持。
- 通用/可移植字节码。即使在不同体系结构、不同字节序的计算机上编译,字节码也应该能够正常工作。
- 基本语言支持而无需其他高级功能。
- 词法分析器/解析器与虚拟机独立。我将嵌入虚拟机到程序中,然后独立编译字节码。
目前我已经查看了Lua、Squirrel、Neko、Pawn、Io、AngelScript等选项...唯一比较接近规范的是Lua,但语法很糟糕,没有位运算支持,并且代码风格普遍很糟糕。Squirrel和IO太庞大了。Pawn有问题,它虽然小巧,但字节码不跨平台,而且实现存在一些严重问题(例如,据我所知,字节码根本未经过验证,甚至包头也没有)。
我希望能找到一个合适的选项。
谢谢!
更新:JavaScript解释器是…解释器。这是基于字节码的虚拟机的一个VM问题,因此需要编译器/字节码虚拟机分离要求。JS是解释执行的,并且很少被即时编译(JIT)。我不一定需要JIT。另外,所有当前的ECMAScript解析器都只有很少代码。