の代替品を探していCSharpCodeProvider.Parse
ます。CompileUnit
このメソッドは、[C#] コード ソースを解析し、オブジェクトを返すことになっていました。ただし、このメソッドはどの .Net フレームワークにも実装されていません。
私の目的は、コンパイルせずに C# CodeDOM をナビゲートできるようにすることです。コード分析を行うアプリケーションを作成していますが、必ずしもすべての外部参照があるとは限りません。つまり、コンパイルできません。
SharpDevelop (Mono で一般的に使用されるオープン ソース IDE) には、C# コードを解析して AST に変換できる NRefactory というライブラリがあります: http://wiki.sharpdevelop.net/NRefactory.ashx (そのリンクからの抜粋は次のとおりです) :
using (IParser parser = ParserFactory.CreateParser(SupportedLanguage.CSharp, new StringReader(sourceCode)))
{
parser.Parse();
// this allows retrieving comments, preprocessor directives, etc. (stuff that isn't part of the syntax)
specials = parser.Lexer.SpecialTracker.RetrieveSpecials();
// this retrieves the root node of the result AST
result = parser.CompilationUnit;
if (parser.Errors.Count > 0) {
MessageBox.Show(parser.Errors.ErrorOutput, "Parse errors");
}
}
多くの無料の C# パーサーがあり、最も人気があるのは明らかに次のとおりです。
当社のDMS Software Reengineering Toolkitは、任意の言語の分析ツールを構築するためのツールです。DMS は、一般化された解析、AST のナビゲーションと変更、変更されたツリーからのソースの再生成、シンボル テーブルのサポート、およびさまざまな種類の分析のサポートを提供するだけでなく、表面に関して AST を直接変更するソースからソースへの変換を作成する機能も提供します。構文。
そのC# フロント エンドは、完全な C# 4.0 パーサー (LINQ を含む) を提供します。このパーサーは、ソース テキストのすべての項目を含む完全な抽象構文ツリーを構築します。これには、コメントが装飾するソース ツリー ノードの注釈としてキャプチャされたコメントも含まれます。