据我所知,PetitParser是一个解析器,我们可以定义语法和动作来解析一些文本。
我已经成功地使用了它内置的JSON解析器来解析一些JSON字符串,但我还想做更多的工作。我想写一个JSON格式化程序,它可以将JSON格式化成漂亮的打印样式。
但我不知道该怎么办。我是否必须为解析的JSON创建一些节点并构建一个树?那该怎么做呢?
我在找一些样品,但还没找到。
发布于 2013-06-22 01:50:06
PetitParser不能直接帮助您实现漂亮的打印效果。
在这个特定的示例中,您可以编写遍历Map并列出解析器返回的代码,然后按您的意愿打印它。
或者(通常对于更复杂的语法),您可以子类化JsonGrammar并生成自定义解析节点的AST。然后编写一个访问器或递归遍历节点以相应地格式化数据。XML parser就是这样做的。
Smalltalk的PetitParser附带了一个名为PrettyPetit的小框架,它可以帮助您使用块布局引擎来优化字符串的放置、包装和对齐;但生成此类格式化指令的过程与如上所述的手动生成是相同的。
https://stackoverflow.com/questions/17240119
复制相似问题