저는 cmake 및 Visual Studio 10을 사용하여 Windows 용 clang을 성공적으로 컴파일했습니다. XML 파일을 소스 코드의 AST 표현으로 가져오고 싶습니다.컴파일러를 사용하지 않고 clang으로 C/C++ 코드의 XML AST 덤프를 가져올 수 있습니까?
clang -cc1 -ast-print-xml source.c
그러나,이 컴파일 단계 (I 피하고자하는)를 호출한다 : 리눅스에서 GCC (우분투)와 함께 그 소리와 함께 결과를 제공하지만, 윈도우 상자에서 작동하지 않습니다 하나 개의 옵션이 있습니다 . 소스 코드를 파헤 치면 나에게 익숙하지 않은만큼 도움이되지 않습니다. 내가 사용하여 AST의 바이너리 버전을 생성하기 위해 관리 할 수 :
clang -emit-ast source.c
불행하게도,이 형식은 구문 분석에 대한 직접 사용할 수 없습니다. clang에서 바이너리 대신 XML 트리를 직접 생성하는 기존의 메소드가 있습니까?
목표는 .NET 환경의 다른 도구에서 XML 표현을 사용하여 이진 AST에 액세스하기 위해 기본 clang lib를 래핑해야합니다. 누군가가 이미 .NET 용 일부 이진 clang AST 파서를 작성한 경우 세 번째 옵션이있을 수 있습니까?
clang 프런트 엔드에 의해 생성 된 AST가 컴파일 단계에서 생성 된 것과 동일하지 않은 경우가 있습니다.
우리 회사는 C++ 프론트 엔드를 빌드하고 AST의 완전한 XML 덤프를 방출 할 수 있습니다. 사람들이 요청하기 때문에이 확인란을 체크 박스 항목으로 사용합니다. 실제 C++ 프로그램 (모든 헤더 파일 포함)의 출력 양은 간단하고 * 거대한 *이므로 처리 속도가 느리고 서투르게됩니다. 진짜 질문은, 왜 이것을하고 싶습니까?Clang은 이미 C++ AST를 직접 처리 할 수있는 방대한 도구를 제공 할 것입니다 (해당 도구와 동일). 왜 그 모든 작품을 복제하려고 할 것입니까? 왜 당신의 목적을 위해 Clang을 사용하지 않는가? –
... http://stackoverflow.com/a/17393852/120163에서 C++ 트리 덤프를 참조하십시오. XML이 아니지만 동일한 내용의 XML도 생성 할 수 있습니다. –