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

How convert the context free grammar of json to state machine?

本文关键字:转换 状态机 上下文无关语法 json      更新时间:2023-09-26

我阅读了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,这是一个相当合理的事情;语言并没有那么复杂。关于如何构建递归下降解析器,请参阅我的SO答案。