• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# Ast.BlockStatement类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中ICSharpCode.NRefactory.Ast.BlockStatement的典型用法代码示例。如果您正苦于以下问题:C# BlockStatement类的具体用法?C# BlockStatement怎么用?C# BlockStatement使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



BlockStatement类属于ICSharpCode.NRefactory.Ast命名空间,在下文中一共展示了BlockStatement类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: VisitBlockStatement

		public override object VisitBlockStatement(BlockStatement blockStatement, object data)
		{
			foreach(INode statement in blockStatement.Children) {
				statement.AcceptVisitor(this, null);
			}
			return null;
		}
开发者ID:kingjiang,项目名称:SharpDevelopLite,代码行数:7,代码来源:EvaluateAstVisitor.cs


示例2: VisitBlockStatement

		public override object VisitBlockStatement(BlockStatement blockStatement, object data)
		{
			Push();
			object result = base.VisitBlockStatement(blockStatement, data);
			Pop();
			return result;
		}
开发者ID:Adam-Fogle,项目名称:agentralphplugin,代码行数:7,代码来源:PrefixFieldsVisitor.cs


示例3: ConvertBlock

		B.Block ConvertBlock(BlockStatement block)
		{
			B.Block b = new B.Block(GetLexicalInfo(block));
			b.EndSourceLocation = GetLocation(block.EndLocation);
			ConvertStatements(block.Children, b);
			return b;
		}
开发者ID:kingjiang,项目名称:SharpDevelopLite,代码行数:7,代码来源:ConvertVisitorStatements.cs


示例4: add_Method

        public static MethodDeclaration add_Method(this TypeDeclaration typeDeclaration, string methodName, Dictionary<string, object> invocationParameters, BlockStatement body)
        {
            var newMethod = new MethodDeclaration
            {
                Name = methodName,
                //Modifier = Modifiers.None | Modifiers.Public | Modifiers.Static,
                Modifier = Modifiers.None | Modifiers.Public,
                Body = body
            };
            newMethod.setReturnType();
            if (invocationParameters != null)

                foreach (var invocationParameter in invocationParameters)
                {
                    var parameterType = new TypeReference(
                        (invocationParameter.Value != null && invocationParameter.Key != "returnData")
                        ? invocationParameter.Value.typeFullName()
                        : "System.Object", true);
                    var parameter = new ParameterDeclarationExpression(parameterType, invocationParameter.Key);
                    newMethod.Parameters.Add(parameter);

                }
            typeDeclaration.AddChild(newMethod);
            return newMethod;
        }
开发者ID:pusp,项目名称:o2platform,代码行数:25,代码来源:MethodDeclaration_ExtensionMethods.cs


示例5: CreateMethodBody

        public BlockStatement CreateMethodBody()
        {
            Ast.BlockStatement astBlock = new Ast.BlockStatement();

            if (methodDef.Body == null) return astBlock;

            List<ILNode> body = new ILAstBuilder().Build(methodDef);

            MethodBodyGraph bodyGraph = new MethodBodyGraph(body);
            bodyGraph.Optimize();

            List<string> intNames = new List<string>(new string[] {"i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t"});
            Dictionary<string, int> typeNames = new Dictionary<string, int>();
            foreach(VariableDefinition varDef in methodDef.Body.Variables) {
                if (string.IsNullOrEmpty(varDef.Name)) {
                    if (varDef.VariableType.FullName == Constants.Int32 && intNames.Count > 0) {
                        varDef.Name = intNames[0];
                        intNames.RemoveAt(0);
                    } else {
                        string name;
                        if (varDef.VariableType.IsArray) {
                            name = "array";
                        } else if (!typeNameToVariableNameDict.TryGetValue(varDef.VariableType.FullName, out name)) {
                            name = varDef.VariableType.Name;
                            // remove the 'I' for interfaces
                            if (name.Length >= 3 && name[0] == 'I' && char.IsUpper(name[1]) && char.IsLower(name[2]))
                                name = name.Substring(1);
                            // remove the backtick (generics)
                            int pos = name.IndexOf('`');
                            if (pos >= 0)
                                name = name.Substring(0, pos);
                            if (name.Length == 0)
                                name = "obj";
                            else
                                name = char.ToLower(name[0]) + name.Substring(1);
                        }
                        if (!typeNames.ContainsKey(name)) {
                            typeNames.Add(name, 0);
                        }
                        int count = typeNames[name];
                        if (count > 0) {
                            name += count.ToString();
                        }
                        varDef.Name = name;
                    }
                }
                localVarTypes[varDef.Name] = varDef.VariableType;
                localVarDefined[varDef.Name] = false;

            //				Ast.VariableDeclaration astVar = new Ast.VariableDeclaration(varDef.Name);
            //				Ast.LocalVariableDeclaration astLocalVar = new Ast.LocalVariableDeclaration(astVar);
            //				astLocalVar.TypeReference = new Ast.TypeReference(varDef.VariableType.FullName);
            //				astBlock.Children.Add(astLocalVar);
            }

            astBlock.Children.AddRange(TransformNodes(bodyGraph.Childs));

            return astBlock;
        }
