Необходимо создать представление XML для кода C # - PullRequest
3 голосов
/ 05 мая 2009

Мне нужно преобразовать код C # в эквивалентное представление XML.
Я планирую преобразовать код C # (фрагменты кода C # 2.0, без обобщенных или обнуляемых типов) в AST и затем преобразовать AST в XML. Ищем простой лексер / парсер для C #, который выводит AST.
Любые указатели на преобразование кода C # в представление XML (которое может быть преобразовано обратно в C #) также были бы очень полезны.

С уважением,

Ответы [ 3 ]

0 голосов
/ 27 августа 2009

Наш инструментарий реинжиниринга программного обеспечения DMS представляет собой экосистему для построения анализаторов кода и преобразователей. DMS параметризован определением языка и имеет определения языка для C #, Java, C ++, C, PL / SQL, PHP, JavaScript, COBOL и множества других языков. Когда DMS анализирует в соответствии с определением языка, он автоматически создает AST. Библиотека AST, предоставляемая DMS, может печатать дерево в форме скобок в виде Lisp или в формате XML. Вместо того, чтобы конвертировать XML обратно в исходный код, DMS может восстановить исходный код непосредственно из AST. DMS также предоставляет преобразования источник-источник, позволяющие манипулировать AST.

0 голосов
/ 05 мая 2009

Как говорит Митч, Antlr может быть вашим решением. Вы можете преобразовать вывод AST Antlr в зависимости от ваших потребностей, а затем сериализовать его с помощью xstream. Это подход, который я использую в своем проекте bs. Если кто-нибудь знает лучший способ, это будет здорово и для меня.

Вы можете найти образцы грамматики csharp, например, http://www.antlr.org/grammar/1127720913326/tkCSharp.g или http://www.antlr.org/grammar/1151612545460/CSharpParser.g, но вам, возможно, придется адаптировать его к ANTLRV3 или к вашим собственным потребностям.

...