我见过一些 javascript 解析器生成器:
PEG.js (http://pegjs.majda.cz/)
ANTLR (http://www.antlr.org/)
JS/CC (http://jscc.jmksf.com/)
有人有相关经验吗?
有什么优点和缺点?这些库准备好用于生产了吗?还有性能?
编辑:
我想在 javascript 中解析并运行不同的语言
我最近编写了一个名为 parsinator.js 的解析器组合器库,它支持状态和调试功能:
github.com/fresheneesz/parsinator.js
旧答案:
PEG.js 非常容易使用。它的“在线试用”功能对于快速学习如何使用系统非常有用。我目前正在 Rhino 环境中使用它来解析我正在编写的语言。我不是 Rhino 的忠实粉丝,但 PEG.js 确实不错。
我不确定您是否想要一个能够生成 JavaScript 编写的解析器的解析器生成器,或者一个能够使用 JavaScript 语法来构建 JavaScript 解析器的解析器生成器。
反正我只用过ANTLR和JavaCC。 ANTLR 允许您用不同的语言(C、C#、Java)生成解析器,并且在 GUI 树状形式上检查上下文无关语法表达式非常酷。但从未找到过它的 JavaScript 语法。
JavaCC 有一个缺点。仅生成 Java 中的解析器。另一方面,我发现更容易学习并从构建解析器的部分迈向(我发现这是最好的部分)围绕它构建任何你想要的东西,例如代码翻译器、改写器等。