Exemple #1
0
        //with_stmt: 'with' with_item (',' with_item)* ':' suite
        //with_item: test ['as' expr]
        private WithStatement ParseWithStmt()
        {
            var start = _lookahead.Span.Start;
            Eat(TokenKind.KeywordWith);
            string withWhiteSpace = _tokenWhiteSpace;
            var itemWhiteSpace = MakeWhiteSpaceList();

            List<WithItem> items = new List<WithItem>();
            items.Add(ParseWithItem(itemWhiteSpace));
            while (MaybeEat(TokenKind.Comma)) {
                if (itemWhiteSpace != null) {
                    itemWhiteSpace.Add(_tokenWhiteSpace);
                }
                items.Add(ParseWithItem(itemWhiteSpace));
            }

            var header = GetEnd();
            Statement body = ParseSuite();

            WithStatement ret = new WithStatement(items.ToArray(), body);
            if (_verbatim) {
                AddPreceedingWhiteSpace(ret, withWhiteSpace);
                AddListWhiteSpace(ret, itemWhiteSpace.ToArray());
            }
            ret.SetLoc(start, body.EndIndex);
            return ret;
        }
Exemple #2
0
        // WithStmt
        public override bool Walk(WithStatement node)
        {
            BitArray save = _bits;
            _bits = new BitArray(_bits);

            // Walk the expression
            for (int i = 0; i < node.Items.Count; i++) {
                node.Items[i].ContextManager.Walk(this);

                // Define the Rhs
                if (node.Items[i].Variable != null) {
                    node.Items[i].Variable.Walk(_fdef);
                }
            }

            // Flow the body
            node.Body.Walk(this);

            _bits = save;
            return false;
        }
Exemple #3
0
 public override bool Walk(WithStatement node)
 {
     foreach (var item in node.Items) {
         if (item.Variable != null) {
             item.Variable.Walk(Define);
         }
         if (item.ContextManager != null) {
             item.ContextManager.Walk(this);
         }
     }
     if (node.Body != null) {
         node.Body.Walk(this);
     }
     return false;
 }
Exemple #4
0
 public override bool Walk(WithStatement node)
 {
     UpdateChildRanges(node);
     foreach (var item in node.Items) {
         var assignTo = item.Variable as NameExpression;
         if (assignTo != null) {
             _scope.AddVariable(assignTo.Name, CreateVariableInDeclaredScope(assignTo));
         }
     }
     return base.Walk(node);
 }
Exemple #5
0
 // WithStatement
 public override bool Walk(WithStatement node)
 {
     return ShouldWalkWorker(node);
 }
Exemple #6
0
 public override void PostWalk(WithStatement node)
 {
     PostWalkWorker(node);
 }