javascript - 如何将json的上下文无关语法转换为状态机?

标签 javascript json compiler-construction

我阅读了 JSON 的上下文无关语法 ( http://www.json.org/ ) 和解析器:如何解析 JSON 文本以生成对象或数组 ( https://github.com/douglascrockford/JSON-js/blob/master/json_parse_state.js )。

但我不知道如何将 JSON cfg 转换为状态机。

谁能说的详细些?

最佳答案

你不能构建一个“解析”json 的状态机,因为状态机在技术上无法匹配嵌套的括号。

您可以构建一个下推自动机 (PDA),使用堆栈来跟踪括号。如果您手动执行此操作,您将构建类似于 LR(0) 解析器的东西。 如果你打算这样做,使用 LALR 解析器生成器会更容易,它 将学习语法并为您构建 PDA。

您还可以通过在识别器中“编译”语法规则来编写自己的递归下降解析器。对于 JSON,这是一件非常合理的事情;语言没有那么复杂。在 how to build a recursive descent parser 上查看我的 SO 答案.

关于javascript - 如何将json的上下文无关语法转换为状态机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435225/

相关文章:

javascript - AJAX文件夹路径问题

javascript - 在javascript中定义一个对象

compiler-construction - 使用逻辑编程进行优化的语言

flex 和 bison 的通用标记

javascript - 在工具提示中显示表格单元格内容(jsfiddle 在实际站点上不起作用)

javascript - Qunit:ReferenceError:等于未定义

javascript - 试图让这个 SVG 覆盖按钮?

javascript - 使用 JavaScript 在 Spring MVC 中上传图像进行预览

jQuery/AJAX - 响应格式

c++ - 我是否需要针对不同的指令集制作多个可执行文件?