Class ExprFunction0

All Implemented Interfaces:
Expr
Direct Known Subclasses:
E_Random, E_StrUUID, E_UUID, E_Version, ExprSystem

public abstract class ExprFunction0 extends ExprFunction
An expression that is constant (does not depend on evaluating a sub expression).
  • Method Details

    • getArg

      public Expr getArg(int i)
      Specified by:
      getArg in class ExprFunction
    • hashCode

      public int hashCode()
      Description copied from interface: 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 algebra).

      Hence, different hashCode => not equalsBySyntax.

      Specified by:
      hashCode in interface Expr
      Overrides:
      hashCode in class ExprFunction
    • numArgs

      public int numArgs()
      Specified by:
      numArgs in class ExprFunction
    • eval

      public final NodeValue eval(Binding binding, FunctionEnv env)
      Description copied from interface: Expr
      Evaluate this expression against the binding
      Specified by:
      eval in interface Expr
      Specified by:
      eval in class ExprNode
    • eval

      public abstract NodeValue eval(FunctionEnv env)
    • applyNodeTransform

      public final Expr applyNodeTransform(NodeTransform transform)
      Description copied from interface: Expr
      Rewrite, applying a node->node transformation
      Specified by:
      applyNodeTransform in interface Expr
      Specified by:
      applyNodeTransform in class ExprNode
    • copy

      public abstract Expr copy()
    • copySubstitute

      public final Expr copySubstitute(Binding binding)
      Description copied from interface: Expr
      Deep copy with substitution
      Specified by:
      copySubstitute in interface Expr
      Specified by:
      copySubstitute in class ExprNode
    • visit

      public void visit(ExprVisitor visitor)
    • apply

      public Expr apply(ExprTransform transform)