я хочу получить xml представление ast кода c и Java. 3 месяца назад я задал этот вопрос все же, но решения не были удобны для меня
вопрос: существует программное обеспечение, доступное, который поддерживает преобразование ast в xml, который поддерживает номера строки (и столбцы) [специально для Java и c/c ++]? существует ли альтернатива javaml и srcml?
PS: я не делаю wanne имеют парсеры-генераторы. я надеюсь найти инструмент, который может использоваться на консольном вводе:./my-xml-generator Test.java [или что-то как этот]... или реализация Java было бы большим также.
GCC-XML находится по адресу http://www.gccxml.org/HTML/Index.html - предостережение; Я сам этим не пользовался.
Что вы не поняли о DMS ?
Он существует.
Он имеет точные компиляторы парсеры / внешние интерфейсы для C, C ++, Java, C #, COBOL (и многих других языков) .
Он автоматически строит полные абстрактные синтаксические деревья для всего, что он анализирует. Каждый узел AST помечен файлом / строкой / столбцом для токена, который представляет начало этого узла, , а последний столбец может быть вычислен с помощью вызова DMS API.
Он имеет встроенную опцию для генерации XML из AST с указанием типа узла, исходной позиции (как указано выше) и любого связанного буквального значения. Вызов командной строки:
run DMSDomainParser ++XML <path_to_your_file>
Вы можете увидеть, как выглядит такой результат XML для Java .
Вы, вероятно, действительно не хотите того, чего хотите. Программа на 1000 C может иметь 100 тыс. Строк файлового материала #include. Линия производит от 5 до 10 узлов.Выходные данные DMS XML краткие, и каждый узел занимает только строку, поэтому вы видите ~~ 1 миллион строк XML, по 60 символов каждая -> 60 миллионов символов. Это большой файл, и вы, вероятно, не захотите обрабатывать его с помощью инструмента на основе XML.
Сама DMS предоставляет обширную инфраструктуру для управления строимыми AST: поиск, сопоставление шаблонов (с шаблонами, закодированными по существу в исходной форме), преобразования источника в источник, поток управления, поток данных, анализ по точкам, глобальные графики вызовов. Вы обнаружите, что воспроизвести всю эту технику невероятно сложно, и, вероятно, она вам понадобится, чтобы сделать что-нибудь интересное.
Мораль: гораздо лучше использовать что-то вроде DMS для непосредственного управления AST, чем бороться с XML.
Полное раскрытие: я - архитектор DMS.