哪些解析器可用于解析C#代码?
我正在寻找一个可以在C#中使用的C#解析器,让我可以访问有关所分析代码的每个人工制品的行和文件信息.
适用于源代码:
CSParser:从C#1.0到2.0,开源
Metaspec C#Parser:从C#1.0到3.0,商业产品(约5000美元)
#认识!:从C#1.0到3.0,商业产品(约900€)(SharpRecognize的回答)
SharpDevelop Parser(Akselsson的回答)
NRefactory:从C#1.0到4.0(+ async),SharpDevelop中使用的开源解析器.包括语义分析.
C#Parser和CodeDOM:一个完整的C#4.0 Parser,已经支持C#5.0异步功能.商业产品(49美元至299美元)(Ken Beckett的回答)
Microsoft Roslyn CTP:编译器即服务.
适用于装配:
的System.Reflection
Microsoft Common Compiler Infrastructure:从C#1.0到3.0,Microsoft Public License.由Fxcop和Spec#使用
Mono.Cecil:从C#1.0到3.0,开源
程序集"解析"的问题是我们关于行和文件的信息较少(信息基于.pdb文件,而Pdb只包含方法的行信息)
我个人推荐Mono.Cecil和NRefactory.
Mono(开源)包括C#编译器(当然还有解析器)
如果要将C#v3.5编译为.net程序集:
var cp = new Microsoft.CSharp.CSharpCodeProvider(new Dictionary() { { "CompilerVersion", "v3.5" } });
http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider.aspx
如果您熟悉ANTLR,则可以使用Antlr C#语法.