public interface Expression
| Modifier and Type | Method and Description |
|---|---|
default <T> T |
accumulate(java.util.function.BiFunction<T,Expression,T> accumulator,
T initialValue)
Calls the given accumulator in a pre-order (this, treeWalk[left child], treeWalk[right child]) fashion.
|
default boolean |
containsExprMatchingPredicate(java.util.function.Predicate<Expression> predicate)
Checks if an expression fulfilling the given predicate is contained in this expression.
|
default boolean |
containsVariables()
Returns true if and only if this expression contains variables.
|
java.lang.Object |
evaluate()
Evaluates the expression.
|
java.lang.Object |
evaluate(Substitution substitutions)
Evaluates the expression after substituting contained variables.
|
void |
forEachChild(java.util.function.Consumer<Expression> action)
Calls action on every (direct) child of this expression.
|
default java.util.Set<VariableExpression> |
getVariables()
Returns the set of variables the value of this expression depends on.
|
default Expression |
substitute(java.lang.String variable,
Expression substitution) |
Expression |
substitute(Substitution substitutions)
Substitutes variables using the given function.
|
default Expression |
substitute(VariableExpression variable,
Expression substitution)
Substitutes a specific variable with the given expression.
|
default void |
treeWalk(java.util.function.Consumer<Expression> visitor)
Calls the given visitor in a pre-order (this, treeWalk[left child], treeWalk[right child]) fashion.
|
default Expression substitute(java.lang.String variable, Expression substitution)
default Expression substitute(VariableExpression variable, Expression substitution)
variable - the variable to replacesubstitution - the expression to substituteExpression substitute(Substitution substitutions)
substitutions - a function mapping variable expressions to their replacement expressionsjava.lang.Object evaluate()
java.lang.Object evaluate(Substitution substitutions)
substitutions - a function mapping variables to expressions that can be evaluateddefault java.util.Set<VariableExpression> getVariables()
default boolean containsVariables()
This means that you wouldn't be able to evaluate the expression without substituting the variable with another expression that can be evaluated.
default void treeWalk(java.util.function.Consumer<Expression> visitor)
Usual implementation (for binary nodes) is:
public void treeWalk(Consumer visitor) {
visitor.accept(this);
forEachChild(Expression::treeWalk)
}
By contract, implementing objects should at least regard dependent variables as child variable expressions.void forEachChild(java.util.function.Consumer<Expression> action)
GroupOpExpr, this would call action on the left- and right-hand-side and then return.default <T> T accumulate(java.util.function.BiFunction<T,Expression,T> accumulator, T initialValue)
One can view the implementation as follows:
v = initialValue v = accumulator(v, expr) v = accumulator(v, [left subtree]) // recursive call v = accumulator(v, [right subtree]) // recursive call return v
default boolean containsExprMatchingPredicate(java.util.function.Predicate<Expression> predicate)