package railo.transformer.bytecode.expression;
import org.objectweb.asm.Type;
import railo.runtime.exp.TemplateException;
import railo.transformer.bytecode.BytecodeContext;
import railo.transformer.bytecode.BytecodeException;
import railo.transformer.bytecode.Position;
/**
* A Expression (Operation, Literal aso.)
*/
public interface Expression {
/**
* Field <code>MODE_REF</code>
*/
public static final int MODE_REF=0;
/**
* Field <code>MODE_VALUE</code>
*/
public static final int MODE_VALUE=1;
/**
* write out the stament to adapter
* @param adapter
* @param mode
* @return return Type of expression
* @throws TemplateException
*/
public Type writeOut(BytecodeContext bc, int mode) throws BytecodeException;
public Position getStart();
public Position getEnd();
public void setStart(Position start);
public void setEnd(Position end);
}