Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将json的上下文无关语法转换为状态机?_Javascript_Json_Compiler Construction - Fatal编程技术网

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

Javascript 如何将json的上下文无关语法转换为状态机?,javascript,json,compiler-construction,Javascript,Json,Compiler Construction,我阅读了JSON()和解析器的上下文无关语法:如何解析JSON文本以生成对象或数组() 但我不知道如何将JSON cfg转换为状态机 任何人都可以更详细地描述?您不能构建“解析”json的状态机,因为从技术上讲,状态机无法匹配嵌套的括号 您可以使用堆栈跟踪括号来构建下推自动机(PDA)。如果您手工操作,您将构建类似于LR(0)解析器的东西。 如果要这样做,使用LALR解析器生成器会更容易 我会学习语法并为你制作PDA 您还可以通过在识别器中“编译”语法规则来编写自己的递归下降解析器。对于JSON

我阅读了JSON()和解析器的上下文无关语法:如何解析JSON文本以生成对象或数组()

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


任何人都可以更详细地描述?

您不能构建“解析”json的状态机,因为从技术上讲,状态机无法匹配嵌套的括号

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


您还可以通过在识别器中“编译”语法规则来编写自己的递归下降解析器。对于JSON来说,这是一件非常合理的事情;语言没有那么复杂。请参见我的SO答案。

您能告诉我们您在编制计划时想要实现的目标吗?也许有人有别的选择。你需要什么“状态机”?请注意,JSON不能用DFA来描述,但实际使用的是状态机。它是怎么做到的?使用自底向上的解析器?我仍然无法获取状态机。但是lib()确实使用状态机。你读过源代码了吗?它是一个自底向上的解析器吗?您可以实现一个带有FSA和堆栈的PDA。我还没看过代码。我打赌有一个堆栈可以跟踪嵌套的构造。