org.objectweb.medor.expression.api
Interface Expression

All Superinterfaces:
org.objectweb.medor.clone.api.Cloneable, java.lang.Cloneable, java.io.Serializable
All Known Subinterfaces:
BinaryArithmeticOperator, BinaryLogicalOperator, BinaryOperator, CalculatedParameterOperand, Comparator, Operand, Operator, ParameterOperand, UnaryArithmeticOperator, UnaryLogicalOperator, UnaryOperator, VariableOperand
All Known Implementing Classes:
BasicBinaryArithmeticOperator, BasicBinaryLogicalOperator, BasicBinaryOperator, BasicComparator, BasicExpression, BasicOperand, BasicOperator, BasicParameterOperand, BasicUnaryArithmeticOperator, BasicUnaryLogicalOperator, BasicUnaryOperator, BasicVariableOperand, Concat, FirstLocate, Length, Like, Sqrt, StringComparatorParameterOperand

public interface Expression
extends java.io.Serializable, org.objectweb.medor.clone.api.Cloneable

This interface represents an arithmetic and/or a boolean expression.

It represents operations over operands. It is represented by a tree where nodes represents operations and leafs operands. An expression have two states:

Not compiled in wich case it can be modified.

Compiled, this state is possible after compilation method CompileExpression().

Then it will be evaluable and its structure cannot be further modified.

Here is a simple example:
Expression exp = ...
exp.CompileExpression();
Operand op = exp.getResult();
exp.evaluate(......);
System.out.println("the result = "+ op.getInt());


Method Summary
 Operand compileExpression()
          Checks the semantic integrity of an expression.
 Operand evaluate(ParameterOperand[] values, java.lang.Object o)
          It evaluates the expression tree and puts the result into the operand result.
 org.objectweb.jorm.type.api.PType getType()
          It gets the result type of this expression
 
Methods inherited from interface org.objectweb.medor.clone.api.Cloneable
clone
 

Method Detail

getType

public org.objectweb.jorm.type.api.PType getType()
It gets the result type of this expression

Returns:
a PType object

evaluate

public Operand evaluate(ParameterOperand[] values,
                        java.lang.Object o)
                 throws ExpressionException
It evaluates the expression tree and puts the result into the operand result.

Parameters:
values - a list of ParameterOperand
o - the input Object from which values are taken for the evaluation
Returns:
an Operand containing the result of the evaluation
Throws:
java.lang.IllegalStateException - if this expression is not compiled.
ExpressionException

compileExpression

public Operand compileExpression()
                          throws ExpressionException,
                                 MalformedExpressionException
Checks the semantic integrity of an expression. It checks that all types are compatible and prepare the expression to be evaluable.It also creates buffers where stores the result. Notes that when evaluating there is no creation of new objects. This method change the state of this expression object, it will be evaluable and not modifiable.

Throws:
TypingException - when incompatible types error occures.
MalformedExpressionException - if syntax error
ExpressionException