//===-- StmtNodes.def - Metadata about Stmt AST nodes -----------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file defines the AST Node info database. // //===---------------------------------------------------------------------===// #ifndef FIRST_STMT #define FIRST_STMT(CLASS) #define LAST_STMT(CLASS) #endif #ifndef FIRST_EXPR #define FIRST_EXPR(CLASS) #define LAST_EXPR(CLASS) #endif #ifndef EXPR # define EXPR(Type, Base) STMT(Type, Base) #endif #ifndef ABSTRACT_EXPR # define ABSTRACT_EXPR(Type, Base) EXPR(Type, Base) #endif // Normal Statements. STMT(NullStmt , Stmt) FIRST_STMT(NullStmt) STMT(CompoundStmt , Stmt) STMT(CaseStmt , SwitchCase) STMT(DefaultStmt , SwitchCase) STMT(LabelStmt , Stmt) STMT(IfStmt , Stmt) STMT(SwitchStmt , Stmt) STMT(WhileStmt , Stmt) STMT(DoStmt , Stmt) STMT(ForStmt , Stmt) STMT(GotoStmt , Stmt) STMT(IndirectGotoStmt, Stmt) STMT(ContinueStmt , Stmt) STMT(BreakStmt , Stmt) STMT(ReturnStmt , Stmt) STMT(DeclStmt , Stmt) STMT(SwitchCase , Stmt) // GNU Stmt Extensions STMT(AsmStmt , Stmt) // Obj-C statements STMT(ObjCAtTryStmt , Stmt) STMT(ObjCAtCatchStmt , Stmt) STMT(ObjCAtFinallyStmt , Stmt) STMT(ObjCAtThrowStmt , Stmt) STMT(ObjCAtSynchronizedStmt , Stmt) // Obj-C2 statements STMT(ObjCForCollectionStmt, Stmt) // C++ statements STMT(CXXCatchStmt, Stmt) STMT(CXXTryStmt , Stmt) LAST_STMT(CXXTryStmt) // Expressions. ABSTRACT_EXPR(Expr , Stmt) EXPR(PredefinedExpr , Expr) EXPR(DeclRefExpr , Expr) EXPR(IntegerLiteral , Expr) EXPR(FloatingLiteral , Expr) EXPR(ImaginaryLiteral , Expr) EXPR(StringLiteral , Expr) EXPR(CharacterLiteral , Expr) EXPR(ParenExpr , Expr) EXPR(UnaryOperator , Expr) EXPR(SizeOfAlignOfExpr , Expr) EXPR(ArraySubscriptExpr , Expr) EXPR(CallExpr , Expr) EXPR(MemberExpr , Expr) ABSTRACT_EXPR(CastExpr , Expr) EXPR(BinaryOperator , Expr) EXPR(CompoundAssignOperator, BinaryOperator) EXPR(ConditionalOperator , Expr) EXPR(ImplicitCastExpr , CastExpr) ABSTRACT_EXPR(ExplicitCastExpr, CastExpr) EXPR(CStyleCastExpr , ExplicitCastExpr) EXPR(CompoundLiteralExpr , Expr) EXPR(ExtVectorElementExpr , Expr) EXPR(InitListExpr , Expr) EXPR(DesignatedInitExpr , Expr) EXPR(ImplicitValueInitExpr , Expr) EXPR(ParenListExpr , Expr) EXPR(VAArgExpr , Expr) // GNU Extensions. EXPR(AddrLabelExpr , Expr) EXPR(StmtExpr , Expr) EXPR(TypesCompatibleExpr , Expr) EXPR(ChooseExpr , Expr) EXPR(GNUNullExpr , Expr) // C++ Expressions. EXPR(CXXOperatorCallExpr , CallExpr) EXPR(CXXMemberCallExpr , CallExpr) EXPR(CXXNamedCastExpr , ExplicitCastExpr) EXPR(CXXStaticCastExpr , CXXNamedCastExpr) EXPR(CXXDynamicCastExpr , CXXNamedCastExpr) EXPR(CXXReinterpretCastExpr , CXXNamedCastExpr) EXPR(CXXConstCastExpr , CXXNamedCastExpr) EXPR(CXXFunctionalCastExpr , ExplicitCastExpr) EXPR(CXXTypeidExpr , Expr) EXPR(CXXBoolLiteralExpr , Expr) EXPR(CXXNullPtrLiteralExpr , Expr) EXPR(CXXThisExpr , Expr) EXPR(CXXThrowExpr , Expr) EXPR(CXXDefaultArgExpr , Expr) EXPR(CXXZeroInitValueExpr , Expr) EXPR(CXXNewExpr , Expr) EXPR(CXXDeleteExpr , Expr) EXPR(CXXPseudoDestructorExpr, Expr) EXPR(UnresolvedLookupExpr , Expr) EXPR(UnaryTypeTraitExpr , Expr) EXPR(DependentScopeDeclRefExpr , Expr) EXPR(CXXConstructExpr , Expr) EXPR(CXXBindTemporaryExpr , Expr) EXPR(CXXBindReferenceExpr , Expr) EXPR(CXXExprWithTemporaries , Expr) EXPR(CXXTemporaryObjectExpr , CXXConstructExpr) EXPR(CXXUnresolvedConstructExpr, Expr) EXPR(CXXDependentScopeMemberExpr, Expr) EXPR(UnresolvedMemberExpr , Expr) // Obj-C Expressions. EXPR(ObjCStringLiteral , Expr) EXPR(ObjCEncodeExpr , Expr) EXPR(ObjCMessageExpr , Expr) EXPR(ObjCSelectorExpr , Expr) EXPR(ObjCProtocolExpr , Expr) EXPR(ObjCIvarRefExpr , Expr) EXPR(ObjCPropertyRefExpr , Expr) EXPR(ObjCImplicitSetterGetterRefExpr , Expr) EXPR(ObjCSuperExpr , Expr) EXPR(ObjCIsaExpr , Expr) // Clang Extensions. EXPR(ShuffleVectorExpr , Expr) EXPR(BlockExpr , Expr) EXPR(BlockDeclRefExpr , Expr) FIRST_EXPR(PredefinedExpr) LAST_EXPR(BlockDeclRefExpr) #undef ABSTRACT_EXPR #undef EXPR #undef STMT #undef FIRST_STMT #undef LAST_STMT #undef FIRST_EXPR #undef LAST_EXPR