Как использовать petitparser для написания JSON форматера?
Насколько я знаю, PetitParser - это парсер, с помощью которого мы можем определять грамматики и действия для разбора некоторого текста.
Я успешно использую его встроенный анализатор JSON для анализа какой-либо строки JSON, но я хочу сделать больше. Я хочу написать JSON форматер, который может отформатировать JSON в стиле довольно печати.
Но я не знаю, что делать. Должен ли я создать несколько узлов и построить дерево для анализируемого JSON? А как это сделать?
Я пытаюсь найти некоторые образцы, но пока не нашел.
1 ответ
PetitParser не помогает напрямую с красивой печатью.
В конкретном примере вы можете написать код, который будет проходить через Карты и Списки, которые возвращает анализатор, и распечатывать его по своему желанию.
В качестве альтернативы (и в целом для более сложных грамматик) вы можете создать подкласс JsonGrammar и создать AST пользовательских узлов анализа. Затем вы пишете посетителю или рекурсивно пересекаете узлы, чтобы соответствующим образом отформатировать данные. Синтаксический анализатор XML делает именно это.
PetitParser для Smalltalk поставляется с небольшим фреймворком под названием PrettyPetit, который помогает вам с механизмом компоновки блоков для оптимального размещения, переноса и выравнивания строк; но процесс генерации таких инструкций форматирования такой же, как и при ручном выполнении, как описано выше.