Search in sources :

Example 1 with VarRef

use of org.beetl.core.statement.VarRef in project beetl2.0 by javamonkey.

the class AntlrProgramBuilder method parseNativeCallExpression.

protected NativeCallExpression parseNativeCallExpression(NativeCallContext ncc) {
    NativeCallExpression nativeExp = null;
    List<ParseTree> list = ncc.children;
    // nativeCall: nativeVarRefChain (nativeMethod|nativeArray| PERIOD nativeVarRefChain)*;
    NativeVarRefChainContext first = (NativeVarRefChainContext) list.get(0);
    List<TerminalNode> ids = first.Identifier();
    StringBuilder clsSb = new StringBuilder();
    // 是类静态调用还是实例调用
    boolean isCls = false;
    int i = 0;
    for (; i < ids.size(); i++) {
        String text = ids.get(i).getText();
        char c = text.charAt(0);
        if (c >= 'A' && c <= 'Z') {
            clsSb.append(text);
            isCls = true;
            break;
        } else {
            clsSb.append(text).append(".");
        }
    }
    ClassNode clsNode = null;
    InstanceNode insNode = null;
    if (isCls) {
        clsNode = new ClassNode(clsSb.toString());
        // 指向下一个属性或者静态方法
        i++;
    } else {
        // 变量的属性引用,回到第一个,构造一个变量
        String varName = ids.get(0).getText();
        VarRef ref = new VarRef(new VarAttribute[0], false, null, this.getBTToken(varName, ncc.start.getLine()));
        this.pbCtx.setVarPosition(varName, ref);
        insNode = new InstanceNode(ref);
        i = 1;
    }
    List<NativeNode> nativeList = new ArrayList<NativeNode>();
    for (int j = i; j < ids.size(); j++) {
        // 剩下的是属性
        NativeAtrributeNode attribute = new NativeAtrributeNode(ids.get(j).getText());
        nativeList.add(attribute);
    }
    for (int z = 1; z < list.size(); z++) {
        ParseTree tree = list.get(z);
        if (tree instanceof NativeMethodContext) {
            NativeMethodContext methodCtx = (NativeMethodContext) tree;
            NativeMethodNode methodNode = null;
            String method = null;
            NativeNode lastNode = nativeList.get(nativeList.size() - 1);
            if (lastNode instanceof NativeAtrributeNode) {
                method = ((NativeAtrributeNode) lastNode).attribute;
                // 
                nativeList.remove(nativeList.size() - 1);
            } else {
                String msg = null;
                if (lastNode instanceof NativeArrayNode) {
                    msg = "[]()";
                } else {
                    msg = "()()";
                }
                BeetlException ex = new BeetlException(BeetlException.PARSER_NATIVE_ERROR, msg);
                ex.pushToken(this.getBTToken(methodCtx.getStart()));
                throw ex;
            }
            // 解析参数
            List<ExpressionContext> expCtxList = methodCtx.expression();
            Expression[] exp = this.parseExpressionCtxList(expCtxList);
            methodNode = new NativeMethodNode(method, exp);
            nativeList.add(methodNode);
        } else if (tree instanceof NativeArrayContext) {
            ExpressionContext expCtx = ((NativeArrayContext) tree).expression();
            Expression exp = this.parseExpress(expCtx);
            NativeArrayNode arrayNode = new NativeArrayNode(exp);
            nativeList.add(arrayNode);
        } else if (tree instanceof NativeVarRefChainContext) {
            List<TerminalNode> nodes = ((NativeVarRefChainContext) tree).Identifier();
            for (TerminalNode node : nodes) {
                NativeAtrributeNode attributeNode = new NativeAtrributeNode(node.getText());
                nativeList.add(attributeNode);
            }
        } else {
            // 其他节点,这段语法写的不好,造成解析困难,但先这样了
            continue;
        }
    }
    NativeNode[] chain = nativeList.toArray(new NativeNode[0]);
    if (clsNode != null) {
        nativeExp = new NativeCallExpression(clsNode, chain, this.getBTToken(ncc.start));
    } else {
        nativeExp = new NativeCallExpression(insNode, chain, this.getBTToken(ncc.start));
    }
    return nativeExp;
}
Also used : VarRef(org.beetl.core.statement.VarRef) NativeArrayNode(org.beetl.core.statement.nat.NativeArrayNode) BeetlException(org.beetl.core.exception.BeetlException) InstanceNode(org.beetl.core.statement.nat.InstanceNode) ArrayList(java.util.ArrayList) NativeNode(org.beetl.core.statement.nat.NativeNode) NativeAtrributeNode(org.beetl.core.statement.nat.NativeAtrributeNode) ClassNode(org.beetl.core.statement.nat.ClassNode) NativeVarRefChainContext(org.beetl.core.parser.BeetlParser.NativeVarRefChainContext) NativeArrayContext(org.beetl.core.parser.BeetlParser.NativeArrayContext) NativeCallExpression(org.beetl.core.statement.NativeCallExpression) StatementExpressionContext(org.beetl.core.parser.BeetlParser.StatementExpressionContext) ExpressionContext(org.beetl.core.parser.BeetlParser.ExpressionContext) ParExpressionContext(org.beetl.core.parser.BeetlParser.ParExpressionContext) ContentBodyExpression(org.beetl.core.statement.ContentBodyExpression) ArthExpression(org.beetl.core.statement.ArthExpression) JsonMapExpression(org.beetl.core.statement.JsonMapExpression) CompareExpression(org.beetl.core.statement.CompareExpression) FunctionExpression(org.beetl.core.statement.FunctionExpression) IncDecExpression(org.beetl.core.statement.IncDecExpression) Expression(org.beetl.core.statement.Expression) AndExpression(org.beetl.core.statement.AndExpression) StatementExpression(org.beetl.core.statement.StatementExpression) NativeCallExpression(org.beetl.core.statement.NativeCallExpression) NegExpression(org.beetl.core.statement.NegExpression) FormatExpression(org.beetl.core.statement.FormatExpression) TernaryExpression(org.beetl.core.statement.TernaryExpression) OrExpression(org.beetl.core.statement.OrExpression) JsonArrayExpression(org.beetl.core.statement.JsonArrayExpression) NotBooleanExpression(org.beetl.core.statement.NotBooleanExpression) TerminalNode(org.antlr.v4.runtime.tree.TerminalNode) NativeMethodNode(org.beetl.core.statement.nat.NativeMethodNode) ParseTree(org.antlr.v4.runtime.tree.ParseTree) NativeMethodContext(org.beetl.core.parser.BeetlParser.NativeMethodContext)

