Search in sources :

Example 1 with VarRefAssignExpress

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

the class AntlrProgramBuilder method parseExpress.

protected Expression parseExpress(ExpressionContext ctx) {
    if (ctx == null)
        return null;
    if (ctx instanceof LiteralExpContext) {
        return parseLiteralExpress(((LiteralExpContext) ctx).literal());
    } else if (ctx instanceof VarRefExpContext) {
        return this.parseVarRefExpression(((VarRefExpContext) ctx).varRef());
    } else if (ctx instanceof CompareExpContext) {
        CompareExpression compare = parseCompareExpression((CompareExpContext) ctx);
        if (gt.conf.isStrict) {
            throw new MVCStrictException(compare.token);
        }
        return compare;
    } else if (ctx instanceof TernaryExpContext) {
        return this.parseTernaryExpression((TernaryExpContext) ctx);
    } else if (ctx instanceof MuldivmodExpContext) {
        ArthExpression arth = this.parseMuldivmodExpression((MuldivmodExpContext) ctx);
        if (gt.conf.isStrict) {
            throw new MVCStrictException(arth.token);
        }
        return arth;
    } else if (ctx instanceof AddminExpContext) {
        return this.parsePlusMins((AddminExpContext) ctx);
    } else if (ctx instanceof ParExpContext) {
        ParExpContext par = (ParExpContext) ctx;
        return this.parseExpress(par.expression());
    } else if (ctx instanceof FunctionCallExpContext) {
        FunctionCallExpContext fceCtx = (FunctionCallExpContext) ctx;
        FunctionExpression fun = parseFunExp(fceCtx.functionCall());
        if (gt.conf.isStrict) {
            throw new MVCStrictException(fun.token);
        }
        return fun;
    } else if (ctx instanceof JsonExpContext) {
        JsonContext jc = ((JsonExpContext) ctx).json();
        return this.parseJson(jc);
    } else if (ctx instanceof NativeCallExpContext) {
        NativeCallContext ncc = ((NativeCallExpContext) ctx).nativeCall();
        NativeCallExpression nativeCall = this.parseNativeCallExpression(ncc);
        if (!gt.conf.nativeCall || gt.conf.isStrict) {
            throw new NativeNotAllowedException(nativeCall.token);
        }
        return nativeCall;
    } else if (ctx instanceof AndExpContext) {
        AndExpContext andCtx = (AndExpContext) ctx;
        return this.parseAndExpression(andCtx);
    } else if (ctx instanceof OrExpContext) {
        OrExpContext orExp = (OrExpContext) ctx;
        return this.parseOrExpression(orExp);
    } else if (ctx instanceof NotExpContext) {
        NotExpContext notCtx = (NotExpContext) ctx;
        return this.parseNotExpression(notCtx);
    } else if (ctx instanceof NegExpContext) {
        NegExpContext negCtx = (NegExpContext) ctx;
        return this.parseNegExpression(negCtx);
    } else if (ctx instanceof IncDecOneContext) {
        IncDecOneContext oneCtx = (IncDecOneContext) ctx;
        IncDecExpression exp = this.parseIncDecOneContext(oneCtx);
        if (gt.conf.isStrict) {
            throw new NativeNotAllowedException(exp.token);
        }
        return exp;
    } else if (ctx instanceof OneIncDecContext) {
        OneIncDecContext oneCtx = (OneIncDecContext) ctx;
        IncDecExpression exp = this.parseOneIncDecContext(oneCtx);
        if (gt.conf.isStrict) {
            throw new NativeNotAllowedException(exp.token);
        }
        return exp;
    } else if (ctx instanceof AssignGeneralInExpContext) {
        AssignGeneralInExpContext agc = (AssignGeneralInExpContext) ctx;
        VarRefAssignExpress vas = this.parseAssingInExp(agc);
        return vas;
    } else {
        throw new UnsupportedOperationException();
    }
}
Also used : CompareExpContext(org.beetl.core.parser.BeetlParser.CompareExpContext) NotExpContext(org.beetl.core.parser.BeetlParser.NotExpContext) NativeCallExpContext(org.beetl.core.parser.BeetlParser.NativeCallExpContext) OrExpContext(org.beetl.core.parser.BeetlParser.OrExpContext) CompareExpression(org.beetl.core.statement.CompareExpression) FunctionCallExpContext(org.beetl.core.parser.BeetlParser.FunctionCallExpContext) OneIncDecContext(org.beetl.core.parser.BeetlParser.OneIncDecContext) FunctionExpression(org.beetl.core.statement.FunctionExpression) VarRefExpContext(org.beetl.core.parser.BeetlParser.VarRefExpContext) NativeCallContext(org.beetl.core.parser.BeetlParser.NativeCallContext) NativeNotAllowedException(org.beetl.core.exception.NativeNotAllowedException) TernaryExpContext(org.beetl.core.parser.BeetlParser.TernaryExpContext) IncDecExpression(org.beetl.core.statement.IncDecExpression) AssignGeneralInExpContext(org.beetl.core.parser.BeetlParser.AssignGeneralInExpContext) MVCStrictException(org.beetl.core.exception.MVCStrictException) ParExpContext(org.beetl.core.parser.BeetlParser.ParExpContext) ArthExpression(org.beetl.core.statement.ArthExpression) LiteralExpContext(org.beetl.core.parser.BeetlParser.LiteralExpContext) MuldivmodExpContext(org.beetl.core.parser.BeetlParser.MuldivmodExpContext) AndExpContext(org.beetl.core.parser.BeetlParser.AndExpContext) JsonExpContext(org.beetl.core.parser.BeetlParser.JsonExpContext) VarRefAssignExpress(org.beetl.core.statement.VarRefAssignExpress) NativeCallExpression(org.beetl.core.statement.NativeCallExpression) JsonContext(org.beetl.core.parser.BeetlParser.JsonContext) NegExpContext(org.beetl.core.parser.BeetlParser.NegExpContext) AddminExpContext(org.beetl.core.parser.BeetlParser.AddminExpContext) IncDecOneContext(org.beetl.core.parser.BeetlParser.IncDecOneContext)

Example 2 with VarRefAssignExpress

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

the class AntlrProgramBuilder method parseAssingInExp.

/**
 *  赋值变量
 * @param agc
 * @return
 */
protected VarRefAssignExpress parseAssingInExp(AssignGeneralInExpContext agc) {
    VarRefAssignExpress vas = null;
    ExpressionContext expCtx = agc.generalAssignExp().expression();
    Expression exp = parseExpress(expCtx);
    VarRefContext varRefCtx = agc.generalAssignExp().varRef();
    VarRef ref = this.parseVarRefInLeftExpression(varRefCtx);
    vas = new VarRefAssignExpress(exp, ref);
    if (ref.attributes.length == 0) {
        // 变量定义:
        Token token = varRefCtx.Identifier().getSymbol();
        if (pbCtx.hasDefined(token.getText()) != null) {
            registerVar(vas);
            return vas;
        } else {
            BeetlException ex = new BeetlException(BeetlException.VAR_NOT_DEFINED);
            ex.pushToken(this.getBTToken(token));
            throw ex;
        }
    }
    return vas;
}
Also used : VarRef(org.beetl.core.statement.VarRef) BeetlException(org.beetl.core.exception.BeetlException) 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) VarRefContext(org.beetl.core.parser.BeetlParser.VarRefContext) Token(org.antlr.v4.runtime.Token) GrammarToken(org.beetl.core.statement.GrammarToken) VarRefAssignExpress(org.beetl.core.statement.VarRefAssignExpress)

Aggregations

ArthExpression (org.beetl.core.statement.ArthExpression)2 CompareExpression (org.beetl.core.statement.CompareExpression)2 FunctionExpression (org.beetl.core.statement.FunctionExpression)2 IncDecExpression (org.beetl.core.statement.IncDecExpression)2 NativeCallExpression (org.beetl.core.statement.NativeCallExpression)2 VarRefAssignExpress (org.beetl.core.statement.VarRefAssignExpress)2 Token (org.antlr.v4.runtime.Token)1 BeetlException (org.beetl.core.exception.BeetlException)1 MVCStrictException (org.beetl.core.exception.MVCStrictException)1 NativeNotAllowedException (org.beetl.core.exception.NativeNotAllowedException)1 AddminExpContext (org.beetl.core.parser.BeetlParser.AddminExpContext)1 AndExpContext (org.beetl.core.parser.BeetlParser.AndExpContext)1 AssignGeneralInExpContext (org.beetl.core.parser.BeetlParser.AssignGeneralInExpContext)1 CompareExpContext (org.beetl.core.parser.BeetlParser.CompareExpContext)1 ExpressionContext (org.beetl.core.parser.BeetlParser.ExpressionContext)1 FunctionCallExpContext (org.beetl.core.parser.BeetlParser.FunctionCallExpContext)1 IncDecOneContext (org.beetl.core.parser.BeetlParser.IncDecOneContext)1 JsonContext (org.beetl.core.parser.BeetlParser.JsonContext)1 JsonExpContext (org.beetl.core.parser.BeetlParser.JsonExpContext)1 LiteralExpContext (org.beetl.core.parser.BeetlParser.LiteralExpContext)1