使解析器提取函数名称,参数,返回类型

时间:2012-08-17 10:40:25

标签: c++ parsing

我需要解析一个C ++类文件(.h)并提取以下信息:

  1. 功能名称
  2. 返回类型
  3. 每个功能的参数类型列表
  4. 假设有一个特殊的标签,我可以识别是否需要解析一个函数。

    例如。

    #include <someHeader>  
    
    class Test
    {
        public:
        Test();
    
        void fun1();
        // *Expose* //
        void fun2();  
    
    };
    

    所以我只需要解析fun2()。

    我阅读了基本语法here,但发现它太复杂而无法理解。

    Q1。我无法弄清楚这项任务有多复杂。有人可以为函数声明提供更简单的语法来执行此解析吗?

    Q2。我的方法是正确的还是我应该考虑使用某些库而不是重新发明?


    编辑:只是为了澄清,我没有解析问题,问题更多的是理解我需要解析的语法。

2 个答案:

答案 0 :(得分:1)

C ++标头可能包含任意C ++代码。因此,解析头文件可能与解析各种C ++代码一样困难。

如果您可以对头文件做出某些假设,那么您的任务会变得更容易。例如,如果您的函数前面总是有一个EXPOSE标记,并且函数总是在一行上,那么您可以首先grep这些行:

grep -A1 EXPOSE <files>

然后您可以应用正则表达式来过滤掉您需要的信息。

尽管如此,我建议使用现有工具。 This seems to be a tutorial关于如何用clang和Python做到这一点。

答案 1 :(得分:0)

如果您这样做只是为了提供文档doxygen可能是一个不错的选择。

无论哪种方式,它都可以为您提供有关如何执行此操作的一些指示。