C#的最佳解析器?
我需要C#3.0(开源许可证)的解析器或语法。今天最好的选择是什么?查看: Metaspec C#解析器完全可用 符合ECMA-334和ECMA-335 标准。此外,它还支持 特定于Microsoft的扩展。对于 有关C#解析器库的详细信息, 请参阅联机文档(C# 版本或C++版) C#3.0 支持的功能:C#的最佳解析器?,c#,.net,parsing,C#,.net,Parsing,我需要C#3.0(开源许可证)的解析器或语法。今天最好的选择是什么?查看: Metaspec C#解析器完全可用 符合ECMA-334和ECMA-335 标准。此外,它还支持 特定于Microsoft的扩展。对于 有关C#解析器库的详细信息, 请参阅联机文档(C# 版本或C++版) C#3.0 支持的功能: 新的C#3.0类型推理算法 隐式类型局部变量 对象初始值设定项 集合初始值设定项 匿名对象创建表达式 lambda表达式 匿名类型 扩展方法 查询表达式 部分方法 C#2.0支持的功能:
- 新的C#3.0类型推理算法
- 隐式类型局部变量
- 对象初始值设定项
- 集合初始值设定项
- 匿名对象创建表达式
- lambda表达式
- 匿名类型
- 扩展方法
- 查询表达式
- 部分方法
- 仿制药
- 可空类型
- 匿名方法
查看ANTLR项目
您可以从这里获得C#语法:取决于您优化的内容 如果您正在优化转换C#的能力, 有关处理C#1.2、2.0和3.0(包括LINQ语法)的解析器,请参阅。C#前端构建在其之上,提供解析、自动构建AST、支持符号表、使用带模式的源代码级语法进行源代码到源代码的程序转换,以及AST返回到源代码的文本预打印。如果你想转换C代码,这是一个工具。(DMS也用于分析和转换爪哇、C、C++、JavaScript、COBOL和许多其他语言)中的代码。p>
如果你在开源上进行优化,这不是你想要的工具。我建议你至少看看codeproject.com上的LINQOverC项目 网址: 有一些(次要的?)已知问题,自2008年1月以来就没有更新过(这可能是一个相当大的问题),但是(快速的,100%.Net)C#3.0解析器的源代码是值得考虑的 关于这个解析器,我最喜欢的是:
variable = (from v in method.Variables
where string.Compare(v.Name, VariableName, false) == 0
select v as LanguageElement).Union(
from p in method.FormalParameters
where string.Compare(p.Name, VariableName, false) == 0
select p as LanguageElement).FirstOrDefault();
只是好奇。。你为什么想要一个呢?正在试验代码转换。如果你使用Visual Studio SDK,你可以得到C#project的完整文档对象模型来进行这种转换。VS已经将其用于折射和intellisense,许多加载项也使用它。我不确定-您需要联系Metaspec获取他们的许可证副本。