是否有一个允许使用JavaScript语法定义解析语法的JavaScript框架,类似于Irony为C#做的方式?
答案 0 :(得分:4)
我已经构建了一个名为 Chevrotain 的JavaScript解析 DSL 。
来源: https://github.com/SAP/chevrotain
在线游乐场: http://sap.github.io/chevrotain/playground/
不像反讽这样的Parser组合器,但它非常相似 因为它允许你“使用JavaScript语法定义解析语法” 没有任何代码生成阶段。
使用它类似于“手工构建”一个递归的正确解析器, 只有没有大多数头痛,如:
因为Chevrotain会自动处理。
答案 1 :(得分:3)
我不太了解Irony的工作方式,但是Chris Double有一个库,可以让你在这里用JavaScript定义语法:http://www.bluishcoder.co.nz/2007/10/javascript-parser-combinators.html。代码为available on GitHub。
它是一个“解析器组合器”库,这意味着您将语法中每个产品的解析器组合成一个解析整个事物的更大的解析器。每个“子语法”只是通过调用库函数创建的函数。
答案 2 :(得分:0)
这不是你需要的,但是this article在javascript中为javascript本身制作一个递归下降解析器。
答案 3 :(得分:0)
PEG.js可能是一种解决方案。
PEG.js是一个用于JavaScript的简单解析器生成器,可生成具有出色错误报告功能的快速解析器。您可以使用它来处理复杂的数据或计算机语言,并轻松构建变换器,解释器,编译器和其他工具。
功能强>
简单而富有表现力的语法语法 整合词法和句法分析 解析器具有出色的错误报告功能 基于解析表达式语法形式 - 比传统的LL(k)和LR(k)解析器更强大 可以从浏览器,命令行或JavaScript API
中使用