Class Literal
- java.lang.Object
-
- software.amazon.smithy.rulesengine.language.syntax.SyntaxElement
-
- software.amazon.smithy.rulesengine.language.syntax.expressions.Expression
-
- software.amazon.smithy.rulesengine.language.syntax.expressions.literal.Literal
-
- 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.
Template
s are a basic example of literals–literal strings. Literals can also be booleans, objects, integers or tuples.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description <R> R
accept(ExpressionVisitor<R> visitor)
Invoke theExpressionVisitor
functions for this expression.abstract <T> T
accept(LiteralVisitor<T> visitor)
java.util.Optional<java.lang.Boolean>
asBooleanLiteral()
java.util.Optional<java.lang.Integer>
asIntegerLiteral()
java.util.Optional<java.util.Map<Identifier,Literal>>
asRecordLiteral()
java.util.Optional<Template>
asStringLiteral()
java.util.Optional<java.util.List<Literal>>
asTupleLiteral()
static Literal
booleanLiteral(boolean value)
Constructs a bool literal from a boolean value.Value
evaluate(RuleEvaluator evaluator)
static Literal
fromNode(Node node)
Constructs a literal from aNode
based on the Node's type.static Literal
integerLiteral(int value)
Constructs an integer literal from an integer value.static Literal
recordLiteral(java.util.Map<Identifier,Literal> record)
Constructs a record literal of values.static Literal
stringLiteral(Template value)
Constructs a string literal from aTemplate
value.static Literal
tupleLiteral(java.util.List<Literal> values)
Constructs a tuple literal of values.Type
typeCheckLocal(Scope<Type> scope)
-
Methods inherited from class software.amazon.smithy.rulesengine.language.syntax.expressions.Expression
equals, getLiteral, getReference, getSourceLocation, hashCode, of, of, of, parseShortform, toConditionBuilder, toExpression, type, typeCheck
-
Methods inherited from class software.amazon.smithy.rulesengine.language.syntax.SyntaxElement
booleanEqual, getAttr, getAttr, isSet, isValidHostLabel, not, parseUrl, stringEqual, substring, template
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface software.amazon.smithy.rulesengine.language.syntax.ToCondition
toCondition, toCondition
-
-
-
-
Method Detail
-
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(java.util.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 aTemplate
value.- Parameters:
value
- the template value.- Returns:
- the string literal.
-
tupleLiteral
public static Literal tupleLiteral(java.util.List<Literal> values)
Constructs a tuple literal of values.- Parameters:
values
- the values.- Returns:
- the tuple literal.
-
asBooleanLiteral
public java.util.Optional<java.lang.Boolean> asBooleanLiteral()
-
asIntegerLiteral
public java.util.Optional<java.lang.Integer> asIntegerLiteral()
-
asRecordLiteral
public java.util.Optional<java.util.Map<Identifier,Literal>> asRecordLiteral()
-
asStringLiteral
public java.util.Optional<Template> asStringLiteral()
-
asTupleLiteral
public java.util.Optional<java.util.List<Literal>> asTupleLiteral()
-
accept
public <R> R accept(ExpressionVisitor<R> visitor)
Description copied from class:Expression
Invoke theExpressionVisitor
functions for this expression.- Specified by:
accept
in classExpression
- 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 aNode
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 classExpression
-
evaluate
public Value evaluate(RuleEvaluator evaluator)
- Parameters:
evaluator
- the rule-set evaluator.- Returns:
- the resulting value.
-
-