All Implemented Interfaces:
FromSourceLocation, ToNode, TypeCheck

public final class Literal extends Expression
Literals allow rules and properties to define arbitrarily nested JSON structures (e.g.for properties)

They support template strings, but _do not_ support template objects since that creates ambiguity. Templates are a basic example of literals–literal strings. Literals can also be booleans, objects, integers or tuples.

  • Method Details

    • tuple

      public static Literal tuple(List<Literal> values)
      Constructs a tuple literal of values.
      Parameters:
      values - the values.
      Returns:
      the tuple literal.
    • record

      public static Literal record(Map<Identifier,Literal> record)
      Constructs a record literal of values.
      Parameters:
      record - a map of values to be converted to a record.
      Returns:
      the record literal.
    • string

      public static Literal string(Template value)
      Constructs a string literal from a Template value.
      Parameters:
      value - the template value.
      Returns:
      the string literal.
    • integer

      public static Literal integer(int value)
      Constructs an integer literal from an integer value.
      Parameters:
      value - the integer value.
      Returns:
      the integer literal.
    • bool

      public static Literal bool(boolean value)
      Constructs a bool literal from a boolean value.
      Parameters:
      value - the boolean value.
      Returns:
      the bool literal.
    • fromNode

      public static Literal fromNode(Node node)
      Constructs a literal from a Node based on the Node's type.
      Parameters:
      node - a node to construct as a literal.
      Returns:
      the literal representation of the node.
    • expectLiteralString

      public String expectLiteralString()
      Attempts to convert the literal to a String. Otherwise throws an exception.
      Returns:
      the literal as a string.
    • asBool

      public Optional<Boolean> asBool()
      Attempts to convert the literal to a Boolean if possible. Otherwise, returns an empty optional.
      Returns:
      an optional boolean.
    • asString

      public Optional<Template> asString()
      Attempts to convert the literal to a Template if possible. Otherwise, returns an empty optional.
      Returns:
      an optional boolean.
    • asRecord

      public Optional<Map<Identifier,Literal>> asRecord()
      Attempts to convert the literal to a map of Identifier to Literal. Otherwise, returns an empty optional.
      Returns:
      an optional map.
    • asTuple

      public Optional<List<Literal>> asTuple()
      Attempts to convert the literal to a list of Literal values. Otherwise, returns an empty optional.
      Returns:
      the optional list.
    • asInteger

      public Optional<Integer> asInteger()
      Attempts to convert the literal to an Literal.Integer. Otherwise, returns an empty optional.
      Returns:
      the optional integer.
    • accept

      public <T> T accept(Literal.Vistor<T> visitor)
      Invokes the provided Literal.Vistor.
      Type Parameters:
      T - the visitor return type.
      Parameters:
      visitor - the visitor.
      Returns:
      the return value of the vistor.
    • toString

      public String toString()
      Returns the string representation of the literal.
      Overrides:
      toString in class Object
      Returns:
      the string representation.
    • getSourceLocation

      public SourceLocation getSourceLocation()
      Description copied from interface: FromSourceLocation
      Gets the source location of a value.
      Specified by:
      getSourceLocation in interface FromSourceLocation
      Overrides:
      getSourceLocation in class MandatorySourceLocation
      Returns:
      Returns the source location of the value.
    • accept

      public <R> R accept(ExpressionVisitor<R> visitor)
      Description copied from class: Expression
      Invoke the ExpressionVisitor functions for this expression.
      Specified by:
      accept in class Expression
      Type Parameters:
      R - the visitor return type.
      Parameters:
      visitor - the visitor to be invoked.
      Returns:
      the return value of the visitor.
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in class Expression
    • equals

      public boolean equals(Object o)
      Specified by:
      equals in class Expression
    • typeCheckLocal

      public Type typeCheckLocal(Scope<Type> scope)
      Specified by:
      typeCheckLocal in class Expression
    • evaluate

      public Value evaluate(RuleEvaluator evaluator)
      Parameters:
      evaluator - the rule-set evaluator.
      Returns:
      the resulting value.
    • toNode

      public Node toNode()
      Description copied from interface: ToNode
      Converts a value to a Node.
      Returns:
      Returns the creates Node.