关于解析:C#解析器

关于解析:C#解析器

Parser for C#

哪些解析器可用于解析C#代码?

我正在寻找一个可在C#中使用的C#解析器,并使我能够访问有关所分析代码的每个伪像的行和文件信息。


在源代码上工作:

  • CSParser:
    从C#1.0到2.0,开源
  • Metaspec C#解析器:
    从C#1.0到3.0,商业产品(约5000美元)
  • #认出!:
    从C#1.0到3.0,商业产品(约900欧元)(SharpRecognize的回答)
  • SharpDevelop Parser(由Akselsson回答)
  • NRefactory:
    从C#1.0到4.0(异步),SharpDevelop中使用的开源解析器。包括语义分析。
  • C#解析器和CodeDOM:
    完整的C#4.0解析器已经支持C#5.0异步功能。商业产品(49美元至299美元)(肯贝克特的回答)
  • Microsoft Roslyn CTP:
    编译器即服务。

在装配上工作:

  • 系统反射
  • Microsoft通用编译器基础结构:
    从C#1.0到3.0,Microsoft公共许可证。由Fxcop和Spec#使用
  • Mono.Cecil:
    从C#1.0到3.0,开源

程序集"解析"的问题在于,有关行和文件的信息较少(该信息基于.pdb文件,而Pdb仅包含方法的行信息)

我个人推荐Mono.Cecil和NRefactory。


Mono(开源)包括C#编译器(当然还有解析器)


n


n


我已经使用SharpDevelop AST API实现了您在OWASP O2 Platform项目中提出的要求(C#代码的AST解析)。

为了更易于使用,我编写了一个快速API,该API公开了许多关键源代码元素(使用语句,类型,方法,属性,字段,注释),并且能够将原始C#代码重写为C#并进入VBNET。

您可以在此O2 XRule脚本文件ascx_View_SourceCode_AST.cs.o2上看到此API的运行情况。

例如,这是您处理C#源代码文本并填充许多TreeViews的方式


n


n


n


看看Gold Parser。它具有非常直观的IU,可让您交互式地测试语法并生成C#代码。有很多可用的示例,它是完全免费的。


考虑在构建的二进制文件上使用反射,而不是直接解析C#代码。反射API真的很容易使用,也许您可??以获得所需的所有信息?


SharpDevelop,一个开放源代码的IDE,带有一个基于访问者的代码解析器,该解析器运行得很好。可以独立于IDE使用。


http://www.codeplex.com/csparser


n


n


如果您愿意编写自己的解析器(很有趣),可以使用

GPPG。


推荐阅读

    更新文件命令linux?

    更新文件命令linux?,工作,系统,地址,信息,时间,命令,目录,基础,标准,网络,lin

    linux下读取文件命令?

    linux下读取文件命令?,系统,工作,地址,数字,图片,信息,网络,命令,文件,一致,l

    linux改文件夹名命令?

    linux改文件夹名命令?,名字,软件,命令,文件,系统,目录,目标,文件名,源文件,

    linux建文件命令格式?

    linux建文件命令格式?,系统,名字,名称,时间,密码,命令,文件,文件夹,不了,数

    下载文件的命令linux?

    下载文件的命令linux?,平台,工具,服务,密码,软件,网络,位置,代理,手机,工作,

    linux命令文件传输?

    linux命令文件传输?,系统,数据,命令,文件,基本知识,源文件,目录,目标,功能,

    linux文件全选命令?

    linux文件全选命令?,电脑,系统,环境,代码,平台,服务,快捷键,文件,命令,权限,l

    linux浏览文件类命令?

    linux浏览文件类命令?,系统,信息,数据,情况,命令,标准,时间,文件,概念,管理,

    linux打包文件夹命令?

    linux打包文件夹命令?,系统,工具,管理,图片,文件,命令,位置,软件,目录,格式,l

    linux中统计文件命令?

    linux中统计文件命令?,系统,信息,数据,情况,工作,文件,时间,档案,标准,名称,L

    linux重名名文件命令?

    linux重名名文件命令?,图片,名称,名字,文件,命令,位置,代码,软件,系统,文件

    linux的建立文件命令?

    linux的建立文件命令?,名称,系统,时间,名字,命令,文件夹,位置,密码,不了,文

    linux06文件命令?

    linux06文件命令?,数字,系统,工作,第一,名字,信息,管理,文件,目录,命令,linux

    linux将文件备份命令?

    linux将文件备份命令?,系统,密码,设备,软件,通讯,较大,认证,服务,数据,文件,L

    linux扩展文件命令?

    linux扩展文件命令?,工作,地址,系统,信息,命令,目录,管理,情况,文件,标准,Lin

    linux命令新增文件夹?

    linux命令新增文件夹?,系统,名字,首次,名称,新增,文件,命令,文件夹,地址,密

    linux推送文件命令?

    linux推送文件命令?,地址,系统,情况,工作,命令,文件,电脑,密码,信息,目录,Lin

    linux文件替换命令行?

    linux文件替换命令行?,资料,命令,文件,数据,名称,系统,实时,工作,字符串,批

    linux可生成文件命令?

    linux可生成文件命令?,名字,命令,名称,文件,文件夹,位置,数据,密码,时间,电