pub enum ExpressionKind {
    LoadConstant(Constant),
    ArithLog(ArithLogOpVec<Expression>),
    StreamAccess {
        target: StreamReference,
        parameters: Vec<Expression>,
        access_kind: StreamAccessKind,
    },
    ParameterAccess(StreamReferenceusize),
    Ite {
        condition: Box<Expression>,
        consequence: Box<Expression>,
        alternative: Box<Expression>,
    },
    Tuple(Vec<Expression>),
    TupleAccess(Box<Expression>, usize),
    Function(StringVec<Expression>),
    Convert {
        expr: Box<Expression>,
    },
    Default {
        expr: Box<Expression>,
        default: Box<Expression>,
    },
}
Expand description

This enum contains all possible kinds of expressions and their relevant information.

Variants§

§

LoadConstant(Constant)

Load a constant value

§

ArithLog(ArithLogOpVec<Expression>)

Apply an arithmetic or logic operation. The function is monomorphized.

Note: Arguments never need to be coerced. Unary: 1st argument -> operand Binary: 1st argument -> lhs, 2nd argument -> rhs n-ary: kth argument -> kth operand

§

StreamAccess

Fields

§target: StreamReference

The target stream to be accessed

§parameters: Vec<Expression>

The parameters of the specific stream instance that is accessed.

If the stream behind target is not parametrized, this collection is empty.

§access_kind: StreamAccessKind

The kind of access

Access another stream

§

ParameterAccess(StreamReferenceusize)

Access to the parameter of a stream represented by a stream reference, referencing the target stream and the index of the parameter that should be accessed.

§

Ite

Fields

§condition: Box<Expression>

The condition under which either consequence or alternative is selected.

§consequence: Box<Expression>

The consequence should be evaluated and returned if the condition evaluates to true.

§alternative: Box<Expression>

The alternative should be evaluated and returned if the condition evaluates to false.

A conditional (if-then-else) expression

§

Tuple(Vec<Expression>)

A tuple expression

§

TupleAccess(Box<Expression>, usize)

Represents a tuple projections, i.e., it accesses a specific tuple element.

§

Function(StringVec<Expression>)

Represents a function call. The function is monomorphized.

Note: Arguments never need to be coerced. Unary: 1st argument -> operand Binary: 1st argument -> lhs, 2nd argument -> rhs n-ary: kth argument -> kth operand

§

Convert

Fields

§expr: Box<Expression>

The expression that produces a value. The type of the expression indicates the source of the conversion.

Converting a value to a different type

The result type is indicated in the expression with the Convert kind.

§

Default

Fields

§expr: Box<Expression>

The expression that results in an optional value.

§default: Box<Expression>

An infallible expression providing the default value if expr fails to produce a value.

Transforms an optional value into a definitive one

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
This method tests for self and other values to be equal, and is used by ==.
This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Should always be Self
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.