开发者ID:almazik,项目名称:ILSpy,代码行数:59,代码来源:AstMetodBodyBuilder.cs


示例6: TrackedVisitBlockStatement

 public override object TrackedVisitBlockStatement(BlockStatement blockStatement, object data)
 {
     blockStatement.Children.Clear();
     TypeReference notImplmentedException = new TypeReference("System.NotImplementedException");
     ObjectCreateExpression objectCreate = new ObjectCreateExpression(notImplmentedException, new List<Expression>());
     blockStatement.Children.Add(new ThrowStatement(objectCreate));
     return null;
 }
开发者ID:sourcewarehouse,项目名称:janett,代码行数:8,代码来源:StubTransformer.cs


示例7: VisitBlockStatement

 public override object VisitBlockStatement(BlockStatement blockStatement, object data)
 {
     foreach (Statement st in blockStatement.Children)
     {
         st.Parent = blockStatement;
     }
     return base.VisitBlockStatement(blockStatement, data);
 }
开发者ID:sourcewarehouse,项目名称:janett,代码行数:8,代码来源:ParentVisitor.cs


示例8: GenerateAstToInsert

		AbstractNode GenerateAstToInsert(string variableName)
		{
			var block = new BlockStatement();
			block.AddChild(new ExpressionStatement(new IdentifierExpression(caretMarker)));
			return new IfElseStatement(
				new BinaryOperatorExpression(new IdentifierExpression(variableName), BinaryOperatorType.InEquality, new PrimitiveExpression(null)),
				block);
		}
开发者ID:Bombadil77,项目名称:SharpDevelop,代码行数:8,代码来源:CheckAssignmentNotNull.cs


示例9: CreateEmptyBlockStatement

        public static BlockStatement CreateEmptyBlockStatement(string returnTypeName)
        {
            var block = new BlockStatement();

            if (!IsVoid(returnTypeName))
                block.AddChildren(new ReturnStatement(new DefaultValueExpression(CreateTypeReference(returnTypeName))));

            return block;
        }
开发者ID:Magicolo,项目名称:PseudoFramework,代码行数:9,代码来源:NRefactoryUtility.cs


示例10: VisitBlockStatement

        public override object VisitBlockStatement(BlockStatement blockStatement, object data)
        {
            Contract.Requires(blockStatement != null);

            // Visit children of block statement (E.g. several ExpressionStatement objects)
            blockStatement.AcceptChildren(this, data);

            return null;
        }
开发者ID:chinaniit,项目名称:KnockoutGenerator,代码行数:9,代码来源:AstVisitor.cs


示例11: VisitBlockStatement

 public override object VisitBlockStatement(BlockStatement blockStatement, object data)
 {
     for(int i = 0; i < blockStatement.Children.Count; i++) {
         if (blockStatement.Children[i] is Statement &&
             ((Statement)blockStatement.Children[i]).IsNull)
         {
             blockStatement.Children.RemoveAt(i);
             i--;
         }
     }
     return base.VisitBlockStatement(blockStatement, data);
 }
开发者ID:almazik,项目名称:ILSpy,代码行数:12,代码来源:RemoveEmptyElseBody.cs


示例12: CreateMetodBody

 public static BlockStatement CreateMetodBody(MethodDefinition methodDef)
 {
     AstMetodBodyBuilder builder = new AstMetodBodyBuilder();
     builder.methodDef = methodDef;
     try {
         return builder.CreateMethodBody();
     } catch {
         BlockStatement block = new BlockStatement();
         block.Children.Add(MakeComment("Exception during decompilation"));
         return block;
     }
 }
开发者ID:almazik,项目名称:ILSpy,代码行数:12,代码来源:AstMetodBodyBuilder.cs


