Как отметил Владимир, вы можете использовать собственный класс узлов AST, который имеет встроенные возможности сериализации. Вы также можете использовать адаптер дерева для создания нужных вам типов узлов.
Если вам нужна только сериализация, а не десериализация, вы, вероятно, можете просто сделать:
ast.toStringTree()
Вышеуказанное даст вам LISP-подобную древовидную структуру. Простой способ сделать сериализацию - использовать ее в сочетании с пользовательским классом узла AST с переопределенным значением toString()
. Поскольку toStringTree()
использует метод узла toStringTree
, он по существу будет сериализовать все, что вы положили в toString
. Сделайте его вывод достаточным и полезным, и вы должны быть установлены.