Я реализовал именно то, что вы просите (AST-разбор кода C #) в OWASP O2 Platform , используя API-интерфейсы SharpDevelop AST.
Чтобы упростить использование, я написал быстрый 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, который был написан (обратите внимание, что это мой первый опыт использования синтаксического анализатора C # AST от SharpDevelop, и я до сих пор разбираюсь, как он работает):