Search in sources :

Example 1 with SBlock

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

the class Walker method visitTry.

@Override
public ANode visitTry(TryContext ctx) {
    SBlock block = (SBlock) visit(ctx.block());
    List<SCatch> catches = new ArrayList<>();
    for (TrapContext trap : ctx.trap()) {
        catches.add((SCatch) visit(trap));
    }
    return new STry(location(ctx), block, catches);
}
Also used : TrapContext(org.elasticsearch.painless.antlr.PainlessParser.TrapContext) ArrayList(java.util.ArrayList) SCatch(org.elasticsearch.painless.node.SCatch) SBlock(org.elasticsearch.painless.node.SBlock) STry(org.elasticsearch.painless.node.STry)

Example 2 with SBlock

use of org.elasticsearch.painless.node.SBlock 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)

Example 3 with SBlock

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

the class Walker method visitTrap.

@Override
public ANode visitTrap(TrapContext ctx) {
    String type = ctx.TYPE().getText();
    String name = ctx.ID().getText();
    SBlock block = (SBlock) visit(ctx.block());
    return new SCatch(location(ctx), type, name, block);
}
Also used : SCatch(org.elasticsearch.painless.node.SCatch) EString(org.elasticsearch.painless.node.EString) SBlock(org.elasticsearch.painless.node.SBlock)

Example 4 with SBlock

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

the class Walker method visitEach.

@Override
public ANode visitEach(EachContext ctx) {
    reserved.peek().setMaxLoopCounter(settings.getMaxLoopCounter());
    String type = ctx.decltype().getText();
    String name = ctx.ID().getText();
    AExpression expression = (AExpression) visit(ctx.expression());
    SBlock block = (SBlock) visit(ctx.trailer());
    return new SEach(location(ctx), type, name, expression, block);
}
Also used : SEach(org.elasticsearch.painless.node.SEach) AExpression(org.elasticsearch.painless.node.AExpression) EString(org.elasticsearch.painless.node.EString) SBlock(org.elasticsearch.painless.node.SBlock)

Example 5 with SBlock

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

the class Walker method visitIf.

@Override
public ANode visitIf(IfContext ctx) {
    AExpression expression = (AExpression) visit(ctx.expression());
    SBlock ifblock = (SBlock) visit(ctx.trailer(0));
    if (ctx.trailer().size() > 1) {
        SBlock elseblock = (SBlock) visit(ctx.trailer(1));
        return new SIfElse(location(ctx), expression, ifblock, elseblock);
    } else {
        return new SIf(location(ctx), expression, ifblock);
    }
}
Also used : SIf(org.elasticsearch.painless.node.SIf) AExpression(org.elasticsearch.painless.node.AExpression) SIfElse(org.elasticsearch.painless.node.SIfElse) SBlock(org.elasticsearch.painless.node.SBlock)

Aggregations

SBlock (org.elasticsearch.painless.node.SBlock)8 AExpression (org.elasticsearch.painless.node.AExpression)6 EString (org.elasticsearch.painless.node.EString)3 SCatch (org.elasticsearch.painless.node.SCatch)2 SEach (org.elasticsearch.painless.node.SEach)2 ArrayList (java.util.ArrayList)1 TrapContext (org.elasticsearch.painless.antlr.PainlessParser.TrapContext)1 ANode (org.elasticsearch.painless.node.ANode)1 SDo (org.elasticsearch.painless.node.SDo)1 SFor (org.elasticsearch.painless.node.SFor)1 SIf (org.elasticsearch.painless.node.SIf)1 SIfElse (org.elasticsearch.painless.node.SIfElse)1 STry (org.elasticsearch.painless.node.STry)1 SWhile (org.elasticsearch.painless.node.SWhile)1