Search in sources :

Example 6 with SBlock

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

the class Walker method visitIneach.

@Override
public ANode visitIneach(IneachContext ctx) {
    reserved.peek().setMaxLoopCounter(settings.getMaxLoopCounter());
    String name = ctx.ID().getText();
    AExpression expression = (AExpression) visit(ctx.expression());
    SBlock block = (SBlock) visit(ctx.trailer());
    return new SEach(location(ctx), "def", 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 7 with SBlock

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

the class Walker method visitWhile.

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

Example 8 with SBlock

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

the class Walker method visitDo.

@Override
public ANode visitDo(DoContext ctx) {
    reserved.peek().setMaxLoopCounter(settings.getMaxLoopCounter());
    AExpression expression = (AExpression) visit(ctx.expression());
    SBlock block = (SBlock) visit(ctx.block());
    return new SDo(location(ctx), block, expression);
}
Also used : AExpression(org.elasticsearch.painless.node.AExpression) SBlock(org.elasticsearch.painless.node.SBlock) SDo(org.elasticsearch.painless.node.SDo)

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