C#或.Net中的C解析器

C#或.Net中的C解析器,c#,c,parsing,C#,C,Parsing,对于我的毕业论文,我需要实现某些静态C代码分析,我正在拼命寻找一个框架/库,该框架/库允许我解析C源代码,将其拆分为单个函数,因为每个函数确定函数体中更改了哪些变量,并自动导出代码的某些注释。 有没有什么好的框架是用C#编写的,或者通常用.Net类编写的?如果您可以使用GPL代码,您可能需要看看源代码。如果您需要在.Net中执行此操作,您可以始终使用从GCC库调用代码。用谷歌搜索“用C#编写的C解析器”怎么样 我把它作为第一个链接: 此外,我认为C语法在很多地方都可以找到,因此您可能只想打开您的

对于我的毕业论文,我需要实现某些静态C代码分析,我正在拼命寻找一个框架/库,该框架/库允许我解析C源代码,将其拆分为单个函数,因为每个函数确定函数体中更改了哪些变量,并自动导出代码的某些注释。
有没有什么好的框架是用C#编写的,或者通常用.Net类编写的?

如果您可以使用GPL代码,您可能需要看看源代码。如果您需要在.Net中执行此操作,您可以始终使用从GCC库调用代码。

用谷歌搜索“用C#编写的C解析器”怎么样

我把它作为第一个链接:


此外,我认为C语法在很多地方都可以找到,因此您可能只想打开您的文档并从那里开始?

您可能需要检查ANTLR。它有几个版本,包括C和C。上有一些免费的语法,包括C。

我有一个类似的问题,并且对用于C的YACC工具进行了研究。我选择了带有语义引擎的Gold解析系统。我的项目是解析SQL查询并生成逻辑查询计划(从T-SQL语法子集)

我真的推荐它。这两个库使解析变得轻松,并允许将语法映射到代码中的对象模型。它感觉非常直观,使我的项目成功:)然而,它可能缺乏一些先进的ANTLR功能,所以请仔细了解您的需求

黄金项目


语义引擎库

你考虑过使用正则表达式吗?@WhoCares:那是傻瓜的选择…你要求的东西很多,虽然.NET中有很好的解析工具,但很多人在C语法方面都有问题。可能重复我在发布问题之前阅读了答案,我不需要通用的解析器/词法分析器,但这是我在问题中提供更多信息的原因。可能是一个很好的起点。感谢您的建议,我在过去的几个项目中使用GCC作为前端,但我希望我的解决方案尽可能简单和同质,它在不考虑解析器的部分已经足够复杂了。:)非常感谢,我试着用谷歌搜索了几个条目,我甚至去了code.google.com搜索“C解析器”,但不知何故我忽略了这个项目。这似乎正是我所需要的。是的,你所建议的解析器是一个非常好的、简单的C#实现,很容易调整和适应任何任务。我用它来解析C代码并推断实现所需的一些信息。唯一的问题是解析是不可逆的,因为我必须修改原始代码,所以我不得不使用组合解析器/regexp方法,其中我使用解析器推断要更改的内容,并使用regexp找到要更改的位置。两个链接都是404,缺失。是的,我知道ANTLR,我以前访问过该站点,但对我来说,这似乎是一个过于笼统和复杂的解决方案:我论文的主题是静态软件验证,而不是解析器/词法分析器。我只需要实现我在论文中建议的方法,并且需要一些轻量级的东西,就像Daren Themas在回答中提到的那样。