Home | History | Annotate | Download | only in Basic
      1 class AttrSubject;
      2 
      3 class Stmt<bit abstract = 0> : AttrSubject {
      4   bit Abstract = abstract;
      5 }
      6 
      7 class DStmt<Stmt base, bit abstract = 0> : Stmt<abstract> {
      8   Stmt Base = base;
      9 }
     10 
     11 // Statements
     12 def NullStmt : Stmt;
     13 def CompoundStmt : Stmt;
     14 def LabelStmt : Stmt;
     15 def AttributedStmt : Stmt;
     16 def IfStmt : Stmt;
     17 def SwitchStmt : Stmt;
     18 def WhileStmt : Stmt;
     19 def DoStmt : Stmt;
     20 def ForStmt : Stmt;
     21 def GotoStmt : Stmt;
     22 def IndirectGotoStmt : Stmt;
     23 def ContinueStmt : Stmt;
     24 def BreakStmt : Stmt;
     25 def ReturnStmt : Stmt;
     26 def DeclStmt  : Stmt;
     27 def SwitchCase : Stmt<1>;
     28 def CaseStmt : DStmt<SwitchCase>;
     29 def DefaultStmt : DStmt<SwitchCase>;
     30 def CapturedStmt : Stmt;
     31 
     32 // Asm statements
     33 def AsmStmt : Stmt<1>;
     34 def GCCAsmStmt : DStmt<AsmStmt>;
     35 def MSAsmStmt : DStmt<AsmStmt>;
     36 
     37 // Obj-C statements
     38 def ObjCAtTryStmt : Stmt;
     39 def ObjCAtCatchStmt : Stmt;
     40 def ObjCAtFinallyStmt : Stmt;
     41 def ObjCAtThrowStmt : Stmt;
     42 def ObjCAtSynchronizedStmt : Stmt;
     43 def ObjCForCollectionStmt : Stmt;
     44 def ObjCAutoreleasePoolStmt : Stmt;
     45 
     46 // C++ statments
     47 def CXXCatchStmt : Stmt;
     48 def CXXTryStmt : Stmt;
     49 def CXXForRangeStmt : Stmt;
     50 
     51 // C++ Coroutines TS statements
     52 def CoroutineBodyStmt : Stmt;
     53 def CoreturnStmt : Stmt;
     54 
     55 // Expressions
     56 def Expr : Stmt<1>;
     57 def PredefinedExpr : DStmt<Expr>;
     58 def DeclRefExpr : DStmt<Expr>;
     59 def IntegerLiteral : DStmt<Expr>;
     60 def FloatingLiteral : DStmt<Expr>;
     61 def ImaginaryLiteral : DStmt<Expr>;
     62 def StringLiteral : DStmt<Expr>;
     63 def CharacterLiteral : DStmt<Expr>;
     64 def ParenExpr : DStmt<Expr>;
     65 def UnaryOperator : DStmt<Expr>;
     66 def OffsetOfExpr : DStmt<Expr>;
     67 def UnaryExprOrTypeTraitExpr : DStmt<Expr>;
     68 def ArraySubscriptExpr : DStmt<Expr>;
     69 def OMPArraySectionExpr : DStmt<Expr>;
     70 def CallExpr : DStmt<Expr>;
     71 def MemberExpr : DStmt<Expr>;
     72 def CastExpr : DStmt<Expr, 1>;
     73 def BinaryOperator : DStmt<Expr>;
     74 def CompoundAssignOperator : DStmt<BinaryOperator>;
     75 def AbstractConditionalOperator : DStmt<Expr, 1>;
     76 def ConditionalOperator : DStmt<AbstractConditionalOperator>;
     77 def BinaryConditionalOperator : DStmt<AbstractConditionalOperator>;
     78 def ImplicitCastExpr : DStmt<CastExpr>;
     79 def ExplicitCastExpr : DStmt<CastExpr, 1>;
     80 def CStyleCastExpr : DStmt<ExplicitCastExpr>;
     81 def CompoundLiteralExpr : DStmt<Expr>;
     82 def ExtVectorElementExpr : DStmt<Expr>;
     83 def InitListExpr : DStmt<Expr>;
     84 def DesignatedInitExpr : DStmt<Expr>;
     85 def DesignatedInitUpdateExpr : DStmt<Expr>;
     86 def ImplicitValueInitExpr : DStmt<Expr>;
     87 def NoInitExpr : DStmt<Expr>;
     88 def ParenListExpr : DStmt<Expr>;
     89 def VAArgExpr : DStmt<Expr>;
     90 def GenericSelectionExpr : DStmt<Expr>;
     91 def PseudoObjectExpr : DStmt<Expr>;
     92 
     93 // Atomic expressions
     94 def AtomicExpr : DStmt<Expr>;
     95 
     96 // GNU Extensions.
     97 def AddrLabelExpr : DStmt<Expr>;
     98 def StmtExpr : DStmt<Expr>;
     99 def ChooseExpr : DStmt<Expr>;
    100 def GNUNullExpr : DStmt<Expr>;
    101 
    102 // C++ Expressions.
    103 def CXXOperatorCallExpr : DStmt<CallExpr>;
    104 def CXXMemberCallExpr : DStmt<CallExpr>;
    105 def CXXNamedCastExpr : DStmt<ExplicitCastExpr, 1>;
    106 def CXXStaticCastExpr : DStmt<CXXNamedCastExpr>;
    107 def CXXDynamicCastExpr : DStmt<CXXNamedCastExpr>;
    108 def CXXReinterpretCastExpr : DStmt<CXXNamedCastExpr>;
    109 def CXXConstCastExpr : DStmt<CXXNamedCastExpr>;
    110 def CXXFunctionalCastExpr : DStmt<ExplicitCastExpr>;
    111 def CXXTypeidExpr : DStmt<Expr>;
    112 def UserDefinedLiteral : DStmt<CallExpr>;
    113 def CXXBoolLiteralExpr : DStmt<Expr>;
    114 def CXXNullPtrLiteralExpr : DStmt<Expr>;
    115 def CXXThisExpr : DStmt<Expr>;
    116 def CXXThrowExpr : DStmt<Expr>;
    117 def CXXDefaultArgExpr : DStmt<Expr>;
    118 def CXXDefaultInitExpr : DStmt<Expr>;
    119 def CXXScalarValueInitExpr : DStmt<Expr>;
    120 def CXXStdInitializerListExpr : DStmt<Expr>;
    121 def CXXNewExpr : DStmt<Expr>;
    122 def CXXDeleteExpr : DStmt<Expr>;
    123 def CXXPseudoDestructorExpr : DStmt<Expr>;
    124 def TypeTraitExpr : DStmt<Expr>;
    125 def ArrayTypeTraitExpr : DStmt<Expr>;
    126 def ExpressionTraitExpr : DStmt<Expr>;
    127 def DependentScopeDeclRefExpr : DStmt<Expr>;
    128 def CXXConstructExpr : DStmt<Expr>;
    129 def CXXInheritedCtorInitExpr : DStmt<Expr>;
    130 def CXXBindTemporaryExpr : DStmt<Expr>;
    131 def ExprWithCleanups : DStmt<Expr>;
    132 def CXXTemporaryObjectExpr : DStmt<CXXConstructExpr>;
    133 def CXXUnresolvedConstructExpr : DStmt<Expr>;
    134 def CXXDependentScopeMemberExpr : DStmt<Expr>;
    135 def OverloadExpr : DStmt<Expr, 1>;
    136 def UnresolvedLookupExpr : DStmt<OverloadExpr>;
    137 def UnresolvedMemberExpr : DStmt<OverloadExpr>;
    138 def CXXNoexceptExpr : DStmt<Expr>;
    139 def PackExpansionExpr : DStmt<Expr>;
    140 def SizeOfPackExpr : DStmt<Expr>;
    141 def SubstNonTypeTemplateParmExpr : DStmt<Expr>;
    142 def SubstNonTypeTemplateParmPackExpr : DStmt<Expr>;
    143 def FunctionParmPackExpr : DStmt<Expr>;
    144 def MaterializeTemporaryExpr : DStmt<Expr>;
    145 def LambdaExpr : DStmt<Expr>;
    146 def CXXFoldExpr : DStmt<Expr>;
    147 
    148 // C++ Coroutines TS expressions
    149 def CoroutineSuspendExpr : DStmt<Expr, 1>;
    150 def CoawaitExpr : DStmt<CoroutineSuspendExpr>;
    151 def CoyieldExpr : DStmt<CoroutineSuspendExpr>;
    152 
    153 // Obj-C Expressions.
    154 def ObjCStringLiteral : DStmt<Expr>;
    155 def ObjCBoxedExpr : DStmt<Expr>;
    156 def ObjCArrayLiteral : DStmt<Expr>;
    157 def ObjCDictionaryLiteral : DStmt<Expr>;
    158 def ObjCEncodeExpr : DStmt<Expr>;
    159 def ObjCMessageExpr : DStmt<Expr>;
    160 def ObjCSelectorExpr : DStmt<Expr>;
    161 def ObjCProtocolExpr : DStmt<Expr>;
    162 def ObjCIvarRefExpr : DStmt<Expr>;
    163 def ObjCPropertyRefExpr : DStmt<Expr>;
    164 def ObjCIsaExpr : DStmt<Expr>;
    165 def ObjCIndirectCopyRestoreExpr : DStmt<Expr>;
    166 def ObjCBoolLiteralExpr : DStmt<Expr>;
    167 def ObjCSubscriptRefExpr : DStmt<Expr>;
    168 
    169 // Obj-C ARC Expressions.
    170 def ObjCBridgedCastExpr : DStmt<ExplicitCastExpr>;
    171 
    172 // CUDA Expressions.
    173 def CUDAKernelCallExpr : DStmt<CallExpr>;
    174 
    175 // Clang Extensions.
    176 def ShuffleVectorExpr : DStmt<Expr>;
    177 def ConvertVectorExpr : DStmt<Expr>;
    178 def BlockExpr : DStmt<Expr>;
    179 def OpaqueValueExpr : DStmt<Expr>;
    180 def TypoExpr : DStmt<Expr>;
    181 
    182 // Microsoft Extensions.
    183 def MSPropertyRefExpr : DStmt<Expr>;
    184 def MSPropertySubscriptExpr : DStmt<Expr>;
    185 def CXXUuidofExpr : DStmt<Expr>; 
    186 def SEHTryStmt : Stmt;
    187 def SEHExceptStmt : Stmt;
    188 def SEHFinallyStmt : Stmt;
    189 def SEHLeaveStmt : Stmt;
    190 def MSDependentExistsStmt : Stmt;
    191 
    192 // OpenCL Extensions.
    193 def AsTypeExpr : DStmt<Expr>;
    194 
    195 // OpenMP Directives.
    196 def OMPExecutableDirective : Stmt<1>;
    197 def OMPLoopDirective : DStmt<OMPExecutableDirective, 1>;
    198 def OMPParallelDirective : DStmt<OMPExecutableDirective>;
    199 def OMPSimdDirective : DStmt<OMPLoopDirective>;
    200 def OMPForDirective : DStmt<OMPLoopDirective>;
    201 def OMPForSimdDirective : DStmt<OMPLoopDirective>;
    202 def OMPSectionsDirective : DStmt<OMPExecutableDirective>;
    203 def OMPSectionDirective : DStmt<OMPExecutableDirective>;
    204 def OMPSingleDirective : DStmt<OMPExecutableDirective>;
    205 def OMPMasterDirective : DStmt<OMPExecutableDirective>;
    206 def OMPCriticalDirective : DStmt<OMPExecutableDirective>;
    207 def OMPParallelForDirective : DStmt<OMPLoopDirective>;
    208 def OMPParallelForSimdDirective : DStmt<OMPLoopDirective>;
    209 def OMPParallelSectionsDirective : DStmt<OMPExecutableDirective>;
    210 def OMPTaskDirective : DStmt<OMPExecutableDirective>;
    211 def OMPTaskyieldDirective : DStmt<OMPExecutableDirective>;
    212 def OMPBarrierDirective : DStmt<OMPExecutableDirective>;
    213 def OMPTaskwaitDirective : DStmt<OMPExecutableDirective>;
    214 def OMPTaskgroupDirective : DStmt<OMPExecutableDirective>;
    215 def OMPFlushDirective : DStmt<OMPExecutableDirective>;
    216 def OMPOrderedDirective : DStmt<OMPExecutableDirective>;
    217 def OMPAtomicDirective : DStmt<OMPExecutableDirective>;
    218 def OMPTargetDirective : DStmt<OMPExecutableDirective>;
    219 def OMPTargetDataDirective : DStmt<OMPExecutableDirective>;
    220 def OMPTargetEnterDataDirective : DStmt<OMPExecutableDirective>;
    221 def OMPTargetExitDataDirective : DStmt<OMPExecutableDirective>;
    222 def OMPTargetParallelDirective : DStmt<OMPExecutableDirective>;
    223 def OMPTargetParallelForDirective : DStmt<OMPExecutableDirective>;
    224 def OMPTargetUpdateDirective : DStmt<OMPExecutableDirective>;
    225 def OMPTeamsDirective : DStmt<OMPExecutableDirective>;
    226 def OMPCancellationPointDirective : DStmt<OMPExecutableDirective>;
    227 def OMPCancelDirective : DStmt<OMPExecutableDirective>;
    228 def OMPTaskLoopDirective : DStmt<OMPLoopDirective>;
    229 def OMPTaskLoopSimdDirective : DStmt<OMPLoopDirective>;
    230 def OMPDistributeDirective : DStmt<OMPLoopDirective>;
    231 def OMPDistributeParallelForDirective : DStmt<OMPLoopDirective>;
    232 def OMPDistributeParallelForSimdDirective : DStmt<OMPLoopDirective>;
    233 def OMPDistributeSimdDirective : DStmt<OMPLoopDirective>;
    234 def OMPTargetParallelForSimdDirective : DStmt<OMPLoopDirective>;
    235