2009-06-15 5 views
4

Кто-нибудь знает хорошую библиотеку .NET, которая позволяет мне анализировать файлы исходного кода, но не только файлы исходного кода .NET (например, java, perl, ruby ​​и т. Д.)?.Net Библиотека для анализа файлов исходного кода?

Мне нужен программный доступ к содержимому различных файлов исходного кода (например, имена классов/методов/параметров, типы и т. Д.).

Кто-нибудь сталкивался с чем-то подобным? Я знаю, что в .NET это разумно возможно, и есть некоторые библиотеки, но мне нужно, чтобы их абстрагировали до большего количества типов языков программирования.

ответ

3

Несколько вариантов:

  1. Вы могли выбрать основу синтаксического анализа, который имеет много существующих грамматик (как Antlr или Поздние как Irony) и использовать. Это обеспечит максимальную точность.
  2. Если вы можете придерживаться только языков .NET, вы можете использовать Common Compiler Infrastructure tools для чтения данных из скомпилированного файла.
  3. Вы можете использовать эвристический подход, например, использовать компонент SyntaxHighlighter.
  4. Вы можете копировать существующие инструменты, которые предлагают подключаемые файлы подсветки синтаксиса, такие как VIM. Вы должны были бы создать или найти парсер, который бы понимал эти файлы.
+0

Ирония выглядит более удобной для меня. собираюсь пойти с этим для более глубокой оценки .. спасибо Джефф! –

0

Antlr удовлетворяла ваши потребности?

+0

Хорошо, что Antlr выглядит хорошо, но, как целый новый мир, чтобы исследовать/учиться и привыкать. Я более или менее ищут «готовый» продукт, специально предназначенный для определенных языков (например, что-то вроде http://www.metaspec.net для C#, но также и для других языков) ... –

0

Инструмент, предназначенный для анализа исходного кода, создавать соответствующие структуры данных компилятора (деревья и т.д.), позволяют перемещаться/манипулировать этими структурами, и восстановить действительный исходный код (включая комментарии!) Является DMS Software Reengineering Toolkit.

У этого есть полный C# 4.0 переднего конца.

Он не обеспечивает доступ к этим структурам с C#; скорее, он обеспечивает свою собственную среду для анализа и преобразования программ кодирования с огромной поддержкой для этого относительно легко (и значительно проще, чем в чистом C#).

Смежные вопросы