2016-12-15 7 views
0

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 @ 라인 # 3

funcB의 @ 라인 # 4

을 찾을 수 있습니다

ctags에 'if'루프가 줄 번호 9, 'else'@ line # 13에서 호출되도록하는 옵션이 있습니까? 마찬가지로 'while'@ line # 18?

ctags가 아닌 경우 코드를 통해 구문 분석하여 다른 조건부 루프를 찾는 다른 도구는 없습니까? 독자적인 파서를 작성하는 것도 또 다른 대안이지만 의견에 도전할만한 키워드가 있는지 파악합니다.

답변

0

자신 만의 정규식을 작성하려는 경우 Exuberant Ctags를 사용하여이 작업을 수행 할 수 있어야합니다. 설명서의 --regex-<LANG>Options을 참조하십시오.

코드를 abstract syntax tree (AST)으로 구문 분석하고 프로그래밍 방식으로 흥미로운 요소를 찾으려면 libclang을 시도해 볼 수 있습니다.