Enum rtlola_parser::ast::ExpressionKind
source · pub enum ExpressionKind {
Show 16 variants
Lit(Literal),
Ident(Ident),
StreamAccess(Box<Expression>, StreamAccessKind),
Default(Box<Expression>, Box<Expression>),
Offset(Box<Expression>, Offset),
DiscreteWindowAggregation {
expr: Box<Expression>,
duration: Box<Expression>,
wait: bool,
aggregation: WindowOperation,
},
SlidingWindowAggregation {
expr: Box<Expression>,
duration: Box<Expression>,
wait: bool,
aggregation: WindowOperation,
},
Binary(BinOp, Box<Expression>, Box<Expression>),
Unary(UnOp, Box<Expression>),
Ite(Box<Expression>, Box<Expression>, Box<Expression>),
ParenthesizedExpression(Option<Box<Parenthesis>>, Box<Expression>, Option<Box<Parenthesis>>),
MissingExpression,
Tuple(Vec<Expression>),
Field(Box<Expression>, Ident),
Method(Box<Expression>, FunctionName, Vec<Type>, Vec<Expression>),
Function(FunctionName, Vec<Type>, Vec<Expression>),
}Expand description
The Ast representation of a single expression
Variants§
Lit(Literal)
A literal, e.g., 1, "foo"
Ident(Ident)
An identifier, e.g., foo
StreamAccess(Box<Expression>, StreamAccessKind)
Accessing a stream
Default(Box<Expression>, Box<Expression>)
A default expression, e.g., a.defaults(to: 0)
Offset(Box<Expression>, Offset)
An offset expression, e.g., a.offset(by: -1)
DiscreteWindowAggregation
Fields
expr: Box<Expression>The accesses stream
duration: Box<Expression>The duration of the window
aggregation: WindowOperationThe aggregation function
A discrete window with a duration duration as an integer constant and aggregation function aggregation
SlidingWindowAggregation
Fields
expr: Box<Expression>The accesses stream
duration: Box<Expression>The duration of the window
aggregation: WindowOperationThe aggregation function
A sliding window with duration duration and aggregation function aggregation
Binary(BinOp, Box<Expression>, Box<Expression>)
A binary operation (For example: a + b, a * b)
Unary(UnOp, Box<Expression>)
A unary operation (For example: !x, *x)
Ite(Box<Expression>, Box<Expression>, Box<Expression>)
An if-then-else expression
ParenthesizedExpression(Option<Box<Parenthesis>>, Box<Expression>, Option<Box<Parenthesis>>)
An expression enveloped in parentheses
MissingExpression
An expression was expected, e.g., after an operator like *
Tuple(Vec<Expression>)
A tuple expression
Field(Box<Expression>, Ident)
Access of a named (obj.foo) or unnamed (obj.0) struct field
Method(Box<Expression>, FunctionName, Vec<Type>, Vec<Expression>)
A method call, e.g., foo.bar(-1)
Function(FunctionName, Vec<Type>, Vec<Expression>)
A function call
Trait Implementations§
source§impl Clone for ExpressionKind
impl Clone for ExpressionKind
source§fn clone(&self) -> ExpressionKind
fn clone(&self) -> ExpressionKind
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for ExpressionKind
impl Debug for ExpressionKind
source§impl Hash for ExpressionKind
impl Hash for ExpressionKind
source§impl PartialEq<ExpressionKind> for ExpressionKind
impl PartialEq<ExpressionKind> for ExpressionKind
source§fn eq(&self, other: &ExpressionKind) -> bool
fn eq(&self, other: &ExpressionKind) -> bool
self and other values to be equal, and is used
by ==.