package com.bigdata.bop;
import java.io.Serializable;
/**
* An expression which may be evaluated to a value.
*
* @author mrpersonick
*/
public interface IValueExpression<E> extends BOp, Serializable {
/**
* Return the <i>as bound</i> value of the variable, constant, or
* expression. The <i>as bound</i> value of an {@link IConstant} is the
* contant's value. The <i>as bound</i> value of an {@link IVariable} is the
* bound value in the given {@link IBindingSet} -or- <code>null</code> if
* the variable is not bound in the {@link IBindingSet}.
*
* @param bindingSet
* The binding set.
*
* @return The as bound value of the constant, variable, or expression.
*
* @throws IllegalArgumentException
* if this is an {@link IVariable} and the <i>bindingSet</i> is
* <code>null</code>.
*/
E get(IBindingSet bindingSet);
/**
* A string representation of a recursive structure with pretty-print indent.
* @param indent
* @return
*/
String toString(int indent);
}