Class Expression
- java.lang.Object
-
- software.amazon.smithy.rulesengine.language.syntax.SyntaxElement
-
- software.amazon.smithy.rulesengine.language.syntax.expressions.Expression
-
- All Implemented Interfaces:
FromSourceLocation
,ToNode
,TypeCheck
,ToCondition
,ToExpression
- Direct Known Subclasses:
LibraryFunction
,Literal
,Reference
public abstract class Expression extends SyntaxElement implements FromSourceLocation, ToNode, TypeCheck
A dynamically computed expression.Expressions are the fundamental building block of the rule language.
-
-
Constructor Summary
Constructors Constructor Description Expression(SourceLocation sourceLocation)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract <R> R
accept(ExpressionVisitor<R> visitor)
Invoke theExpressionVisitor
functions for this expression.abstract boolean
equals(java.lang.Object obj)
static Expression
fromNode(Node node)
Constructs an expression from the providedNode
.static Literal
getLiteral(StringNode node)
Constructs aLiteral
from the givenStringNode
.static Reference
getReference(Identifier name, FromSourceLocation context)
Constructs aReference
for the givenIdentifier
at the given location.SourceLocation
getSourceLocation()
Gets the source location of a value.abstract int
hashCode()
static Literal
of(boolean value)
static Literal
of(int value)
Construct an integer literal for the given value, and returns it as an expression.static Literal
of(java.lang.String value)
Constructs a string literal for the given values.static Expression
parseShortform(java.lang.String shortForm, FromSourceLocation context)
Parse a value from a "short form" used within a template.Condition.Builder
toConditionBuilder()
Convert this into a condition builder for compositional use.Expression
toExpression()
Convert this into an expression.Type
type()
Returns the type for this expression, throws a runtime exception iftypeCheck
has not been invoked.Type
typeCheck(Scope<Type> scope)
Checks whether the given types within a scope satisfy the constraints.protected abstract Type
typeCheckLocal(Scope<Type> scope)
-
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
-
-
-
-
Constructor Detail
-
Expression
public Expression(SourceLocation sourceLocation)
-
-
Method Detail
-
of
public static Literal of(boolean value)
-
of
public static Literal of(int value)
Construct an integer literal for the given value, and returns it as an expression.- Parameters:
value
- the integer value.- Returns:
- the integer value as a literal expression.
-
of
public static Literal of(java.lang.String value)
Constructs a string literal for the given values.- Parameters:
value
- the string value.- Returns:
- the string value as a literal.
-
fromNode
public static Expression fromNode(Node node)
Constructs an expression from the providedNode
.- Parameters:
node
- the node to construct the expression from.- Returns:
- the expression.
-
parseShortform
public static Expression parseShortform(java.lang.String shortForm, FromSourceLocation context)
Parse a value from a "short form" used within a template.- Parameters:
shortForm
- the shortform value- Returns:
- the parsed expression
-
getReference
public static Reference getReference(Identifier name, FromSourceLocation context)
Constructs aReference
for the givenIdentifier
at the given location.- Parameters:
name
- the referenced identifier.context
- the source location.- Returns:
- the reference.
-
getLiteral
public static Literal getLiteral(StringNode node)
Constructs aLiteral
from the givenStringNode
.- Parameters:
node
- the node to construct the literal from.- Returns:
- the string node as a literal.
-
accept
public abstract <R> R accept(ExpressionVisitor<R> visitor)
Invoke theExpressionVisitor
functions for this expression.- Type Parameters:
R
- the visitor return type.- Parameters:
visitor
- the visitor to be invoked.- Returns:
- the return value of the visitor.
-
typeCheckLocal
protected abstract Type typeCheckLocal(Scope<Type> scope) throws InnerParseError
- Throws:
InnerParseError
-
type
public Type type()
Returns the type for this expression, throws a runtime exception iftypeCheck
has not been invoked.- Returns:
- the type.
-
toConditionBuilder
public Condition.Builder toConditionBuilder()
Description copied from interface:ToCondition
Convert this into a condition builder for compositional use.- Specified by:
toConditionBuilder
in interfaceToCondition
- Returns:
- the condition builder.
-
toExpression
public Expression toExpression()
Description copied from interface:ToExpression
Convert this into an expression.- Specified by:
toExpression
in interfaceToExpression
- Returns:
- the expression.
-
hashCode
public abstract int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public abstract boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
getSourceLocation
public SourceLocation getSourceLocation()
Description copied from interface:FromSourceLocation
Gets the source location of a value.- Specified by:
getSourceLocation
in interfaceFromSourceLocation
- Returns:
- Returns the source location of the value.
-
-