C 소스 코드에 대한 일부 코드 최적화 및 데이터 흐름 분석을 작성하는 데 사용할 수있는 컴파일러 프레임 워크를 찾고 있습니다. LLVM이 있다는 것을 알고 있지만 바이트 코드보다는 소스 코드로 작업하고 싶습니다. 내가 LLVM-dragonegg를 조사하고 있었지만 데이터 흐름을 사용하여 그것을 통과하는 것이 얼마나 쉽 겠는가?C 코드 용 컴파일러 프레임 워크
0
A
답변
1
compiler은 텍스트 소스 코드에서 작동하지 않습니다 (단 parses 소스 코드). AST과 같은 내부 표현에서 작동합니다. 각 컴파일러는 고유 한 내부 표현을 가지고 있으며 대부분 컴파일러의 optimization 작업은 의 내부 표현을으로 변환합니다.
GCC으로 작업하기로 결정한 경우 MELT (또는 더 힘들게 자신의 GCC 플러그인으로)으로 확장 할 수 있습니다. 물론 내부 표현 (Gimple, Generic Trees)과 편집 과정을 자세히 이해해야합니다.
MELT는 GCC 확장을 위해 GCC 플러그인으로 구현되는 눈에 띄는 도메인 특정 언어입니다.
이 질문에 대한 찬성표를 던진 사람들에게 : 나는 이것이 왜 주제 외 질문인지 알고 싶습니다. 나는 단지 권고안이나 승인을 위해서가 아니라 가능한 옵션이 무엇인지를 묻고있다. – JRR
Clang을 사용해보십시오. 좋은 파이썬 래퍼 (cindex)를 사용하더라도 괜찮은 API를 사용할 수 있습니다. –
P. 또 다른 옵션은 수정 된 IR에서 원본 소스 코드로의 매핑을 유지하기 위해 디버깅 메타 데이터를 유지하면서 LLVM IR 수준에서 작업하는 것입니다. 원하는대로 Clang AST를 분석하는 것보다 더 좋은 방법 일 수 있습니다. –