Представление кода C # 3 в виде абстрактного синтаксического дерева в XML - PullRequest
3 голосов
/ 05 мая 2010

Мне было интересно, есть ли что-то похожее на GCC_XML для C # 3; в основном способ представления всей синтаксической структуры программы в XML.

Как только представление было создано, я надеялся разобрать его в XDocument и интерпретировать или запросить его оттуда.

Есть ли инструменты для этого?

1 Ответ

1 голос
/ 14 мая 2010

Наш инструментарий реинжиниринга программного обеспечения DMS может сделать это с помощью C # 2/3/4 . (РЕДАКТИРОВАТЬ 2014: и теперь C # 5)

DMS имеет синтаксически точные парсеры для C # (а также Java и многих других языков).

Он автоматически создает полные деревья абстрактного синтаксиса для всего, что анализирует. Каждый узел AST помечается файлом / строкой / столбцом для токена, который представляет начало этого узла, и последний столбец может быть вычислен с помощью вызова API DMS. Он прикрепляет комментарии к узлам дерева, чтобы они не терялись. DMS также может восстановить действительный код из AST или из модифицированного AST; это позволяет использовать его для модификации или генерации кода.

Он имеет встроенную опцию для генерации XML из AST с указанием типа узла, исходного положения (как указано выше) и любого связанного литерального значения. Вызов командной строки:

 run DMSDomainParser ++XML  <path_to_your_file>

Сама DMS предоставляет обширную инфраструктуру для управления создаваемыми AST: обход, сопоставление с образцом (с образцами, закодированными по существу в исходной форме), преобразования от источника к источнику.

Имеет поток управления, поток данных, анализ точек, глобальные графы вызовов для C, COBOL и Java; это все для C #.

DMS был разработан, чтобы быть намного лучшим решением для манипулирования таким кодом, чем XML.

...