Exemple #1
0
 public override bool Walk(WhileStatement node) {
     // Walk while statements manually so we don't traverse the test.
     // This prevents the test from being collapsed ever.
     if (node.Body != null) {
         AddTagIfNecessary(
             node.StartIndex,
             node.Body.EndIndex,
             _ast.GetLineEndFromPosition(node.StartIndex)
         );
         node.Body.Walk(this);
     }
     if (node.ElseStatement != null) {
         AddTagIfNecessary(node.ElseStatement, node.ElseIndex);
         node.ElseStatement.Walk(this);
     }
     return false;
 }
 public override bool Walk(WhileStatement node) {
     CanComplete = IsActualExpression(node.Test);
     CommitByDefault = true;
     return base.Walk(node);
 }
Exemple #3
0
 //while_stmt: 'while' expression ':' suite ['else' ':' suite]
 private WhileStatement ParseWhileStmt() {
     Eat(TokenKind.KeywordWhile);
     string whileWhiteSpace = _tokenWhiteSpace;
     var start = GetStart();
     Expression expr = ParseExpression();
     var mid = GetEnd();
     Statement body = ParseLoopSuite();
     Statement else_ = null;
     string elseWhiteSpace = null;
     int end = body.EndIndex;
     if (MaybeEat(TokenKind.KeywordElse)) {
         elseWhiteSpace = _tokenWhiteSpace;
         else_ = ParseSuite();
         end = else_.EndIndex;
     }
     WhileStatement ret = new WhileStatement(expr, body, else_);
     ret.SetLoc(start, mid, end);
     if (_verbatim) {
         AddPreceedingWhiteSpace(ret, whileWhiteSpace);
         if (elseWhiteSpace != null) {
             AddSecondPreceedingWhiteSpace(ret, elseWhiteSpace);
         }
     }
     return ret;
 }
Exemple #4
0
        public override bool Walk(WhileStatement node) {
            // we only push the loop for the body of the loop
            // so we need to walk the while statement ourselves
            if (node.Test != null) {
                node.Test.Walk(this);
            }
            
            if (node.Body != null) {
                node.Body.Walk(this);
            }

            if (node.ElseStatement != null) {
                node.ElseStatement.Walk(this);
            }
            
            return false;
        }
Exemple #5
0
        public override bool Walk(WhileStatement node) {
            UpdateLineInfo(node.Test);
            AddBlock();

            if (node.Body != null) {
                node.Body.Walk(this);
            }

            if (node.ElseStatement != null) {
                AddBlock();
                node.ElseStatement.Walk(this);
            }

            AddBlock();

            return false;
        }
Exemple #6
0
 public override bool Walk(WhileStatement node) {
     UpdateChildRanges(node);
     return base.Walk(node);
 }
Exemple #7
0
 public override bool Walk(WhileStatement node) {
     if (node.Test != null) {
         node.Test.Walk(this);
     }
     if (node.Body != null) {
         bool oldInLoop = _inLoop;
         _inLoop = true;
         node.Body.Walk(this);
         _inLoop = oldInLoop;
     }
     if (node.ElseStatement != null) {
         node.ElseStatement.Walk(this);
     }
     return false;
 }
Exemple #8
0
 public override bool Walk(WhileStatement node) {
     return false;
 }
Exemple #9
0
 public override bool Walk(WhileStatement node) {
     WalkLoop(node.Body, node.ElseStatement);
     return false;
 }
Exemple #10
0
        // WhileStmt
        public override bool Walk(WhileStatement node) {
            // Walk the expression
            node.Test.Walk(this);

            BitArray opte = node.ElseStatement != null ? new BitArray(_bits) : null;
            BitArray exit = new BitArray(_bits.Length, true);

            PushLoop(exit);
            node.Body.Walk(this);
            PopLoop();

            _bits.And(exit);

            if (node.ElseStatement != null) {
                // Flow the else
                BitArray save = _bits;
                _bits = opte;
                node.ElseStatement.Walk(this);
                // Restore the bits
                _bits = save;

                // Intersect
                _bits.And(opte);
            }

            return false;
        }
Exemple #11
0
 public override void PostWalk(WhileStatement node) { PostWalkWorker(node); }
Exemple #12
0
 // WhileStatement
 public override bool Walk(WhileStatement node) { return ShouldWalkWorker(node); }