public override void EnterEnhancedForControl(JavaParser.EnhancedForControlContext context)
 {
     if (IsInCurrentContext(context))
     {
         _associatedTrees.Add(context);
     }
 }
Ejemplo n.º 2
0
        public Ust VisitForControl(JavaParser.ForControlContext context)
        {
            JavaParser.EnhancedForControlContext forEach = context.enhancedForControl();
            if (forEach != null)
            {
                // TODO: modifiers
                var type      = (TypeToken)Visit(forEach.typeType());
                var varDecId  = (IdToken)Visit(forEach.variableDeclaratorId());
                var expr      = (Expression)Visit(forEach.expression());
                var parent    = (JavaParser.StatementContext)context.parent;
                var statement = (Statement)Visit(parent.statement(0));

                var result = new ForeachStatement(type, varDecId, expr, statement, parent.GetTextSpan());
                return(result);
            }
            else
            {
                var initializers = new List <Statement>();
                var iterators    = new List <Expression>();

                JavaParser.ForInitContext forInit = context.forInit();
                if (forInit != null)
                {
                    var varDec = forInit.localVariableDeclaration();
                    if (varDec != null)
                    {
                        var varDecStatement = (VariableDeclarationExpression)Visit(varDec);
                        initializers.Add(new ExpressionStatement(varDecStatement));
                    }
                    else
                    {
                        initializers.AddRange(forInit.expressionList().expression()
                                              .Select(expr =>
                        {
                            var ex = (Expression)Visit(expr);
                            return(ex == null ? null : new ExpressionStatement(ex, expr.GetTextSpan()));
                        }).Where(stmt => stmt != null).ToArray());
                    }
                }
                Expression condition = context.expression() == null ? null : (Expression)Visit(context.expression());

                JavaParser.ExpressionListContext forUpdate = context.forUpdate;
                if (forUpdate != null)
                {
                    iterators.AddRange(forUpdate.expression()
                                       .Select(expr => (Expression)Visit(expr))
                                       .Where(iter => iter != null).ToArray());
                }

                var parent    = (JavaParser.StatementContext)context.parent;
                var statement = (Statement)Visit(parent.statement(0));
                var result    = new ForStatement(initializers, condition, iterators, statement, parent.GetTextSpan());
                return(result);
            }
        }
Ejemplo n.º 3
0
 public Ust VisitEnhancedForControl([NotNull] JavaParser.EnhancedForControlContext context)
 {
     return(VisitChildren(context));
 }