我阅读了 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/