AST в XML в целом (возможно, ANTLR) - PullRequest
2 голосов
/ 02 ноября 2011

Мне нужно проанализировать файлы, написанные на некоторых языках (Java, C, C # ...), а затем отследить AST (Абстрактное синтаксическое дерево) до xml.(На самом деле цель состоит в том, чтобы манипулировать им и переходить на другой язык - эта вторая часть была реализована).После расследования выясняю, что для этого нет единого подхода.

Наиболее близким является srcML .Но первая проблема в том, что это не Java =).Вторая проблема - количество языков (только 3).

Я знаю, что DMS может решить эту проблему, но это не бесплатный и открытый исходный код.

ТакКак я понимаю, есть один способ сделать это: взять ANTLR и попытаться преобразовать AST в XML.Поэтому вопрос заключается в том, как сделать это с помощью ANTLR (Java), или, может быть, я упускаю некоторые (не способ ANTLR), чтобы сделать это.

1 Ответ

2 голосов
/ 02 ноября 2011

Существует больше инструментов Java, кроме ANTLR , которые могут это сделать ( JavaCC - это популярная альтернатива, если назвать только один).

Использование генератора парсера дляЧтобы решить эту проблему, вам нужно сделать следующее:

  1. определить грамматику, которую анализатор может интерпретировать и сгенерировать лексер и анализатор (в вашем случае вам нужно 3 грамматики для ваших 3 языков);
  2. итерация по AST, созданному вашим анализатором, и вывод простого текста (XML, в вашем случае);

Грамматики для Java, C # и C доступны в ANTLRWiki , я уверен, что для JavaCC существуют легкодоступные грамматики (и другие инструменты генератора синтаксических анализаторов: Google здесь ваш друг).Но имейте в виду, что это Вики, и многие грамматики находятся в экспериментальном состоянии или содержат ошибки.

Вы можете просто пропустить шаг # 1 и найти существующий синтаксический анализатор, который создает для вас AST.Вам нужно только пройти AST самостоятельно и создать из него XML. Здесь , например, парсер Java 5 (для остальных, опять же, Google - ваш друг).

Удачи.

...