Example 2 with VarRef

use of org.beetl.core.statement.VarRef in project beetl2.0 by javamonkey.

the class AntlrProgramBuilder method parseForSt.

protected Statement parseForSt(ForStContext ctx) {
    pbCtx.enterBlock();
    // break,continue语句到此为止
    pbCtx.current.canStopContinueBreakFlag = true;
    StatementContext forContext = ctx.statement(0);
    StatementContext elseContext = null;
    ForControlContext forTypeCtx = ctx.forControl();
    if (forTypeCtx.forInControl() != null) {
        // for(a in list)...
        ForInControlContext forCtx = forTypeCtx.forInControl();
        VarDefineNode forVar = new VarDefineNode(this.getBTToken(forCtx.Identifier().getSymbol()));
        if (pbCtx.hasDefined(forVar.token.text) != null) {
            GrammarToken token = pbCtx.hasDefined(forVar.token.text);
            BeetlException ex = new BeetlException(BeetlException.VAR_ALREADY_DEFINED, "已经在第" + token.line + "行定义");
            ex.pushToken(forVar.token);
            throw ex;
        }
        VarDefineNode loopStatusVar = new VarDefineNode(new org.beetl.core.statement.GrammarToken(forCtx.Identifier().getSymbol().getText() + "LP", forCtx.Identifier().getSymbol().getLine(), 0));
        if (pbCtx.hasDefined(loopStatusVar.token.text) != null) {
            GrammarToken token = pbCtx.hasDefined(loopStatusVar.token.text);
            BeetlException ex = new BeetlException(BeetlException.VAR_ALREADY_DEFINED, "For循环隐含变量,已经在第" + token.line + "行定义");
            ex.pushToken(loopStatusVar.token);
            throw ex;
        }
        pbCtx.addVarAndPostion(forVar);
        pbCtx.addVarAndPostion(loopStatusVar);
        // //beetl.2 兼容
        // VarDefineNode indexVar = new VarDefineNode(new org.beetl.core.statement.GrammarToken(forCtx.Identifier()
        // .getSymbol().getText()
        // + "_index", forCtx.Identifier().getSymbol().getLine(), 0));
        // 
        // VarDefineNode sizeVar = new VarDefineNode(new org.beetl.core.statement.GrammarToken(forCtx.Identifier()
        // .getSymbol().getText()
        // + "_size", forCtx.Identifier().getSymbol().getLine(), 0));
        // 
        // pbCtx.addVarAndPostion(indexVar);
        // 
        // pbCtx.addVarAndPostion(sizeVar);
        Expression exp = this.parseExpress(forCtx.expression());
        Statement forPart = this.parseStatment(forContext);
        // elsefor
        Statement elseForPart = null;
        if (ctx.Elsefor() != null) {
            elseContext = ctx.statement(1);
            elseForPart = this.parseStatment(elseContext);
        }
        boolean hasSafe = false;
        if (exp instanceof VarRef) {
            VarRef varRef = (VarRef) exp;
            hasSafe = varRef.hasSafe;
        }
        if (pbCtx.isSafeOutput) {
            hasSafe = true;
        }
        ForStatement forStatement = new ForStatement(forVar, exp, hasSafe, forPart, elseForPart, forVar.token);
        this.checkGoto(forStatement);
        pbCtx.exitBlock();
        return forStatement;
    } else {
        GeneralForControlContext forCtx = forTypeCtx.generalForControl();
        Expression[] initExp = null;
        VarAssignStatementSeq varInitSeq = null;
        Expression condtion = null;
        Expression[] updateExp = null;
        if (forCtx.forInit() != null) {
            ForInitContext forInitCtx = forCtx.forInit();
            if (forInitCtx.Var() == null) {
                // for( a=1,b=3;
                List<ExpressionContext> list = forInitCtx.expressionList().expression();
                initExp = this.parseExpressionCtxList(list);
            } else {
                // for( var a=1,b=3;
                VarDeclareListContext varDeclare = forInitCtx.varDeclareList();
                varInitSeq = this.parseVarDeclareList(varDeclare);
            }
        }
        if (forCtx.expression() != null) {
            condtion = this.parseExpress(forCtx.expression());
        }
        if (forCtx.forUpdate() != null) {
            ForUpdateContext updateCtx = forCtx.forUpdate();
            List<ExpressionContext> list = updateCtx.expressionList().expression();
            updateExp = this.parseExpressionCtxList(list);
        }
        Statement forPart = this.parseStatment(forContext);
        // elsefor
        Statement elseForPart = null;
        if (ctx.Elsefor() != null) {
            elseContext = ctx.statement(1);
            elseForPart = this.parseStatment(elseContext);
        }
        String str = forTypeCtx.getText();
        GeneralForStatement forStat = new GeneralForStatement(varInitSeq, initExp, condtion, updateExp, forPart, elseForPart, this.getBTToken(str, forTypeCtx.start.getLine()));
        pbCtx.exitBlock();
        return forStat;
    }
}
Also used : VarRef(org.beetl.core.statement.VarRef) VarAssignStatementSeq(org.beetl.core.statement.VarAssignStatementSeq) BeetlException(org.beetl.core.exception.BeetlException) GrammarToken(org.beetl.core.statement.GrammarToken) ContinueStatement(org.beetl.core.statement.ContinueStatement) DirectiveStatement(org.beetl.core.statement.DirectiveStatement) WhileStatement(org.beetl.core.statement.WhileStatement) AjaxStatement(org.beetl.core.statement.AjaxStatement) BreakStatement(org.beetl.core.statement.BreakStatement) ReturnStatement(org.beetl.core.statement.ReturnStatement) TagVarBindingStatement(org.beetl.core.statement.TagVarBindingStatement) EndStatement(org.beetl.core.statement.EndStatement) VarAssignStatement(org.beetl.core.statement.VarAssignStatement) GeneralForStatement(org.beetl.core.statement.GeneralForStatement) Statement(org.beetl.core.statement.Statement) BlockStatement(org.beetl.core.statement.BlockStatement) IfStatement(org.beetl.core.statement.IfStatement) ForStatement(org.beetl.core.statement.ForStatement) SwitchStatement(org.beetl.core.statement.SwitchStatement) TagStatement(org.beetl.core.statement.TagStatement) VarRefAssignStatement(org.beetl.core.statement.VarRefAssignStatement) SelectStatement(org.beetl.core.statement.SelectStatement) TryCatchStatement(org.beetl.core.statement.TryCatchStatement) ForUpdateContext(org.beetl.core.parser.BeetlParser.ForUpdateContext) ForInitContext(org.beetl.core.parser.BeetlParser.ForInitContext) VarDeclareListContext(org.beetl.core.parser.BeetlParser.VarDeclareListContext) StatementContext(org.beetl.core.parser.BeetlParser.StatementContext) GeneralForControlContext(org.beetl.core.parser.BeetlParser.GeneralForControlContext) GeneralForControlContext(org.beetl.core.parser.BeetlParser.GeneralForControlContext) ForControlContext(org.beetl.core.parser.BeetlParser.ForControlContext) ContentBodyExpression(org.beetl.core.statement.ContentBodyExpression) ArthExpression(org.beetl.core.statement.ArthExpression) JsonMapExpression(org.beetl.core.statement.JsonMapExpression) CompareExpression(org.beetl.core.statement.CompareExpression) FunctionExpression(org.beetl.core.statement.FunctionExpression) IncDecExpression(org.beetl.core.statement.IncDecExpression) Expression(org.beetl.core.statement.Expression) AndExpression(org.beetl.core.statement.AndExpression) StatementExpression(org.beetl.core.statement.StatementExpression) NativeCallExpression(org.beetl.core.statement.NativeCallExpression) NegExpression(org.beetl.core.statement.NegExpression) FormatExpression(org.beetl.core.statement.FormatExpression) TernaryExpression(org.beetl.core.statement.TernaryExpression) OrExpression(org.beetl.core.statement.OrExpression) JsonArrayExpression(org.beetl.core.statement.JsonArrayExpression) NotBooleanExpression(org.beetl.core.statement.NotBooleanExpression) StatementExpressionContext(org.beetl.core.parser.BeetlParser.StatementExpressionContext) ExpressionContext(org.beetl.core.parser.BeetlParser.ExpressionContext) ParExpressionContext(org.beetl.core.parser.BeetlParser.ParExpressionContext) GeneralForStatement(org.beetl.core.statement.GeneralForStatement) VarDefineNode(org.beetl.core.statement.VarDefineNode) GeneralForStatement(org.beetl.core.statement.GeneralForStatement) ForStatement(org.beetl.core.statement.ForStatement) ForInControlContext(org.beetl.core.parser.BeetlParser.ForInControlContext) GrammarToken(org.beetl.core.statement.GrammarToken)

