1

据我所知,PetitParser是一个解析器,我们可以定义语法和动作来解析一些文本。

我已经成功地使用它内置的 JSON 解析器来解析一些 JSON 字符串,但我想做更多。我想编写一个 JSON 格式化程序,可以将 JSON 格式化为漂亮的打印样式。

但我不知道该怎么办。我是否必须创建一些节点并为解析的 JSON 构建树?怎么做?

我正在寻找一些样品,但还没有找到。

4

1 回答 1

2

PetitParser不会直接帮助您进行漂亮的打印。

在特定示例中,您可以编写代码来遍历解析器返回的 Maps 和 Lists 并根据需要打印它。

或者(通常对于更复杂的语法)您可以继承 JsonGrammar 并生成自定义解析节点的 AST。然后您编写访问者或递归遍历节点以相应地格式化数据。XML 解析器正是这样做的。

Smalltalk 的 PetitParser 带有一个名为PrettyPetit的小框架,它可以帮助您使用块布局引擎优化放置、包装和对齐字符串;但生成此类格式化指令的过程与上述手动生成的过程相同。

于 2013-06-21T17:50:05.617 回答