Сериализация ANTLR - PullRequest
       3

Сериализация ANTLR

1 голос
/ 24 августа 2010

Какова наилучшая стратегия, позволяющая сделать деревья абстрактного синтаксиса сериализуемыми в файл XML?

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

Пройдите AST рекурсивно, начиная с корня.

При спуске к узлу типа X выведите открывающий тег:

 <X>

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

 </X>

В листовом узле типа L выведите

 <L value="abc"/>

с возможными интересующими значениями атрибутов.

Готово.

Если вы отслеживаете вложенность рекурсии, вы можете распечатать начало и конец тега. с ведущими пробелами recursion_depth и последующим переводом строки Тогда ваш XML будет красиво вложен.

1 голос
/ 24 августа 2010

Глава "Деревья ANTLR против пользовательских деревьев" на на этой веб-странице показан пример грамматики antlr, некоторого ввода и форматированного вывода AST для данного ввода.Глава содержит ссылку на программу C ++ для создания этого форматированного вывода.

Это не xml, но довольно близко и может быть хорошей основой для начала.

...