Example 3 with VarRef

use of org.beetl.core.statement.VarRef in project beetl2.0 by javamonkey.

the class AntlrProgramBuilder method parseVarRefInLeftExpression.

protected VarRef parseVarRefInLeftExpression(VarRefContext varRef) {
    Expression safeExp = null;
    Safe_outputContext soctx = varRef.safe_output();
    if (soctx != null) {
        throw new BeetlException(BeetlException.ERROR, "语法错,赋值表达式不能使用安全输出");
    }
    List<VarAttributeContext> list = varRef.varAttribute();
    VarAttribute[] vas = this.parseVarAttribute(list);
    // 变量属性,用来收集,暂时未用上
    if (vas.length > 0) {
        VarAttribute first = vas[0];
        if (!(first instanceof VarSquareAttribute || first instanceof VarVirtualAttribute)) {
            pbCtx.setVarAttr(varRef.Identifier().getText(), first.token.text);
        }
    }
    VarRef var = new VarRef(vas, false, null, this.getBTToken(varRef.getText(), varRef.Identifier().getSymbol().getLine()), this.getBTToken(varRef.Identifier().getSymbol()));
    pbCtx.setVarPosition(varRef.Identifier().getText(), var);
    return var;
}
Also used : VarVirtualAttribute(org.beetl.core.statement.VarVirtualAttribute) VarRef(org.beetl.core.statement.VarRef) BeetlException(org.beetl.core.exception.BeetlException) VarSquareAttribute(org.beetl.core.statement.VarSquareAttribute) VarAttributeContext(org.beetl.core.parser.BeetlParser.VarAttributeContext) Safe_outputContext(org.beetl.core.parser.BeetlParser.Safe_outputContext) ContentBodyExpression(org.beetl.core.statement.ContentBodyExpression) ArthExpression(org.beetl.core.statement.ArthExpression) JsonMapExpression(org.beetl.core.statement.JsonMapExpression) CompareExpression(org.beetl.core.statement.CompareExpression) FunctionExpression(org.beetl.core.statement.FunctionExpression) IncDecExpression(org.beetl.core.statement.IncDecExpression) Expression(org.beetl.core.statement.Expression) AndExpression(org.beetl.core.statement.AndExpression) StatementExpression(org.beetl.core.statement.StatementExpression) NativeCallExpression(org.beetl.core.statement.NativeCallExpression) NegExpression(org.beetl.core.statement.NegExpression) FormatExpression(org.beetl.core.statement.FormatExpression) TernaryExpression(org.beetl.core.statement.TernaryExpression) OrExpression(org.beetl.core.statement.OrExpression) JsonArrayExpression(org.beetl.core.statement.JsonArrayExpression) NotBooleanExpression(org.beetl.core.statement.NotBooleanExpression) VarAttribute(org.beetl.core.statement.VarAttribute)

