То, как преобразовать исходный код в xml, основывало представление ast?

я хочу получить xml представление ast кода c и Java. 3 месяца назад я задал этот вопрос все же, но решения не были удобны для меня

  • srcml, кажется, хорошее решение для этой проблемы, но это не поддерживает номера строки и столбцы, но мне нужна та функция.
  • о elsa: процитируйте: "Существует продолжающееся усилие экспортировать AST Elsa как XML-документ; мы ожидаем мочь рекламировать это в следующем общедоступном выпуске".
  • dms... не понял это.
  • специально для Java существует javaml, который поддерживает номера строки. но страница SourceForge не перечисляет файлов.

вопрос: существует программное обеспечение, доступное, который поддерживает преобразование ast в xml, который поддерживает номера строки (и столбцы) [специально для Java и c/c ++]? существует ли альтернатива javaml и srcml?

PS: я не делаю wanne имеют парсеры-генераторы. я надеюсь найти инструмент, который может использоваться на консольном вводе:./my-xml-generator Test.java [или что-то как этот]... или реализация Java было бы большим также.

6
задан Community 23 May 2017 в 10:32
поделиться

2 ответа

GCC-XML находится по адресу http://www.gccxml.org/HTML/Index.html - предостережение; Я сам этим не пользовался.

1
ответ дан 17 December 2019 в 02:25
поделиться

Что вы не поняли о 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.

2
ответ дан 17 December 2019 в 02:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: