[완료] C/C++ 파일 파싱을 어떻게 하는게 좋을까요?

crane76의 이미지

.h, .c, .cpp 등 C/C++ 파일을 파싱하여
전역변수, 함수, 구조체, 클레스등 정보를 모아보려 하는데요..
어떻게 파싱을 해야할지 감이 안잡혀서요...
무식한 방법으로 괄호 등을 기준으로 하면 될것 같기도 한데 이는 좀 느릴것 같고...
좋은 방법 없을까요?
아님 이런걸 구현 해 논 오픈소스 라도...

그럼 즐거운 주말 되세요~ ^^

litdream의 이미지

CSCOPE 기반으로 만들어진 KSCOPE 한번 써보세요.

삽질의 대마왕...

삽질의 대마왕...

익명 사용자의 이미지

그런걸 구현해 놓은 오픈소스로 ctags가 유명합니다.

dragonkun의 이미지

주로 컴파일러 제작에서 쓰이는 YACC 과 LEX 를 알아보세요.
간단한 문법으로 Lexical Analyzer 및 Parser 의 코드를 생성해 줍니다.
---------------------
Emerging the World!

Emerging the World!

crane76의 이미지

네 ctags 가 볼만 하더군요...
KSCOPE 의 소스를 열어보니 ctags를 이용하네요..
그래서 ctags 소스를 가지고 열씨미 분석중입니다.

YACC 나 LEX 같은경우 이용하면 편리하다는걸 알고는 있지만..
한번도 써본적도 없고 정규식등에 그리 능숙하지가 않아
찾아보질 않았습니다.

의견주신분들 감사합니다.

이 스레드는 여기서 일단락 짓는것으로 합니다.
^__^;

M.W.Park의 이미지

java에 친숙하시다면 javaCC도 있습니다.
기본적으로 EBNF와 비슷한 표기를 파싱해서 입력파일을 AST(Abstract Syntax Tree)로 만들어 주는 코드를 생성합니다.

웬만한 grammar 들도 있습니다.

-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