示例13: GetModifiedName

 private string GetModifiedName(BlockStatement blockStatement, string identifier)
 {
     int hashCode;
     while (blockStatement != null)
     {
         hashCode = blockStatement.GetHashCode();
         string identifierHash = identifier + "_" + hashCode;
         if (renamedVariables.Contains(identifierHash))
             return (string) renamedVariables[identifierHash];
         else
             blockStatement = (BlockStatement) AstUtil.GetParentOfType(blockStatement, typeof(BlockStatement));
     }
     return null;
 }
开发者ID:sourcewarehouse,项目名称:janett,代码行数:14,代码来源:RenameRepeatedVariableTransformer.cs


示例14: ast_CSharp_CreateCompilableClass

        public static string ast_CSharp_CreateCompilableClass(this BlockStatement blockStatement, SnippetParser snippetParser, string codeSnippet,
            CSharp_FastCompiler_CompilerOptions   compilerOptions,
            CSharp_FastCompiler_CompilerArtifacts compilerArtifacts,
            CSharp_FastCompiler_ExecutionOptions  executionOptions)
        {
            if (blockStatement.isNull() || compilerOptions.isNull())
                return null;

            var compilationUnit= compilerArtifacts.CompilationUnit = new CompilationUnit();

            compilationUnit.add_Type(compilerOptions.default_TypeName)
                .add_Method(compilerOptions.default_MethodName, executionOptions.InvocationParameters,
                    compilerOptions.ResolveInvocationParametersType, blockStatement);

            // remove comments from parsed code
            var astCSharp = compilerArtifacts.AstCSharp = new Ast_CSharp(compilerArtifacts.CompilationUnit, snippetParser.Specials);

            // add references included in the original source code file
            compilerArtifacts.AstCSharp.mapCodeO2References(compilerOptions);

            astCSharp.mapAstDetails();

            astCSharp.ExtraSpecials.Clear();
            var method     = compilationUnit.method(compilerOptions.default_MethodName);
            var returntype = method.returnType();
            var type       = compilationUnit.type(compilerOptions.default_TypeName);

            type.Children.Clear();
            var tempBlockStatement = new BlockStatement();
            tempBlockStatement.add_Variable("a", 0);
            method.Body = tempBlockStatement;
            var newMethod = type.add_Method(compilerOptions.default_MethodName, executionOptions.InvocationParameters,
                compilerOptions.ResolveInvocationParametersType, tempBlockStatement);
            newMethod.TypeReference = returntype;

            if(blockStatement.returnStatements().size() >1)
                astCSharp.methodDeclarations().first().remove_LastReturnStatement();

            astCSharp.mapAstDetails();

            var codeToReplace = "Int32 a = 0;";
            var csharpCode = astCSharp.AstDetails.CSharpCode
                .replace("\t\t{0}".format(codeToReplace), codeToReplace)    // remove tabs
                .replace("Int32 a = 0;", codeSnippet);                      // put the actual code (this should be done via AST, but it was affectting code complete)
            return csharpCode;
        }
开发者ID:njmube,项目名称:FluentSharp,代码行数:46,代码来源:Ast_CSharp_ExtensionMethods_Code_Generation.cs


示例15: TrackedVisitBlockStatement

 public override object TrackedVisitBlockStatement(BlockStatement blockStatement, object data)
 {
     BlockStatement replaced = blockStatement;
     InsertionBlockData insertionBlockData = new InsertionBlockData();
     base.TrackedVisitBlockStatement(blockStatement, insertionBlockData);
     if (insertionBlockData.Block != null && insertionBlockData.Statements.Count > 0)
     {
         if (blockStatement.GetHashCode() == insertionBlockData.Block.GetHashCode())
         {
             IList<INode> nodes = new List<INode>();
             foreach (Statement node in insertionBlockData.Statements)
                 nodes.Add(node);
             replaced.Children.InsertRange(insertionBlockData.BlockChildIndex, nodes);
             ReplaceCurrentNode(replaced);
         }
     }
     return null;
 }
开发者ID:sourcewarehouse,项目名称:janett,代码行数:18,代码来源:ArrayInitializerTransformer.cs


示例16: CreateMethodImplementation

        private void CreateMethodImplementation(MethodDeclaration equalsMethod)
        {
            string fieldName = "instancehelper_" + equalsMethod.Name;
            IdentifierExpression targetObject = new IdentifierExpression("java.lang.Object");

            List<Expression> arguments = new List<Expression>();
            arguments.Add(new ThisReferenceExpression());
            string parameterName = ((ParameterDeclarationExpression) equalsMethod.Parameters[0]).ParameterName;
            IdentifierExpression identifier = new IdentifierExpression(parameterName);
            arguments.Add(identifier);

            FieldReferenceExpression fieldReferenceExpression = new FieldReferenceExpression(targetObject, fieldName);
            InvocationExpression invocationExpression = new InvocationExpression(fieldReferenceExpression, arguments);

            ReturnStatement returnStatement = new ReturnStatement(invocationExpression);
            BlockStatement block = new BlockStatement();
            block.Children.Add(returnStatement);
            equalsMethod.Body = block;
        }
