【问题标题】:C Parser in C# or generally .Net [closed]C#或一般.Net中的C解析器[关闭]
【发布时间】:2011-08-24 22:12:35
【问题描述】:

对于我的毕业论文,我需要实现某些静态 C 代码分析,我正在拼命寻找一个框架/库,它可以让我解析 C 源代码,将其拆分为单个函数,为每个函数确定哪些变量是在函数体中更改并自动为代码派生某些注释。 为此目的,是否有任何用 C# 或一般作为 .Net 类编写的好的框架?

【问题讨论】:

  • 你考虑过使用正则表达式吗?
  • @WhoCares:那是傻瓜的选择……
  • 您的要求很多,虽然 .NET 中有很好的解析工具,但很多都存在 C 语法问题。
  • C Code Parser for .NET 的可能重复项
  • 我在发布我的问题之前阅读了答案,我不需要通用的解析器/词法分析器,而是一些轻量级的东西,这就是我在问题中提供更多信息的原因。

标签: c# c parsing


【解决方案1】:

用谷歌搜索“用 C# 编写的 C Parser”怎么样?

我得到了第一个链接:http://code.google.com/p/cpp-ripper/

另外,我认为 C 语法可以在很多地方找到,所以您可能只想打开您的 .NET variant of lex/yacc 并从那里开始?

【讨论】:

  • 非常感谢,我尝试 google 了几个条目,我什至去 code.google.com 搜索“C parser”,但不知何故我忽略了这个项目。这似乎正是我所需要的。
  • 是的,您建议的解析器是一个非常好的、直接的 C# 实现,易于调整和适应任何任务。我用它来解析 C 代码并推断我的实现所需的一些信息。唯一的问题是解析是不可逆的,因为我必须修改原始代码,所以我不得不使用组合的解析器/正则表达式方法,我使用解析器来推断要更改的内容和正则表达式来找到要更改的地方。
  • 两个链接都是 404,丢失。
【解决方案2】:

您可能想检查一下 ANTLR。它带有多个版本的版本,包括 C 和 C#。 ANTLR web site上有一些免费的语法,包括C。

【讨论】:

  • 是的,我知道 ANTLR 并且我之前访问过该站点,但对我来说这似乎是一个过于笼统和复杂的解决方案:我的论文主题是静态软件验证,而不是解析器/词法分析器。我只需要实现我在论文中建议的方法,并且需要一些轻量级的东西,就像 Daren Themas 的回答中提到的那样。
  • 链接丢失,404。
【解决方案3】:

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

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

黄金项目http://www.devincook.com/goldparser/

语义引擎库http://code.google.com/p/bsn-goldparser

【讨论】:

    【解决方案4】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多