Example 4 with VarRef

use of org.beetl.core.statement.VarRef in project beetl2.0 by javamonkey.

the class AntlrProgramBuilder method parseFunExp.

protected FunctionExpression parseFunExp(FunctionCallContext ctx) {
    ExpressionListContext expListCtx = ctx.expressionList();
    Expression[] exps = this.getExprssionList(expListCtx);
    List<VarAttributeContext> vaListCtx = ctx.varAttribute();
    Safe_outputContext soctx = ctx.safe_output();
    Expression safeExp = null;
    boolean hasSafe = false;
    if (soctx != null) {
        safeExp = this.parseSafeOutput(soctx);
        hasSafe = true;
    }
    if (this.pbCtx.isSafeOutput) {
        hasSafe = true;
    }
    VarAttribute[] vs = this.parseVarAttribute(vaListCtx);
    List<TerminalNode> idList = ctx.functionNs().Identifier();
    String nsId = this.getID(idList);
    GrammarToken btToken = new org.beetl.core.statement.GrammarToken(nsId, ctx.start.getLine(), 0);
    // 需要做些特殊处理的函数
    if (safeParameters.contains(nsId)) {
        if (exps.length != 0) {
            Expression one = exps[0];
            if (one instanceof VarRef) {
                // 强制为变量引用增加一个安全输出
                VarRef ref = (VarRef) one;
                if (!ref.hasSafe) {
                    ref.hasSafe = true;
                    ref.safe = null;
                }
            }
        }
    } else if (nsId.equals("has")) {
        if (exps.length != 0) {
            Expression one = exps[0];
            if (one instanceof VarRef) {
                // 强制为变量引用增加一个安全输出
                VarRef ref = (VarRef) one;
                String name = ref.token.text;
                Literal newExp = new Literal(name, ref.token);
                // 将变量引用转化为字符串
                exps[0] = newExp;
            }
        }
    } else if (nsId.equals("debug")) {
        // debug函数传递额外的行数
        Literal l = new Literal(btToken.line, btToken);
        Expression[] newExps = new Expression[exps.length + 2];
        System.arraycopy(exps, 0, newExps, 0, exps.length);
        String[] expStr = this.getExpressionString(expListCtx);
        newExps[newExps.length - 2] = new Literal(expStr, btToken);
        newExps[newExps.length - 1] = l;
        for (int i = 0; i < exps.length; i++) {
            if (!(exps[i] instanceof VarRef)) {
                expStr[i] = null;
            }
        }
        exps = newExps;
    // 可以通过配置查看是否支持debug,2.1再做
    } else if (nsId.equals("decode")) {
        Expression[] newExps = new Expression[exps.length];
        if (newExps.length >= 4) {
            newExps[0] = exps[0];
            newExps[1] = exps[1];
            for (int i = 2; i < exps.length; i++) {
                // 参数改成runtime 执行
                newExps[i] = new ExpressionRuntime(exps[i]);
            }
            exps = newExps;
        } else {
        // 错误的使用了decode函数,不管了,等后面报错吧
        }
    }
    FunctionExpression fe = new FunctionExpression(nsId, exps, vs, hasSafe, safeExp, btToken);
    return fe;
}
Also used : VarRef(org.beetl.core.statement.VarRef) VarAttributeContext(org.beetl.core.parser.BeetlParser.VarAttributeContext) ExpressionListContext(org.beetl.core.parser.BeetlParser.ExpressionListContext) FunctionExpression(org.beetl.core.statement.FunctionExpression) Safe_outputContext(org.beetl.core.parser.BeetlParser.Safe_outputContext) ContentBodyExpression(org.beetl.core.statement.ContentBodyExpression) ArthExpression(org.beetl.core.statement.ArthExpression) JsonMapExpression(org.beetl.core.statement.JsonMapExpression) CompareExpression(org.beetl.core.statement.CompareExpression) FunctionExpression(org.beetl.core.statement.FunctionExpression) IncDecExpression(org.beetl.core.statement.IncDecExpression) Expression(org.beetl.core.statement.Expression) AndExpression(org.beetl.core.statement.AndExpression) StatementExpression(org.beetl.core.statement.StatementExpression) NativeCallExpression(org.beetl.core.statement.NativeCallExpression) NegExpression(org.beetl.core.statement.NegExpression) FormatExpression(org.beetl.core.statement.FormatExpression) TernaryExpression(org.beetl.core.statement.TernaryExpression) OrExpression(org.beetl.core.statement.OrExpression) JsonArrayExpression(org.beetl.core.statement.JsonArrayExpression) NotBooleanExpression(org.beetl.core.statement.NotBooleanExpression) VarAttribute(org.beetl.core.statement.VarAttribute) Literal(org.beetl.core.statement.Literal) TerminalNode(org.antlr.v4.runtime.tree.TerminalNode) ExpressionRuntime(org.beetl.core.statement.ExpressionRuntime) GrammarToken(org.beetl.core.statement.GrammarToken)

