C ++ 소스 코드의 정보를 추출하려고합니다. 하나는 필드의 유형입니다.
아래와 같은 소스 코드에서 info.call ()이 호출 될 때 정보의 유형을 추출하고 싶습니다.
Info info;
//skip
info.call(); //<- from here
IASTName 노드를 방문하는 방문자 만들기를 통해 아래와 같은 유형 정보를 추출해 보았습니다.
public class CDTVisitor extends ASTVisitor {
public CDTVisitor(boolean visitNodes) {
super(true);
}
public int visit(IASTName node){
if(node.resolveBinding().getName().toString().equals("info"))
System.out.println(((IField)node.getBinding()).getType());
// this not work properly.
//result is "org.eclipse.cdt.internal.core.dom.parser.ProblemType@86be70a"
return 3;
}
}
자기 반응. 바인딩 개체를 얻을 수없는 이유는 AST 유형이었습니다.
C ++ 소스 코드를 구문 분석 할 때 ICPPASTTranslationUnit을 사용해야합니다. 이와 관련된 코드는 없으며 IASTTranslationUnit을 AST의 반환 유형으로 사용했습니다.
IASTTranslationUnit 대신 ICPPASTTranslationUnit을 사용한 후이 문제를 해결했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다