Синтаксический анализатор для C#

Какие синтаксические анализаторы доступны для парсинга кода C#?

Я ищу синтаксический анализатор C#, который может использоваться в C# и предоставить мне доступ, чтобы выровнять и зарегистрировать информацию о каждом артефакте проанализированного кода.

99
задан Julien Hoarau 17 September 2008 в 09:18
поделиться

3 ответа

Я реализовал именно то, о чем вы просите (AST парсинг кода на C#) в проекте OWASP O2 Platform с использованием SharpDevelop AST API.

Для облегчения потребления я написал быстрый API, который раскрывает ряд ключевых элементов исходного кода (используя операторы, типы, методы, свойства, поля, комментарии) и способен переписать исходный код C# на C# и на VBNET.

Вы можете увидеть этот API в действии на этом файле сценария O2 XRule: ascx_View_SourceCode_AST.cs.o2 .

Например, так вы обрабатываете текст исходного кода на C# и заполняете ряд TreeViews & TextBoxes:

    public void updateView(string sourceCode)
    {   
        var ast = new Ast_CSharp(sourceCode);
        ast_TreeView.show_Ast(ast);
        types_TreeView.show_List(ast.astDetails.Types, "Text");
        usingDeclarations_TreeView.show_List(ast.astDetails.UsingDeclarations,"Text");
        methods_TreeView.show_List(ast.astDetails.Methods,"Text");
        fields_TreeView.show_List(ast.astDetails.Fields,"Text");
        properties_TreeView.show_List(ast.astDetails.Properties,"Text");
        comments_TreeView.show_List(ast.astDetails.Comments,"Text");

        rewritenCSharpCode_SourceCodeEditor.setDocumentContents(ast.astDetails.CSharpCode, ".cs");
        rewritenVBNet_SourceCodeEditor.setDocumentContents(ast.astDetails.VBNetCode, ".vb");                                
    }

Пример на ascx_View_SourceCode_AST.cs.o2 также показывает, как вы можете затем использовать информацию, полученную от AST, для выбора типа, метода, комментария и т.д. в исходном коде.

Для справки, вот API код, который написал (обратите внимание, что это мой первый проход по использованию парсера SharpDevelop C# AST, и я все еще думаю о том, как он работает):

4
ответ дан 24 November 2019 в 05:05
поделиться

Если вы собираюсь скомпилировать сборки C # v3.5 в .net:

var cp = new Microsoft.CSharp.CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });

http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider.aspx

6
ответ дан 24 November 2019 в 05:05
поделиться

Не в C #, но полный синтаксический анализатор C # 2/3/4, который строит полные AST, доступен с нашим DMS Software Reengineering Toolkit .

DMS предоставляет обширную инфраструктуру для синтаксического анализа, построения дерева, построения таблиц символов и анализа потоков, преобразования источника в источник и регенерации исходного кода из (модифицированных) AST. (Он также поддерживает многие другие языки, помимо C #.)

РЕДАКТИРОВАТЬ (сентябрь) 2013 г .: Этот ответ в последнее время не обновлялся. DMS давно работает с C # 5.0

1
ответ дан 24 November 2019 в 05:05
поделиться
Другие вопросы по тегам:

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