clang을 사용하여 절차 간 데이터 흐름을 분석하고 있습니다. 현재 libtooling을 사용하여 소스 파일을 구문 분석하고 AST 방문자를 호출합니다. 질문은 여러 .c 파일에 대해 단일 AST를 작성하는 방법입니다.clang이있는 여러 소스 파일에 대한 AST
ASTImport 클래스를 사용하려고했지만 일부 AST 노드 가져 오기를 지원하지 않습니다. 게다가, 나는 컴파일러를 생성하고 조작 할 때 뭔가 잘못된 일을하고 있으며 소멸자에서 충돌을 일으킨다.
매우 비슷한 옵션은 ASTImportAction이지만이 경우 ClangTool에 전달해야하는 명령 줄 매개 변수는 무엇인지 분명하지 않습니다.
세 번째 옵션은 모든 .c 파일에 대해 ASTUnits를 만들고 각 파일에서 정의를 찾는 것이 었습니다. 사용자 정의 유형 간의 일치를 찾는 방법이 명확하지 않습니다. 기록. ASTImport에서는 IsStructurallyEquivalent() 함수를 사용하지만 익명 네임 스페이스에서 선언되므로이 코드를 모두 내 프로그램에만 복사 할 수 있습니다. 그리고 다시 모든 AST 노드를 지원하지 않습니다.
인터넷에서이 링크 http://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-August/023865.html이 가장 적절하지만 솔루션의 기술적 세부 사항이 분명하지 않습니다.
모든 의견을 환영합니다. 많은 감사.
왜 여러 파일에 대해 "하나의"AST를 생성하려고합니까? 왜 각 파일에 대해 하나의 AST 만 처리 할 수 있습니까? –
나는 누군가가 이것에 대한 답을 얻길 바란다. \ 나는 지금 똑같은 일을하려하고있다. –