开发者ID:sourcewarehouse,项目名称:janett,代码行数:19,代码来源:IKVMDifferencesTransformer.cs


示例17: VisitBlockStatement

		public override object VisitBlockStatement (BlockStatement blockStatement, object data)
		{
			blocks.Push (blockStatement);
			List<INode> statements = new List<INode> ();
			curStatementList.Push (statements);
			for (int i = 0; i < blockStatement.Children.Count; i++) {
				INode o = blockStatement.Children[i];
				Debug.Assert (o != null);
				nodeStack.Push (o);
				o.AcceptVisitor (this, data);
				o = nodeStack.Pop ();
				if (o == null) {
				} else {
					statements.Add (o);
				}
			}
			blockStatement.Children = statements;
			blocks.Pop ();
			return null;
		}
开发者ID:transformersprimeabcxyz,项目名称:monodevelop-1,代码行数:20,代码来源:ExtractMethodAstTransformer.cs


示例18: TrackedVisitBlockStatement

        public override object TrackedVisitBlockStatement(BlockStatement blockStatement, object data)
        {
            IList removables = new ArrayList();
            BlockStatement blockCopy = new BlockStatement();
            blockCopy.Children.AddRange(blockStatement.Children);
            blockCopy.Parent = blockStatement.Parent;
            base.TrackedVisitBlockStatement(blockCopy, removables);
            if (removables.Count > 0)
            {
                IDictionary list = new Hashtable();
                foreach (INode node in blockStatement.Children)
                    list.Add(node.GetHashCode(), node);

                foreach (INode node in removables)
                {
                    if (list.Contains(node.GetHashCode()))
                        blockStatement.Children.Remove(node);
                }
            }
            return null;
        }
开发者ID:sourcewarehouse,项目名称:janett,代码行数:21,代码来源:MemberMapper.cs


示例19: ExtractMethodForm

		public ExtractMethodForm(MethodDeclaration declaration, Func<IOutputAstVisitor> generator)
		{
			//
			// The InitializeComponent() call is required for Windows Forms designer support.
			//
			InitializeComponent();
			
			SetTranslation(this);
			
			this.declaration = declaration;
			this.generator = generator;
			IOutputAstVisitor visitor = this.generator.Invoke();
			body = declaration.Body;
			declaration.Body = new BlockStatement();
			
			declaration.AcceptVisitor(visitor, null);
			
			this.txtName.Text = this.declaration.Name;
			this.txtPreview.Text = visitor.Text;
			
			this.txtName.SelectAll();
		}
开发者ID:kingjiang,项目名称:SharpDevelopLite,代码行数:22,代码来源:ExtractMethodForm.cs


示例20: Block

	void Block(
//#line  2987 "VBNET.ATG" 
out Statement stmt) {

//#line  2990 "VBNET.ATG" 
		BlockStatement blockStmt = new BlockStatement();
		/* in snippet parsing mode, t might be null */
		if (t != null) blockStmt.StartLocation = t.EndLocation;
		BlockStart(blockStmt);
		
		while (StartOf(22) || 
//#line  2996 "VBNET.ATG" 
IsEndStmtAhead()) {
			if (
//#line  2996 "VBNET.ATG" 
IsEndStmtAhead()) {

//#line  2997 "VBNET.ATG" 
				Token first = la; 
				Expect(113);
				EndOfStmt();

//#line  3000 "VBNET.ATG" 
				AddChild(new EndStatement() {
				StartLocation = first.Location,
				EndLocation = first.EndLocation }
				);
				
			} else {
				Statement();
				EndOfStmt();
			}
		}

//#line  3009 "VBNET.ATG" 
		stmt = blockStmt;
		if (t != null) blockStmt.EndLocation = t.EndLocation;
		BlockEnd();
		
	}
开发者ID:Altaxo,项目名称:Altaxo,代码行数:40,代码来源:Parser.cs



注:本文中的ICSharpCode.NRefactory.Ast.BlockStatement类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# Ast.CastExpression类代码示例发布时间:2022-05-26
下一篇:
C# Ast.BinaryOperatorExpression类代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap