Search in sources :

Example 6 with BodyBase

use of lucee.transformer.bytecode.BodyBase in project Lucee by lucee.

the class AbstrCFMLScriptTransformer method whileStatement.

/**
 * Liest ein while Statement ein.
 * <br />
 * EBNF:<br />
 * <code>spaces condition spaces ")" spaces block;</code>
 * @return while Statement
 * @throws TemplateException
 */
private final While whileStatement(ExprData data) throws TemplateException {
    int pos = data.srcCode.getPos();
    // id
    String id = variableDec(data, false);
    if (id == null) {
        data.srcCode.setPos(pos);
        return null;
    }
    if (id.equalsIgnoreCase("while")) {
        id = null;
        data.srcCode.removeSpace();
        if (!data.srcCode.forwardIfCurrent('(')) {
            data.srcCode.setPos(pos);
            return null;
        }
    } else {
        data.srcCode.removeSpace();
        if (!data.srcCode.forwardIfCurrent(':')) {
            data.srcCode.setPos(pos);
            return null;
        }
        data.srcCode.removeSpace();
        if (!data.srcCode.forwardIfCurrent("while", '(')) {
            data.srcCode.setPos(pos);
            return null;
        }
    }
    Position line = data.srcCode.getPosition();
    Body body = new BodyBase(data.factory);
    While whil = new While(condition(data), body, line, null, id);
    if (!data.srcCode.forwardIfCurrent(')'))
        throw new TemplateException(data.srcCode, "while statement must end with a [)]");
    statement(data, body, CTX_WHILE);
    whil.setEnd(data.srcCode.getPosition());
    return whil;
}
Also used : Position(lucee.transformer.Position) TemplateException(lucee.runtime.exp.TemplateException) DoWhile(lucee.transformer.bytecode.statement.DoWhile) While(lucee.transformer.bytecode.statement.While) Body(lucee.transformer.bytecode.Body) ScriptBody(lucee.transformer.bytecode.ScriptBody) FunctionBody(lucee.transformer.bytecode.FunctionBody) BodyBase(lucee.transformer.bytecode.BodyBase)

Example 7 with BodyBase

use of lucee.transformer.bytecode.BodyBase in project Lucee by lucee.

the class AbstrCFMLScriptTransformer method defaultStatement.

/**
 * Liest ein default Statement ein
 * @return default Statement
 * @throws TemplateException
 */
private final boolean defaultStatement(ExprData data, Switch swit) throws TemplateException {
    if (!data.srcCode.forwardIfCurrent("default", ':'))
        return false;
    // int line=data.srcCode.getLine();
    Body body = new BodyBase(data.factory);
    swit.setDefaultCase(body);
    switchBlock(data, body);
    return true;
}
Also used : Body(lucee.transformer.bytecode.Body) ScriptBody(lucee.transformer.bytecode.ScriptBody) FunctionBody(lucee.transformer.bytecode.FunctionBody) BodyBase(lucee.transformer.bytecode.BodyBase)

Example 8 with BodyBase

use of lucee.transformer.bytecode.BodyBase in project Lucee by lucee.

the class AbstrCFMLScriptTransformer method finallyStatement.

private final boolean finallyStatement(ExprData data, TryCatchFinally tcf) throws TemplateException {
    if (!data.srcCode.forwardIfCurrent("finally", '{') && !data.srcCode.forwardIfCurrent("finally ") && !data.srcCode.forwardIfCurrent("finally", '/'))
        return false;
    // start (
    data.srcCode.previous();
    // ex block
    Body body = new BodyBase(data.factory);
    tcf.setFinally(body, data.srcCode.getPosition());
    statement(data, body, CTX_FINALLY);
    return true;
}
Also used : Body(lucee.transformer.bytecode.Body) ScriptBody(lucee.transformer.bytecode.ScriptBody) FunctionBody(lucee.transformer.bytecode.FunctionBody) BodyBase(lucee.transformer.bytecode.BodyBase)

Example 9 with BodyBase

use of lucee.transformer.bytecode.BodyBase in project Lucee by lucee.

the class AbstrCFMLScriptTransformer method createStaticTag.

public static TagOther createStaticTag(ExprData data, Position start) throws TemplateException {
    TagLibTag tlt = CFMLTransformer.getTLT(data.srcCode, "static", data.config.getIdentification());
    BodyBase body = new BodyBase(data.factory);
    TagOther tag = new TagOther(data.factory, start, data.srcCode.getPosition());
    tag.setTagLibTag(tlt);
    tag.setBody(body);
    data.ep.add(tlt, tag, data.flibs, data.srcCode);
    return tag;
}
Also used : TagLibTag(lucee.transformer.library.tag.TagLibTag) TagOther(lucee.transformer.bytecode.statement.tag.TagOther) BodyBase(lucee.transformer.bytecode.BodyBase)

Example 10 with BodyBase

use of lucee.transformer.bytecode.BodyBase in project Lucee by lucee.

the class AbstrCFMLScriptTransformer method elseifStatement.

/**
 * Liest ein else if Statement ein.
 * <br />
 * EBNF:<br />
 * <code>spaces condition spaces ")" spaces block;</code>
 * @return else if Statement
 * @throws TemplateException
 */
private final boolean elseifStatement(ExprData data, Condition cont) throws TemplateException {
    int pos = data.srcCode.getPos();
    if (!data.srcCode.forwardIfCurrent("else"))
        return false;
    comments(data);
    if (!data.srcCode.forwardIfCurrent("if", '(')) {
        data.srcCode.setPos(pos);
        return false;
    }
    Position line = data.srcCode.getPosition();
    Body body = new BodyBase(data.factory);
    Pair pair = cont.addElseIf(condition(data), body, line, null);
    if (!data.srcCode.forwardIfCurrent(')'))
        throw new TemplateException(data.srcCode, "else if statement must end with a [)]");
    // ex block
    statement(data, body, CTX_ELSE_IF);
    pair.end = data.srcCode.getPosition();
    return true;
}
Also used : Position(lucee.transformer.Position) TemplateException(lucee.runtime.exp.TemplateException) Body(lucee.transformer.bytecode.Body) ScriptBody(lucee.transformer.bytecode.ScriptBody) FunctionBody(lucee.transformer.bytecode.FunctionBody) BodyBase(lucee.transformer.bytecode.BodyBase) Pair(lucee.transformer.bytecode.statement.Condition.Pair)

Aggregations

BodyBase (lucee.transformer.bytecode.BodyBase)19 Body (lucee.transformer.bytecode.Body)17 FunctionBody (lucee.transformer.bytecode.FunctionBody)13 ScriptBody (lucee.transformer.bytecode.ScriptBody)13 Position (lucee.transformer.Position)10 TemplateException (lucee.runtime.exp.TemplateException)8 Expression (lucee.transformer.expression.Expression)7 TagLibTag (lucee.transformer.library.tag.TagLibTag)6 FunctionAsExpression (lucee.transformer.bytecode.expression.FunctionAsExpression)4 Attribute (lucee.transformer.bytecode.statement.tag.Attribute)4 Tag (lucee.transformer.bytecode.statement.tag.Tag)4 LitString (lucee.transformer.expression.literal.LitString)4 ArrayList (java.util.ArrayList)3 TransformerException (lucee.transformer.TransformerException)3 Statement (lucee.transformer.bytecode.Statement)3 TagLib (lucee.transformer.library.tag.TagLib)3 Iterator (java.util.Iterator)2 RefBoolean (lucee.commons.lang.types.RefBoolean)2 RefBooleanImpl (lucee.commons.lang.types.RefBooleanImpl)2 BytecodeContext (lucee.transformer.bytecode.BytecodeContext)2