我需要解析一个C ++类文件(.h)并提取以下信息:
假设有一个特殊的标签,我可以识别是否需要解析一个函数。
例如。
#include <someHeader>
class Test
{
public:
Test();
void fun1();
// *Expose* //
void fun2();
};
所以我只需要解析fun2()。
我阅读了基本语法here,但发现它太复杂而无法理解。
Q1。我无法弄清楚这项任务有多复杂。有人可以为函数声明提供更简单的语法来执行此解析吗?
Q2。我的方法是正确的还是我应该考虑使用某些库而不是重新发明?
编辑:只是为了澄清,我没有解析问题,问题更多的是理解我需要解析的语法。
答案 0 :(得分:1)
C ++标头可能包含任意C ++代码。因此,解析头文件可能与解析各种C ++代码一样困难。
如果您可以对头文件做出某些假设,那么您的任务会变得更容易。例如,如果您的函数前面总是有一个EXPOSE标记,并且函数总是在一行上,那么您可以首先grep这些行:
grep -A1 EXPOSE <files>
然后您可以应用正则表达式来过滤掉您需要的信息。
尽管如此,我建议使用现有工具。 This seems to be a tutorial关于如何用clang和Python做到这一点。
答案 1 :(得分:0)
如果您这样做只是为了提供文档doxygen可能是一个不错的选择。
无论哪种方式,它都可以为您提供有关如何执行此操作的一些指示。