All Implemented Interfaces:
FromSourceLocation, ToNode, TypeCheck, ToCondition, ToExpression
Direct Known Subclasses:
BooleanLiteral, IntegerLiteral, RecordLiteral, StringLiteral, TupleLiteral

public abstract 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

    • booleanLiteral

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

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

      public static Literal recordLiteral(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.
    • stringLiteral

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

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

      public Optional<Boolean> asBooleanLiteral()
    • asIntegerLiteral

      public Optional<Integer> asIntegerLiteral()
    • asRecordLiteral

      public Optional<Map<Identifier,Literal>> asRecordLiteral()
    • asStringLiteral

      public Optional<Template> asStringLiteral()
    • asTupleLiteral

      public Optional<List<Literal>> asTupleLiteral()
    • 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.
    • accept

      public abstract <T> T accept(LiteralVisitor<T> visitor)
    • 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.
    • 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.