Search in sources :

Example 1 with ANode

use of org.elasticsearch.painless.node.ANode in project elasticsearch by elastic.

the class Walker method visitFor.

@Override
public ANode visitFor(ForContext ctx) {
    reserved.peek().setMaxLoopCounter(settings.getMaxLoopCounter());
    ANode initializer = ctx.initializer() == null ? null : visit(ctx.initializer());
    AExpression expression = ctx.expression() == null ? null : (AExpression) visit(ctx.expression());
    AExpression afterthought = ctx.afterthought() == null ? null : (AExpression) visit(ctx.afterthought());
    if (ctx.trailer() != null) {
        SBlock block = (SBlock) visit(ctx.trailer());
        return new SFor(location(ctx), initializer, expression, afterthought, block);
    } else if (ctx.empty() != null) {
        return new SFor(location(ctx), initializer, expression, afterthought, null);
    } else {
        throw location(ctx).createError(new IllegalStateException("Illegal tree structure."));
    }
}
Also used : SFor(org.elasticsearch.painless.node.SFor) AExpression(org.elasticsearch.painless.node.AExpression) ANode(org.elasticsearch.painless.node.ANode) SBlock(org.elasticsearch.painless.node.SBlock)

Aggregations

AExpression (org.elasticsearch.painless.node.AExpression)1 ANode (org.elasticsearch.painless.node.ANode)1 SBlock (org.elasticsearch.painless.node.SBlock)1 SFor (org.elasticsearch.painless.node.SFor)1