public abstract class ExprFunction0 extends ExprFunction
CMP_EQUAL, CMP_GREATER, CMP_INDETERMINATE, CMP_LESS, CMP_UNEQUAL, NONE
Modifier and Type | Method and Description |
---|---|
Expr |
apply(ExprTransform transform) |
Expr |
applyNodeTransform(NodeTransform transform)
Rewrite, applying a node->node transformation
|
abstract Expr |
copy() |
Expr |
copySubstitute(Binding binding)
Deep copy with substitution
|
NodeValue |
eval(Binding binding,
FunctionEnv env)
Evaluate this expression against the binding
|
abstract NodeValue |
eval(FunctionEnv env) |
Expr |
getArg(int i) |
int |
hashCode()
Expr are used in both syntax and algebra. |
int |
numArgs() |
void |
visit(ExprVisitor visitor) |
equals, getArgs, getFunction, getFunctionIRI, getFunctionName, getFunctionPrintName, getFunctionSymbol, getOpName, isFunction
asVar, deepCopy, equals, equalsBySyntax, getConstant, getExpr, getExprVar, getGraphPattern, getVarName, getVarNamesMentioned, getVarsMentioned, isConstant, isExpr, isGraphPattern, isSatisfied, isVariable, toString, varNamesMentioned, varsMentioned
public Expr getArg(int i)
getArg
in class ExprFunction
public int hashCode()
Expr
Expr
are used in both syntax and algebra. There is no syntax
to algebra translation step because the parser uses operator precedence
to build the right evaluation structure directly.
The exceptions to this are the NOT EXISTS
and
EXISTS
expressions which involve a query pattern. As a
result there are different ways in syntax to produce the same algebra
form.
Two Expr
are considered equal if they are equal as algebra
expressions. hashCode
and equals
must implement
that.
There is also equalsBySyntax
. Because two different syntax
forms can yield the same algebra, but two different algebra forms
must be different syntax, equalsBySyntax
implies equals
(by alegbra).
Hence, different hashCode
=> not equalsBySyntax
.
hashCode
in interface Expr
hashCode
in class ExprFunction
public int numArgs()
numArgs
in class ExprFunction
public final NodeValue eval(Binding binding, FunctionEnv env)
Expr
public abstract NodeValue eval(FunctionEnv env)
public final Expr applyNodeTransform(NodeTransform transform)
Expr
applyNodeTransform
in interface Expr
applyNodeTransform
in class ExprNode
public abstract Expr copy()
public final Expr copySubstitute(Binding binding)
Expr
copySubstitute
in interface Expr
copySubstitute
in class ExprNode
public void visit(ExprVisitor visitor)
public Expr apply(ExprTransform transform)
Licenced under the Apache License, Version 2.0