Enum rustre_parser::parser::Expr
source[−]pub enum Expr<'a, 'f> {
Const(ConstValue),
Ident(Ident<'a, 'f>),
Unary(Spanned<'f, UnaryOp>, Spanned<'f, Box<Expr<'a, 'f>>>),
Binary(Spanned<'f, BinaryOp>, Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>),
NAry(NAryOp, Spanned<'f, Vec<Spanned<'f, Expr<'a, 'f>>>>),
Slice(Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>, Option<Spanned<'f, Box<Expr<'a, 'f>>>>),
Ternary {
op: TernaryOp,
condition: Spanned<'f, Box<Expr<'a, 'f>>>,
then: Spanned<'f, Box<Expr<'a, 'f>>>,
otherwise: Spanned<'f, Box<Expr<'a, 'f>>>,
},
NamedClock(Spanned<'f, ClockExpr<'a, 'f>>),
CallByName(Spanned<'f, Ident<'a, 'f>>, Vec<Spanned<'f, StaticArg<'a, 'f>>>, Vec<Spanned<'f, Expr<'a, 'f>>>),
CreateStruct {
ty_name: Spanned<'f, Ident<'a, 'f>>,
fields: Vec<(Spanned<'f, Ident<'a, 'f>>, Spanned<'f, Expr<'a, 'f>>)>,
base_value: Option<Spanned<'f, Box<Expr<'a, 'f>>>>,
},
Merge(Spanned<'f, Ident<'a, 'f>>, Vec<Spanned<'f, MergeCase<'a, 'f>>>),
CallByPos(Spanned<'f, (Spanned<'f, Ident<'a, 'f>>, Vec<StaticArg<'a, 'f>>)>, Vec<Spanned<'f, Expr<'a, 'f>>>),
}
Expand description
An expression
Variants
Const(ConstValue)
Tuple Fields
0: ConstValue
Constant value
Ident(Ident<'a, 'f>)
Tuple Fields
0: Ident<'a, 'f>
Identifier
Unary(Spanned<'f, UnaryOp>, Spanned<'f, Box<Expr<'a, 'f>>>)
Unary operation
Binary(Spanned<'f, BinaryOp>, Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>)
Tuple Fields
Binary operation
NAry(NAryOp, Spanned<'f, Vec<Spanned<'f, Expr<'a, 'f>>>>)
N-ary operation
Slice(Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>, Spanned<'f, Box<Expr<'a, 'f>>>, Option<Spanned<'f, Box<Expr<'a, 'f>>>>)
Tuple Fields
Slice access (tab[x..y]
)
Ternary
Fields
op: TernaryOp
Operator
Ternary expression
NamedClock(Spanned<'f, ClockExpr<'a, 'f>>)
A clock expression
CallByName(Spanned<'f, Ident<'a, 'f>>, Vec<Spanned<'f, StaticArg<'a, 'f>>>, Vec<Spanned<'f, Expr<'a, 'f>>>)
Tuple Fields
Node call
Not sure what the difference with Expr::CallByPos
is…
TODO
CreateStruct
Fields
Structure creation
Merge(Spanned<'f, Ident<'a, 'f>>, Vec<Spanned<'f, MergeCase<'a, 'f>>>)
Tuple Fields
Merge operation
CallByPos(Spanned<'f, (Spanned<'f, Ident<'a, 'f>>, Vec<StaticArg<'a, 'f>>)>, Vec<Spanned<'f, Expr<'a, 'f>>>)
Tuple Fields
Node call
Not sure what the difference with Expr::CallByName
is…
TODO
Trait Implementations
Auto Trait Implementations
impl<'a, 'f> RefUnwindSafe for Expr<'a, 'f>
impl<'a, 'f> UnwindSafe for Expr<'a, 'f>
Blanket Implementations
Mutably borrows from an owned value. Read more