当前位置: 首页>>代码示例>>C#>>正文


C# Scope.PreStatements方法代码示例

本文整理汇总了C#中Scope.PreStatements方法的典型用法代码示例。如果您正苦于以下问题:C# Scope.PreStatements方法的具体用法?C# Scope.PreStatements怎么用?C# Scope.PreStatements使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Scope的用法示例。


在下文中一共展示了Scope.PreStatements方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Program

        private static SyntaxNode Program(RParser.ProgContext prog, Func<ParserRuleContext, Scope, SyntaxNode> transform, Scope scope)
        {
            var statements = new List<StatementSyntax>();
            var inner = new Scope(scope);
            inner.InitR();
            var pre = inner.PreStatements();

            foreach (var expr in prog.expr_or_assign())
            {
                pre.Clear();

                var statement = transform(expr, inner) as StatementSyntax;
                Debug.Assert(statement != null);

                statements.AddRange(pre);
                statements.Add(statement);
            }

            return CSharp.Block(statements);
        }
开发者ID:mpmedia,项目名称:Excess,代码行数:20,代码来源:Extension.cs

示例2: RightAssignment

        private static SyntaxNode RightAssignment(RParser.RightAssignmentContext assignment, Func<ParserRuleContext, Scope, SyntaxNode> transform, Scope scope)
        {
            var left = transform(assignment.expr()[1], scope) as ExpressionSyntax;
            var right = transform(assignment.expr()[0], scope) as ExpressionSyntax;
            Debug.Assert(left != null && right != null);

            if (topLevel(assignment))
                return assigmentStatement(left, right, scope);

            Debug.Assert(left is IdentifierNameSyntax);
            var leftValue = left.ToString();
            if (!scope.hasVariable(leftValue))
            {
                scope.PreStatements().Add(preVariable.Get<StatementSyntax>(left));
                scope.addVariable(leftValue);
            }

            return preAssignment.Get(left, right);
        }
开发者ID:mpmedia,项目名称:Excess,代码行数:19,代码来源:Extension.cs

示例3: Compound

        private static SyntaxNode Compound(RParser.CompoundContext compound, Func<ParserRuleContext, Scope, SyntaxNode> transform, Scope scope)
        {
            //create a new context for the block
            var inner = new Scope(scope);
            inner.InitR();

            var pre = inner.PreStatements();
            var statements = new List<StatementSyntax>();
            var exprlist = compound.exprlist();
            if (exprlist is RParser.ExpressionListContext)
            {
                var list = exprlist as RParser.ExpressionListContext;
                foreach (var expr in list.expr_or_assign())
                {
                    pre.Clear();
                    var statement = transform(expr, inner) as StatementSyntax;
                    Debug.Assert(statement != null);

                    statements.AddRange(pre);
                    statements.Add(statement);
                }
            }

            return CSharp.Block(statements);
        }
开发者ID:mpmedia,项目名称:Excess,代码行数:25,代码来源:Extension.cs


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