【问题标题】:Parsing a c/c++/c# file in c#在 c# 中解析 c/c++/c# 文件
【发布时间】:2016-03-30 00:10:06
【问题描述】:

我有一个c文件,里面有很多函数。

我想分离出每个函数并将它们全部放在一个列表中(比如说,list_code),并在不同的列表中获取每个函数的名称(比如说,fun_code)。例如

比方说,一个 c 文件有以下代码:

void main()
{
//some code here
}

int count (int abc)
{
///some code here
}

int adder(int def)
{
///some code here
}

我想要以下两个列表 list_codefun_code !! list_code 的元素将是一个包含三个元素的列表,包含,

  1. 无效的主要() { //这里有一些代码 }
  2. int 计数 (int abc) { ///这里有一些代码 }
  3. int 加法器(int def) { ///这里有一些代码 }

fun_code 的元素将是一个包含三个元素的列表,包含,

  1. void main()
  2. int 计数 (int abc)
  3. int adder(int def)

我已经编写了一个代码,它跟踪大括号(“{”和“}”)并分离出完整的函数。但如果 cmets 包含大括号,它将失败。 此外,我无法以这种方式获取函数名称。

请让我知道如何实现这一目标。任何库或内置函数都会有很大帮助,因为它会处理所有次要细节,如 cmets、新行和类似场景。

【问题讨论】:

  • 这不是 C#,但 Clang 可能会对此有所帮助。

标签: c# c++ c


【解决方案1】:

libclang 可能是解析 C++ 时最容易使用和最成熟的选项。

有几个可用的 C# 包装器 - 以下是快速 Google 搜索的一些结果:

【讨论】:

  • 这看起来是完美的解决方案。但我是 C# 的初学者。你能指导我如何在这里使用代码吗? github.com/SimonRichards/clang-sharp
  • 不,您需要先学习该语言,然后才能将其用于您的项目。我建议阅读C# Step By Step,然后了解最新的 C# 标准。
  • @MuhammadNouman:如果您满意,您介意接受这个答案,以便将问题标记为“已解决”吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2011-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多