/** FOR (integer range) statement */ public Integer forRange(HplsqlParser.For_range_stmtContext ctx) { trace(ctx, "FOR RANGE - ENTERED"); int start = evalPop(ctx.expr(0)).intValue(); int end = evalPop(ctx.expr(1)).intValue(); int step = evalPop(ctx.expr(2), 1L).intValue(); exec.enterScope(Scope.Type.LOOP); Var index = new Var(ctx.L_ID().getText(), new Long(start)); exec.addVariable(index); if (ctx.T_REVERSE() == null) { for (int i = start; i <= end; i += step) { visit(ctx.block()); index.increment(new Long(step)); } } else { for (int i = start; i >= end; i -= step) { visit(ctx.block()); index.decrement(new Long(step)); } } exec.leaveScope(); trace(ctx, "FOR RANGE - LEFT"); return 0; }