Beispiel #1
0
        public override UstNode VisitForStatement(ForStatementSyntax node)
        {
            Statement[] initializers = node.Declaration != null ?
                                       new Statement[]
            {
                new ExpressionStatement((VariableDeclarationExpression)VisitVariableDeclaration(node.Declaration))
            } :
            node.Initializers.Select(init => {
                Expression ex = (Expression)VisitAndReturnNullIfError(init);
                return(ex == null ? null : new ExpressionStatement(ex, init.GetTextSpan(), FileNode));
            })
            .ToArray();

            var condition = (Expression)base.Visit(node.Condition);
            var iterators = node.Incrementors.Select(inc => (Expression)VisitAndReturnNullIfError(inc))
                            .ToArray();
            var statement = (Statement)base.Visit(node.Statement);

            var result = new ForStatement(initializers, condition, iterators, statement, node.GetTextSpan(), FileNode);

            return(result);
        }