示例#1
0
 public Stmt(StmtClass kind, IStmt parent)
 {
     Class  = kind;
     Parent = parent as Stmt;
     if (Parent != null)
     {
         Parent.Stmts.Add(this);
     }
 }
示例#2
0
        public IStmt CreateStmt(StmtClass @class, IStmt parent)
        {
            Stmt ret;

            switch (@class)
            {
            case StmtClass.GCCAsmStmt: ret = new GCCAsmStmtStmt(parent); break;

            case StmtClass.MSAsmStmt: ret = new MSAsmStmtStmt(parent); break;

            case StmtClass.AttributedStmt: ret = new AttributedStmtStmt(parent); break;

            case StmtClass.BreakStmt: ret = new BreakStmtStmt(parent); break;

            case StmtClass.CXXCatchStmt: ret = new CXXCatchStmtStmt(parent); break;

            case StmtClass.CXXForRangeStmt: ret = new CXXForRangeStmtStmt(parent); break;

            case StmtClass.CXXTryStmt: ret = new CXXTryStmtStmt(parent); break;

            case StmtClass.CapturedStmt: ret = new CapturedStmtStmt(parent); break;

            case StmtClass.CompoundStmt: ret = new CompoundStmtStmt(parent); break;

            case StmtClass.ContinueStmt: ret = new ContinueStmtStmt(parent); break;

            case StmtClass.CoreturnStmt: ret = new CoreturnStmtStmt(parent); break;

            case StmtClass.CoroutineBodyStmt: ret = new CoroutineBodyStmtStmt(parent); break;

            case StmtClass.DeclStmt: ret = new DeclStmtStmt(parent); break;

            case StmtClass.DoStmt: ret = new DoStmtStmt(parent); break;

            case StmtClass.BinaryConditionalOperator: ret = new BinaryConditionalOperatorStmt(parent); break;

            case StmtClass.ConditionalOperator: ret = new ConditionalOperatorStmt(parent); break;

            case StmtClass.AddrLabelExpr: ret = new AddrLabelExprStmt(parent); break;

            case StmtClass.ArrayInitIndexExpr: ret = new ArrayInitIndexExprStmt(parent); break;

            case StmtClass.ArrayInitLoopExpr: ret = new ArrayInitLoopExprStmt(parent); break;

            case StmtClass.ArraySubscriptExpr: ret = new ArraySubscriptExprStmt(parent); break;

            case StmtClass.ArrayTypeTraitExpr: ret = new ArrayTypeTraitExprStmt(parent); break;

            case StmtClass.AsTypeExpr: ret = new AsTypeExprStmt(parent); break;

            case StmtClass.AtomicExpr: ret = new AtomicExprStmt(parent); break;

            case StmtClass.BinaryOperator: ret = new BinaryOperatorStmt(parent); break;

            case StmtClass.CompoundAssignOperator: ret = new CompoundAssignOperatorStmt(parent); break;

            case StmtClass.BlockExpr: ret = new BlockExprStmt(parent); break;

            case StmtClass.CXXBindTemporaryExpr: ret = new CXXBindTemporaryExprStmt(parent); break;

            case StmtClass.CXXBoolLiteralExpr: ret = new CXXBoolLiteralExprStmt(parent); break;

            case StmtClass.CXXConstructExpr: ret = new CXXConstructExprStmt(parent); break;

            case StmtClass.CXXTemporaryObjectExpr: ret = new CXXTemporaryObjectExprStmt(parent); break;

            case StmtClass.CXXDefaultArgExpr: ret = new CXXDefaultArgExprStmt(parent); break;

            case StmtClass.CXXDefaultInitExpr: ret = new CXXDefaultInitExprStmt(parent); break;

            case StmtClass.CXXDeleteExpr: ret = new CXXDeleteExprStmt(parent); break;

            case StmtClass.CXXDependentScopeMemberExpr: ret = new CXXDependentScopeMemberExprStmt(parent); break;

            case StmtClass.CXXFoldExpr: ret = new CXXFoldExprStmt(parent); break;

            case StmtClass.CXXInheritedCtorInitExpr: ret = new CXXInheritedCtorInitExprStmt(parent); break;

            case StmtClass.CXXNewExpr: ret = new CXXNewExprStmt(parent); break;

            case StmtClass.CXXNoexceptExpr: ret = new CXXNoexceptExprStmt(parent); break;

            case StmtClass.CXXNullPtrLiteralExpr: ret = new CXXNullPtrLiteralExprStmt(parent); break;

            case StmtClass.CXXPseudoDestructorExpr: ret = new CXXPseudoDestructorExprStmt(parent); break;

            case StmtClass.CXXScalarValueInitExpr: ret = new CXXScalarValueInitExprStmt(parent); break;

            case StmtClass.CXXStdInitializerListExpr: ret = new CXXStdInitializerListExprStmt(parent); break;

            case StmtClass.CXXThisExpr: ret = new CXXThisExprStmt(parent); break;

            case StmtClass.CXXThrowExpr: ret = new CXXThrowExprStmt(parent); break;

            case StmtClass.CXXTypeidExpr: ret = new CXXTypeidExprStmt(parent); break;

            case StmtClass.CXXUnresolvedConstructExpr: ret = new CXXUnresolvedConstructExprStmt(parent); break;

            case StmtClass.CXXUuidofExpr: ret = new CXXUuidofExprStmt(parent); break;

            case StmtClass.CallExpr: ret = new CallExprStmt(parent); break;

            case StmtClass.CUDAKernelCallExpr: ret = new CUDAKernelCallExprStmt(parent); break;

            case StmtClass.CXXMemberCallExpr: ret = new CXXMemberCallExprStmt(parent); break;

            case StmtClass.CXXOperatorCallExpr: ret = new CXXOperatorCallExprStmt(parent); break;

            case StmtClass.UserDefinedLiteral: ret = new UserDefinedLiteralStmt(parent); break;

            case StmtClass.CStyleCastExpr: ret = new CStyleCastExprStmt(parent); break;

            case StmtClass.CXXFunctionalCastExpr: ret = new CXXFunctionalCastExprStmt(parent); break;

            case StmtClass.CXXConstCastExpr: ret = new CXXConstCastExprStmt(parent); break;

            case StmtClass.CXXDynamicCastExpr: ret = new CXXDynamicCastExprStmt(parent); break;

            case StmtClass.CXXReinterpretCastExpr: ret = new CXXReinterpretCastExprStmt(parent); break;

            case StmtClass.CXXStaticCastExpr: ret = new CXXStaticCastExprStmt(parent); break;

            case StmtClass.ObjCBridgedCastExpr: ret = new ObjCBridgedCastExprStmt(parent); break;

            case StmtClass.ImplicitCastExpr: ret = new ImplicitCastExprStmt(parent); break;

            case StmtClass.CharacterLiteral: ret = new CharacterLiteralStmt(parent); break;

            case StmtClass.ChooseExpr: ret = new ChooseExprStmt(parent); break;

            case StmtClass.CompoundLiteralExpr: ret = new CompoundLiteralExprStmt(parent); break;

            case StmtClass.ConvertVectorExpr: ret = new ConvertVectorExprStmt(parent); break;

            case StmtClass.CoawaitExpr: ret = new CoawaitExprStmt(parent); break;

            case StmtClass.CoyieldExpr: ret = new CoyieldExprStmt(parent); break;

            case StmtClass.DeclRefExpr: ret = new DeclRefExprStmt(parent); break;

            case StmtClass.DependentCoawaitExpr: ret = new DependentCoawaitExprStmt(parent); break;

            case StmtClass.DependentScopeDeclRefExpr: ret = new DependentScopeDeclRefExprStmt(parent); break;

            case StmtClass.DesignatedInitExpr: ret = new DesignatedInitExprStmt(parent); break;

            case StmtClass.DesignatedInitUpdateExpr: ret = new DesignatedInitUpdateExprStmt(parent); break;

            case StmtClass.ExprWithCleanups: ret = new ExprWithCleanupsStmt(parent); break;

            case StmtClass.ExpressionTraitExpr: ret = new ExpressionTraitExprStmt(parent); break;

            case StmtClass.ExtVectorElementExpr: ret = new ExtVectorElementExprStmt(parent); break;

            case StmtClass.FloatingLiteral: ret = new FloatingLiteralStmt(parent); break;

            case StmtClass.FunctionParmPackExpr: ret = new FunctionParmPackExprStmt(parent); break;

            case StmtClass.GNUNullExpr: ret = new GNUNullExprStmt(parent); break;

            case StmtClass.GenericSelectionExpr: ret = new GenericSelectionExprStmt(parent); break;

            case StmtClass.ImaginaryLiteral: ret = new ImaginaryLiteralStmt(parent); break;

            case StmtClass.ImplicitValueInitExpr: ret = new ImplicitValueInitExprStmt(parent); break;

            case StmtClass.InitListExpr: ret = new InitListExprStmt(parent); break;

            case StmtClass.IntegerLiteral: ret = new IntegerLiteralStmt(parent); break;

            case StmtClass.LambdaExpr: ret = new LambdaExprStmt(parent); break;

            case StmtClass.MSPropertyRefExpr: ret = new MSPropertyRefExprStmt(parent); break;

            case StmtClass.MSPropertySubscriptExpr: ret = new MSPropertySubscriptExprStmt(parent); break;

            case StmtClass.MaterializeTemporaryExpr: ret = new MaterializeTemporaryExprStmt(parent); break;

            case StmtClass.MemberExpr: ret = new MemberExprStmt(parent); break;

            case StmtClass.NoInitExpr: ret = new NoInitExprStmt(parent); break;

            case StmtClass.OMPArraySectionExpr: ret = new OMPArraySectionExprStmt(parent); break;

            case StmtClass.ObjCArrayLiteral: ret = new ObjCArrayLiteralStmt(parent); break;

            case StmtClass.ObjCAvailabilityCheckExpr: ret = new ObjCAvailabilityCheckExprStmt(parent); break;

            case StmtClass.ObjCBoolLiteralExpr: ret = new ObjCBoolLiteralExprStmt(parent); break;

            case StmtClass.ObjCBoxedExpr: ret = new ObjCBoxedExprStmt(parent); break;

            case StmtClass.ObjCDictionaryLiteral: ret = new ObjCDictionaryLiteralStmt(parent); break;

            case StmtClass.ObjCEncodeExpr: ret = new ObjCEncodeExprStmt(parent); break;

            case StmtClass.ObjCIndirectCopyRestoreExpr: ret = new ObjCIndirectCopyRestoreExprStmt(parent); break;

            case StmtClass.ObjCIsaExpr: ret = new ObjCIsaExprStmt(parent); break;

            case StmtClass.ObjCIvarRefExpr: ret = new ObjCIvarRefExprStmt(parent); break;

            case StmtClass.ObjCMessageExpr: ret = new ObjCMessageExprStmt(parent); break;

            case StmtClass.ObjCPropertyRefExpr: ret = new ObjCPropertyRefExprStmt(parent); break;

            case StmtClass.ObjCProtocolExpr: ret = new ObjCProtocolExprStmt(parent); break;

            case StmtClass.ObjCSelectorExpr: ret = new ObjCSelectorExprStmt(parent); break;

            case StmtClass.ObjCStringLiteral: ret = new ObjCStringLiteralStmt(parent); break;

            case StmtClass.ObjCSubscriptRefExpr: ret = new ObjCSubscriptRefExprStmt(parent); break;

            case StmtClass.OffsetOfExpr: ret = new OffsetOfExprStmt(parent); break;

            case StmtClass.OpaqueValueExpr: ret = new OpaqueValueExprStmt(parent); break;

            case StmtClass.UnresolvedLookupExpr: ret = new UnresolvedLookupExprStmt(parent); break;

            case StmtClass.UnresolvedMemberExpr: ret = new UnresolvedMemberExprStmt(parent); break;

            case StmtClass.PackExpansionExpr: ret = new PackExpansionExprStmt(parent); break;

            case StmtClass.ParenExpr: ret = new ParenExprStmt(parent); break;

            case StmtClass.ParenListExpr: ret = new ParenListExprStmt(parent); break;

            case StmtClass.PredefinedExpr: ret = new PredefinedExprStmt(parent); break;

            case StmtClass.PseudoObjectExpr: ret = new PseudoObjectExprStmt(parent); break;

            case StmtClass.ShuffleVectorExpr: ret = new ShuffleVectorExprStmt(parent); break;

            case StmtClass.SizeOfPackExpr: ret = new SizeOfPackExprStmt(parent); break;

            case StmtClass.StmtExpr: ret = new StmtExprStmt(parent); break;

            case StmtClass.StringLiteral: ret = new StringLiteralStmt(parent); break;

            case StmtClass.SubstNonTypeTemplateParmExpr: ret = new SubstNonTypeTemplateParmExprStmt(parent); break;

            case StmtClass.SubstNonTypeTemplateParmPackExpr: ret = new SubstNonTypeTemplateParmPackExprStmt(parent); break;

            case StmtClass.TypeTraitExpr: ret = new TypeTraitExprStmt(parent); break;

            case StmtClass.TypoExpr: ret = new TypoExprStmt(parent); break;

            case StmtClass.UnaryExprOrTypeTraitExpr: ret = new UnaryExprOrTypeTraitExprStmt(parent); break;

            case StmtClass.UnaryOperator: ret = new UnaryOperatorStmt(parent); break;

            case StmtClass.VAArgExpr: ret = new VAArgExprStmt(parent); break;

            case StmtClass.ForStmt: ret = new ForStmtStmt(parent); break;

            case StmtClass.GotoStmt: ret = new GotoStmtStmt(parent); break;

            case StmtClass.IfStmt: ret = new IfStmtStmt(parent); break;

            case StmtClass.IndirectGotoStmt: ret = new IndirectGotoStmtStmt(parent); break;

            case StmtClass.LabelStmt: ret = new LabelStmtStmt(parent); break;

            case StmtClass.MSDependentExistsStmt: ret = new MSDependentExistsStmtStmt(parent); break;

            case StmtClass.NullStmt: ret = new NullStmtStmt(parent); break;

            case StmtClass.OMPAtomicDirective: ret = new OMPAtomicDirectiveStmt(parent); break;

            case StmtClass.OMPBarrierDirective: ret = new OMPBarrierDirectiveStmt(parent); break;

            case StmtClass.OMPCancelDirective: ret = new OMPCancelDirectiveStmt(parent); break;

            case StmtClass.OMPCancellationPointDirective: ret = new OMPCancellationPointDirectiveStmt(parent); break;

            case StmtClass.OMPCriticalDirective: ret = new OMPCriticalDirectiveStmt(parent); break;

            case StmtClass.OMPFlushDirective: ret = new OMPFlushDirectiveStmt(parent); break;

            case StmtClass.OMPDistributeDirective: ret = new OMPDistributeDirectiveStmt(parent); break;

            case StmtClass.OMPDistributeParallelForDirective: ret = new OMPDistributeParallelForDirectiveStmt(parent); break;

            case StmtClass.OMPDistributeParallelForSimdDirective: ret = new OMPDistributeParallelForSimdDirectiveStmt(parent); break;

            case StmtClass.OMPDistributeSimdDirective: ret = new OMPDistributeSimdDirectiveStmt(parent); break;

            case StmtClass.OMPForDirective: ret = new OMPForDirectiveStmt(parent); break;

            case StmtClass.OMPForSimdDirective: ret = new OMPForSimdDirectiveStmt(parent); break;

            case StmtClass.OMPParallelForDirective: ret = new OMPParallelForDirectiveStmt(parent); break;

            case StmtClass.OMPParallelForSimdDirective: ret = new OMPParallelForSimdDirectiveStmt(parent); break;

            case StmtClass.OMPSimdDirective: ret = new OMPSimdDirectiveStmt(parent); break;

            case StmtClass.OMPTargetParallelForSimdDirective: ret = new OMPTargetParallelForSimdDirectiveStmt(parent); break;

            case StmtClass.OMPTargetSimdDirective: ret = new OMPTargetSimdDirectiveStmt(parent); break;

            case StmtClass.OMPTargetTeamsDistributeDirective: ret = new OMPTargetTeamsDistributeDirectiveStmt(parent); break;

            case StmtClass.OMPTargetTeamsDistributeParallelForDirective: ret = new OMPTargetTeamsDistributeParallelForDirectiveStmt(parent); break;

            case StmtClass.OMPTargetTeamsDistributeParallelForSimdDirective: ret = new OMPTargetTeamsDistributeParallelForSimdDirectiveStmt(parent); break;

            case StmtClass.OMPTargetTeamsDistributeSimdDirective: ret = new OMPTargetTeamsDistributeSimdDirectiveStmt(parent); break;

            case StmtClass.OMPTaskLoopDirective: ret = new OMPTaskLoopDirectiveStmt(parent); break;

            case StmtClass.OMPTaskLoopSimdDirective: ret = new OMPTaskLoopSimdDirectiveStmt(parent); break;

            case StmtClass.OMPTeamsDistributeDirective: ret = new OMPTeamsDistributeDirectiveStmt(parent); break;

            case StmtClass.OMPTeamsDistributeParallelForDirective: ret = new OMPTeamsDistributeParallelForDirectiveStmt(parent); break;

            case StmtClass.OMPTeamsDistributeParallelForSimdDirective: ret = new OMPTeamsDistributeParallelForSimdDirectiveStmt(parent); break;

            case StmtClass.OMPTeamsDistributeSimdDirective: ret = new OMPTeamsDistributeSimdDirectiveStmt(parent); break;

            case StmtClass.OMPMasterDirective: ret = new OMPMasterDirectiveStmt(parent); break;

            case StmtClass.OMPOrderedDirective: ret = new OMPOrderedDirectiveStmt(parent); break;

            case StmtClass.OMPParallelDirective: ret = new OMPParallelDirectiveStmt(parent); break;

            case StmtClass.OMPParallelSectionsDirective: ret = new OMPParallelSectionsDirectiveStmt(parent); break;

            case StmtClass.OMPSectionDirective: ret = new OMPSectionDirectiveStmt(parent); break;

            case StmtClass.OMPSectionsDirective: ret = new OMPSectionsDirectiveStmt(parent); break;

            case StmtClass.OMPSingleDirective: ret = new OMPSingleDirectiveStmt(parent); break;

            case StmtClass.OMPTargetDataDirective: ret = new OMPTargetDataDirectiveStmt(parent); break;

            case StmtClass.OMPTargetDirective: ret = new OMPTargetDirectiveStmt(parent); break;

            case StmtClass.OMPTargetEnterDataDirective: ret = new OMPTargetEnterDataDirectiveStmt(parent); break;

            case StmtClass.OMPTargetExitDataDirective: ret = new OMPTargetExitDataDirectiveStmt(parent); break;

            case StmtClass.OMPTargetParallelDirective: ret = new OMPTargetParallelDirectiveStmt(parent); break;

            case StmtClass.OMPTargetParallelForDirective: ret = new OMPTargetParallelForDirectiveStmt(parent); break;

            case StmtClass.OMPTargetTeamsDirective: ret = new OMPTargetTeamsDirectiveStmt(parent); break;

            case StmtClass.OMPTargetUpdateDirective: ret = new OMPTargetUpdateDirectiveStmt(parent); break;

            case StmtClass.OMPTaskDirective: ret = new OMPTaskDirectiveStmt(parent); break;

            case StmtClass.OMPTaskgroupDirective: ret = new OMPTaskgroupDirectiveStmt(parent); break;

            case StmtClass.OMPTaskwaitDirective: ret = new OMPTaskwaitDirectiveStmt(parent); break;

            case StmtClass.OMPTaskyieldDirective: ret = new OMPTaskyieldDirectiveStmt(parent); break;

            case StmtClass.OMPTeamsDirective: ret = new OMPTeamsDirectiveStmt(parent); break;

            case StmtClass.ObjCAtCatchStmt: ret = new ObjCAtCatchStmtStmt(parent); break;

            case StmtClass.ObjCAtFinallyStmt: ret = new ObjCAtFinallyStmtStmt(parent); break;

            case StmtClass.ObjCAtSynchronizedStmt: ret = new ObjCAtSynchronizedStmtStmt(parent); break;

            case StmtClass.ObjCAtThrowStmt: ret = new ObjCAtThrowStmtStmt(parent); break;

            case StmtClass.ObjCAtTryStmt: ret = new ObjCAtTryStmtStmt(parent); break;

            case StmtClass.ObjCAutoreleasePoolStmt: ret = new ObjCAutoreleasePoolStmtStmt(parent); break;

            case StmtClass.ObjCForCollectionStmt: ret = new ObjCForCollectionStmtStmt(parent); break;

            case StmtClass.ReturnStmt: ret = new ReturnStmtStmt(parent); break;

            case StmtClass.SEHExceptStmt: ret = new SEHExceptStmtStmt(parent); break;

            case StmtClass.SEHFinallyStmt: ret = new SEHFinallyStmtStmt(parent); break;

            case StmtClass.SEHLeaveStmt: ret = new SEHLeaveStmtStmt(parent); break;

            case StmtClass.SEHTryStmt: ret = new SEHTryStmtStmt(parent); break;

            case StmtClass.CaseStmt: ret = new CaseStmtStmt(parent); break;

            case StmtClass.DefaultStmt: ret = new DefaultStmtStmt(parent); break;

            case StmtClass.SwitchStmt: ret = new SwitchStmtStmt(parent); break;

            case StmtClass.WhileStmt: ret = new WhileStmtStmt(parent); break;

            default: throw new NotImplementedException();
            }

            if (parent == null)
            {
                Stmts.Add(ret);
            }

            return(ret);
        }
示例#3
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal OverloadExpr(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#4
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal CXXNamedCastExpr(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#5
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal CoroutineSuspendExpr(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#6
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal CallExpr(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#7
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal ExplicitCastExpr(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#8
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal BinaryOperator(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#9
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal CXXConstructExpr(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#10
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal SwitchCase(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#11
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal AbstractConditionalOperator(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#12
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal OMPLoopDirective(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#13
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal OMPExecutableDirective(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }
示例#14
0
文件: Stmts.cs 项目: h7ga40/ComClang
 internal AsmStmt(StmtClass @class, IStmt parent)
     : base(@class, parent)
 {
 }