air_script_core/
expression.rs1use super::{
2 Identifier, IndexedTraceAccess, ListComprehension, MatrixAccess, NamedTraceAccess, VectorAccess,
3};
4
5#[derive(Debug, Eq, PartialEq, Clone)]
7pub enum Expression {
8 Const(u64),
9 Elem(Identifier),
11 VectorAccess(VectorAccess),
14 MatrixAccess(MatrixAccess),
17 IndexedTraceAccess(IndexedTraceAccess),
18 NamedTraceAccess(NamedTraceAccess),
19 Rand(Identifier, usize),
22 Add(Box<Expression>, Box<Expression>),
23 Sub(Box<Expression>, Box<Expression>),
24 Mul(Box<Expression>, Box<Expression>),
25 Exp(Box<Expression>, Box<Expression>),
26 ListFolding(ListFoldingType),
27}
28
29#[derive(Debug, Clone, Eq, PartialEq)]
30pub enum ListFoldingType {
31 Sum(ListComprehension),
32 Prod(ListComprehension),
33}