Как использовать petitparser для написания форматировщика JSON?

Насколько мне известно, PetitParser - это синтаксический анализатор, с помощью которого мы можем определять грамматики и действия для синтаксического анализа некоторого текста.

Я успешно использовал его встроенный анализатор JSON для анализа некоторой строки JSON, но я хочу сделать больше. Я хочу написать средство форматирования JSON, которое может форматировать JSON в красивом печатном стиле.

Но я не знаю, что мне делать. Нужно ли мне создавать несколько узлов и строить дерево для проанализированного JSON? А как это сделать?

Пытаюсь поискать образцы, но пока не нашел.


person Freewind    schedule 21.06.2013    source источник


Ответы (1)


PetitParser напрямую не поможет вам с красивой печатью.

В конкретном примере вы можете написать код, который будет проходить по картам и спискам, возвращаемым парсером, и печатать его по вашему желанию.

В качестве альтернативы (и в целом для более сложных грамматик) вы можете создать подкласс JsonGrammar и создать AST пользовательских узлов синтаксического анализа. Затем вы пишете посетителя или рекурсивно просматриваете узлы для соответствующего форматирования данных. XML-синтаксический анализатор делает именно это.

PetitParser для Smalltalk поставляется с небольшой структурой под названием PrettyPetit, которая помогает вам с помощью механизма компоновки блоков оптимально размещать, обертывать и выравнивать строки; но процесс создания таких инструкций по форматированию такой же, как и при выполнении вручную, как описано выше.

person Lukas Renggli    schedule 21.06.2013
comment
Ссылка github.com/renggli/PetitParserJava/tree/ master / grammar / org / мертв - person Günter Zöchbauer; 31.10.2018