Example 5 with VarRef

use of org.beetl.core.statement.VarRef in project beetl2.0 by javamonkey.

the class AntlrProgramBuilder method parseVarRefExpression.

protected Expression parseVarRefExpression(VarRefContext varRef) {
    Expression safeExp = null;
    Safe_outputContext soctx = varRef.safe_output();
    boolean hasSafe = false;
    if (soctx != null) {
        safeExp = this.parseSafeOutput(soctx);
        hasSafe = true;
    }
    if (this.pbCtx.isSafeOutput) {
        hasSafe = true;
    }
    List<VarAttributeContext> list = varRef.varAttribute();
    VarAttribute[] vas = this.parseVarAttribute(list);
    if (vas.length > 0) {
        VarAttribute first = vas[0];
        if (!(first instanceof VarSquareAttribute || first instanceof VarVirtualAttribute)) {
            pbCtx.setVarAttr(varRef.Identifier().getText(), first.token.text);
        }
    }
    VarRef var = new VarRef(vas, hasSafe, safeExp, this.getBTToken(varRef.getText(), varRef.Identifier().getSymbol().getLine()), this.getBTToken(varRef.Identifier().getSymbol()));
    pbCtx.setVarPosition(varRef.Identifier().getText(), var);
    return var;
}
Also used : VarVirtualAttribute(org.beetl.core.statement.VarVirtualAttribute) VarRef(org.beetl.core.statement.VarRef) VarSquareAttribute(org.beetl.core.statement.VarSquareAttribute) VarAttributeContext(org.beetl.core.parser.BeetlParser.VarAttributeContext) Safe_outputContext(org.beetl.core.parser.BeetlParser.Safe_outputContext) ContentBodyExpression(org.beetl.core.statement.ContentBodyExpression) ArthExpression(org.beetl.core.statement.ArthExpression) JsonMapExpression(org.beetl.core.statement.JsonMapExpression) CompareExpression(org.beetl.core.statement.CompareExpression) FunctionExpression(org.beetl.core.statement.FunctionExpression) IncDecExpression(org.beetl.core.statement.IncDecExpression) Expression(org.beetl.core.statement.Expression) AndExpression(org.beetl.core.statement.AndExpression) StatementExpression(org.beetl.core.statement.StatementExpression) NativeCallExpression(org.beetl.core.statement.NativeCallExpression) NegExpression(org.beetl.core.statement.NegExpression) FormatExpression(org.beetl.core.statement.FormatExpression) TernaryExpression(org.beetl.core.statement.TernaryExpression) OrExpression(org.beetl.core.statement.OrExpression) JsonArrayExpression(org.beetl.core.statement.JsonArrayExpression) NotBooleanExpression(org.beetl.core.statement.NotBooleanExpression) VarAttribute(org.beetl.core.statement.VarAttribute)

