コード例 #1
0
ファイル: AstRewriter.cs プロジェクト: clorton/IDM-CMS
        // YieldStatement
        private Statement Rewrite(YieldStatement node)
        {
            Expression expression = RewriteExpressionFreeTemps(node.Expression);

            // Yield needs empty stack too, so rewrite it always
            return(Ast.Yield(node.Span, expression));
        }
コード例 #2
0
 // YieldStatement
 private void DefaultWalk(YieldStatement node)
 {
     if (Walk(node))
     {
         WalkNode(node.Expression);
     }
     PostWalk(node);
 }
コード例 #3
0
        protected internal override void PostWalk(YieldStatement node)
        {
            // Assign the yield statement index for codegen
            int index = _topTargets.Count;
            TargetLabel label = new TargetLabel();
            node.Target = new YieldTarget(index, label);

            foreach (ExceptionBlock eb in _tryBlocks) {
                // The exception statement must determine
                // the label for the enclosing code to jump to
                // to return to the given yield target

                label = eb.AddYieldTarget(label, index);
            }

            // Insert the top target to the top yields
            Debug.Assert(_topTargets.Count == index);
            _topTargets.Add(new YieldTarget(index, label));
        }
コード例 #4
0
        protected internal override void PostWalk(YieldStatement node)
        {
            // Assign the yield statement index for codegen
            int         index = _topTargets.Count;
            TargetLabel label = new TargetLabel();

            node.Target = new YieldTarget(index, label);

            foreach (ExceptionBlock eb in _tryBlocks)
            {
                // The exception statement must determine
                // the label for the enclosing code to jump to
                // to return to the given yield target

                label = eb.AddYieldTarget(label, index);
            }

            // Insert the top target to the top yields
            Debug.Assert(_topTargets.Count == index);
            _topTargets.Add(new YieldTarget(index, label));
        }
コード例 #5
0
ファイル: TryFlowAnalyzer.cs プロジェクト: tylike/IronScheme
 protected internal override bool Walk(YieldStatement node)
 {
     _result.Yield = true;
     return(true);
 }
コード例 #6
0
ファイル: Walker.cs プロジェクト: robertlj/IronScheme
 // YieldStatement
 private void DefaultWalk(YieldStatement node)
 {
     if (Walk(node)) {
         WalkNode(node.Expression);
     }
     PostWalk(node);
 }
コード例 #7
0
 protected internal override bool Walk(YieldStatement node)
 {
     _result.Yield = true;
     return true;
 }
コード例 #8
0
ファイル: AstWriter.cs プロジェクト: JamesTryand/IronScheme
 // YieldStatement
 private void Dump(YieldStatement node)
 {
     Out(".yield ");
     WalkNode(node.Expression);
     Out(";", Flow.NewLine);
 }
コード例 #9
0
 // Yield statement triggers rewrite
 protected internal override void PostWalk(YieldStatement node)
 {
     _rewrite = true;
 }
コード例 #10
0
 // Yield statement triggers rewrite
 protected internal override void PostWalk(YieldStatement node) {
     _rewrite = true;
 }