ctags可以在代码中搜索条件循环

时间:2016-12-15 23:29:32

标签: c parsing ctags exuberant-ctags

使用ctags,可以搜索函数,变量,结构以及代码中的内容for e.g.。我想得到代码中调用所有条件循环的行号。

例如:

1       #include <stdio.h>
2       
3       void funcA() {}
4       void funcB(int a){}
5       
6       int main() {
7           int a = 0;
8           
9           if(a == 1) 
10          {
11              funcA();
12          }
13          else
14          {
15              funcB(a);
16          }
17      
18          while(1);
19          
20          return 0;
21      }
22

在示例代码段中,使用ctags命令选项,可以找到

funcA @ line#3

funcB @ line#4

ctags中是否有任何选项可以在第9行找到'if'循环,'else'@ line#13。同样,'while'@ line#18?

如果不是ctags,任何其他工具来解析代码以找出这样的条件循环?编写自己的解析器是另一种选择,但随后在评论中确定关键字是否具有挑战性。

1 个答案:

答案 0 :(得分:0)

如果您愿意编写自己的正则表达式,那么您应该可以使用Exuberant Ctags执行此操作。请参阅手册中Options下的--regex-<LANG>

作为替代方案,您可以尝试libclang将代码解析为abstract syntax tree (AST),并以编程方式查找有趣的元素。