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

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

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

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

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

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам