2013-10-02 3 views
2

샘플 코드에서 Clang의 ASTVisitor를 구문 분석하는 동안 구문을 검증하는 구문이 있음을 알 수 있습니다.clang AST 파서의 구문 비교

isa<IfStmt>(statement) 
isa<UnaryOperator>(Expression) 

현재 표현식/문을 평가하는 데 사용되는 구문의 포괄적 인 목록이 있습니까?

감사

모든

답변

2

첫째, 마법의 아무것도에 대한 isa 그 객체가 어떤 클래스의 하위 유형인지 여부를 확인하는 단지 LLVM의 방법, 없다; 표현 isa<IfStmt>(statement)이 RTTI 지원 발현 기본적으로 동일합니다 :

dynamic_cast<IfStmt*>(statement) != NULL 

그래서 귀하의 질문에 정말 AST 계층 구조가 무엇인지에 귀결; 그리고, 그것은 완전한 계층 구조 차트로,이 네 페이지를 확인하는 것이 좋습니다 : Type's hierarchy

  • Decl's hierarchy
  • DeclContext's hierarchy
  • Stmt's hierarchy

    (이 Expr와 아이를 포함)