Наш инструментарий реинжиниринга программного обеспечения 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.