Aggregations

Expression (org.beetl.core.statement.Expression)8 VarRef (org.beetl.core.statement.VarRef)8 AndExpression (org.beetl.core.statement.AndExpression)7 ArthExpression (org.beetl.core.statement.ArthExpression)7 CompareExpression (org.beetl.core.statement.CompareExpression)7 ContentBodyExpression (org.beetl.core.statement.ContentBodyExpression)7 FormatExpression (org.beetl.core.statement.FormatExpression)7 FunctionExpression (org.beetl.core.statement.FunctionExpression)7 IncDecExpression (org.beetl.core.statement.IncDecExpression)7 JsonArrayExpression (org.beetl.core.statement.JsonArrayExpression)7 JsonMapExpression (org.beetl.core.statement.JsonMapExpression)7 NativeCallExpression (org.beetl.core.statement.NativeCallExpression)7 NegExpression (org.beetl.core.statement.NegExpression)7 NotBooleanExpression (org.beetl.core.statement.NotBooleanExpression)7 OrExpression (org.beetl.core.statement.OrExpression)7 StatementExpression (org.beetl.core.statement.StatementExpression)7 TernaryExpression (org.beetl.core.statement.TernaryExpression)7 BeetlException (org.beetl.core.exception.BeetlException)5 ExpressionContext (org.beetl.core.parser.BeetlParser.ExpressionContext)4 ParExpressionContext (org.beetl.core.parser.BeetlParser.ParExpressionContext)4