Я только начал использовать antlr3 и пытаюсь сериализовать выход AST в грамматике .g.
Спасибо,
LezanКак сериализовать antlr3 AST
ответ
Как указал Владимир, вы можете использовать собственный класс узлов AST, который имеет встроенные возможности сериализации. Вы также можете использовать адаптер дерева для создания нужных вам типов узлов.
Если вам нужно только сериализации, а не де-сериализации, вы могли бы, вероятно, просто сделать:
ast.toStringTree()
выше даст вам LISP как древовидную структуру. Простым способом сериализации будет использование этого в сочетании с пользовательским классом AST с переопределенным toString()
. Поскольку toStringTree()
использует метод узла toStringTree
, он по существу сериализует все, что вы ставите в toString
. Сделайте свой вывод достаточным и полезным, и вы должны быть установлены.
CommonTree узлы, произведенные Parser не Сериализуемый.
Я предлагаю вам сериализовать токены и использовать вторичную грамматику для разбора (десериализованного) потока токенов позже. В книге (Окончательный ANTLR Reference) в главе «Быстрый тур для нетерпимости» Теренс Парр дает именно этот сценарий - без сериализации, но сериализация тривиальна для токенов, поскольку они всего лишь текст.
Мое понимание также, что вы можете заменить класс Tree с вашим собственным:
options {
ASTLabelType = MyOwnTreeClass;
}
Но я не пробовал.
- 1. Как создать TreeParser в ANTLR3?
- 2. Использование генерации кода ANTLR3 C++
- 3. Как сопоставить упрощенную строку в ANTLR3
- 4. ANTLR3 разобрать выражение
- 5. ANTLR3: как сопоставить инструкции в AST с номером строки в его исходном файле java
- 6. Соответствующие варианты лексемы с Antlr3
- 7. Как использовать муравей с antlr3
- 8. Создайте входной поток antlr3 из строкового потока? (Antlr3 C-мишень)
- 9. Островная грамматика antlr3
- 10. Сгенерировать AST с помощью ANTLR4 сгенерированного посетителя
- 11. ANTLR3 лексер старшинство
- 12. простых критерии анализатор выражений с antlr3
- 13. ANTLR3 метаданные времени выполнения
- 14. Лексер antlr3 токенов проблему
- 15. Неожиданное поведение с ANTLR3
- 16. EBNF грамматика ANTLR3?
- 17. Нужна известково пример ANTLR3
- 18. ANTLR3 Ссылка на синтаксис?
- 19. ANTLR2 vs ANTLR3
- 20. Как манипулировать C# AST?
- 21. Как получить Kotlin AST?
- 22. Как вручную построить AST?
- 23. как посмотреть clang AST?
- 24. Переключение состояния lexer в грамматике antlr3
- 25. Как правильно преобразовать ES6 AST в ES5 AST?
- 26. Преобразование дерева AST в другое дерево AST
- 27. HQL неожиданный AST узел: неожиданный узел AST:
- 28. AST интерпретатор?
- 29. Antlr3 report java.lang.OutOfMemoryError при выражении разбора
- 30. ANTLR3 семантические предикаты в грамматике перезаписи дерева