Enum moore_svlog_syntax::ast::ExprData
source · [−]pub enum ExprData<'a> {
Show 30 variants
DummyExpr,
LiteralExpr(Lit),
IdentExpr(Spanned<Name>),
SysIdentExpr(Spanned<Name>),
ThisExpr,
DollarExpr,
NullExpr,
ScopeExpr(Box<Expr<'a>>, Spanned<Name>),
IndexExpr {
indexee: Box<Expr<'a>>,
index: Box<Expr<'a>>,
},
UnaryExpr {
op: Op,
expr: Box<Expr<'a>>,
postfix: bool,
},
BinaryExpr {
op: Op,
lhs: Box<Expr<'a>>,
rhs: Box<Expr<'a>>,
},
TernaryExpr {
cond: Box<Expr<'a>>,
true_expr: Box<Expr<'a>>,
false_expr: Box<Expr<'a>>,
},
AssignExpr {
op: AssignOp,
lhs: Box<Expr<'a>>,
rhs: Box<Expr<'a>>,
},
CallExpr(Box<Expr<'a>>, Vec<CallArg<'a>>),
TypeExpr(Box<Type<'a>>),
ConstructorCallExpr(Vec<CallArg<'a>>),
ClassNewExpr(Option<Box<Expr<'a>>>),
ArrayNewExpr(Box<Expr<'a>>, Option<Box<Expr<'a>>>),
EmptyQueueExpr,
StreamConcatExpr {
slice: Option<StreamConcatSlice<'a>>,
exprs: Vec<StreamExpr<'a>>,
},
ConcatExpr {
repeat: Option<Box<Expr<'a>>>,
exprs: Vec<Expr<'a>>,
},
MinTypMaxExpr {
min: Box<Expr<'a>>,
typ: Box<Expr<'a>>,
max: Box<Expr<'a>>,
},
RangeExpr {
mode: RangeMode,
lhs: Box<Expr<'a>>,
rhs: Box<Expr<'a>>,
},
MemberExpr {
expr: Box<Expr<'a>>,
name: Spanned<Name>,
},
PatternExpr(Vec<PatternField<'a>>),
InsideExpr(Box<Expr<'a>>, Vec<ValueRange<'a>>),
CastExpr(Type<'a>, Box<Expr<'a>>),
CastSizeExpr(Box<Expr<'a>>, Box<Expr<'a>>),
CastSignExpr(Spanned<TypeSign>, Box<Expr<'a>>),
BitsExpr {
name: Spanned<Name>,
arg: TypeOrExpr<'a>,
},
}
Expand description
An expression.
Variants
DummyExpr
LiteralExpr(Lit)
IdentExpr(Spanned<Name>)
An identifier, like foo
.
SysIdentExpr(Spanned<Name>)
A system identifier, like $foo
.
ThisExpr
DollarExpr
NullExpr
ScopeExpr(Box<Expr<'a>>, Spanned<Name>)
IndexExpr
UnaryExpr
BinaryExpr
TernaryExpr
AssignExpr
CallExpr(Box<Expr<'a>>, Vec<CallArg<'a>>)
TypeExpr(Box<Type<'a>>)
ConstructorCallExpr(Vec<CallArg<'a>>)
ClassNewExpr(Option<Box<Expr<'a>>>)
ArrayNewExpr(Box<Expr<'a>>, Option<Box<Expr<'a>>>)
EmptyQueueExpr
StreamConcatExpr
ConcatExpr
MinTypMaxExpr
RangeExpr
MemberExpr
A member expression, like a.b
.
PatternExpr(Vec<PatternField<'a>>)
InsideExpr(Box<Expr<'a>>, Vec<ValueRange<'a>>)
CastExpr(Type<'a>, Box<Expr<'a>>)
CastSizeExpr(Box<Expr<'a>>, Box<Expr<'a>>)
CastSignExpr(Spanned<TypeSign>, Box<Expr<'a>>)
BitsExpr
A $bits
call.
Trait Implementations
sourceimpl<'a> AcceptVisitor<'a> for ExprData<'a>
impl<'a> AcceptVisitor<'a> for ExprData<'a>
sourceimpl<'a> AnyNodeData for ExprData<'a>
impl<'a> AnyNodeData for ExprData<'a>
sourcefn get_name(&self) -> Option<Spanned<Name>>
fn get_name(&self) -> Option<Spanned<Name>>
Get this node’s name, or None
if it does not have one.
sourcefn fmt_indefinite(&self, fmt: &mut Formatter<'_>) -> Result
fn fmt_indefinite(&self, fmt: &mut Formatter<'_>) -> Result
Describe this node for diagnostics in indefinite form, e.g. “entity”. Read more
sourcefn fmt_definite(&self, fmt: &mut Formatter<'_>) -> Result
fn fmt_definite(&self, fmt: &mut Formatter<'_>) -> Result
Describe this node for diagnostics in definite form, e.g. “entity ‘top’”. Read more
fn as_data(&self) -> &dyn AnyNodeData where
Self: Sized,
sourcefn format_indefinite(&self) -> FormatNodeIndefinite<'_> where
Self: Sized,
fn format_indefinite(&self) -> FormatNodeIndefinite<'_> where
Self: Sized,
Describe this node for diagnostics in indefinite form, e.g. “entity”.
sourcefn format_definite(&self) -> FormatNodeDefinite<'_> where
Self: Sized,
fn format_definite(&self) -> FormatNodeDefinite<'_> where
Self: Sized,
Describe this node for diagnostics in definite form, e.g. “entity ‘top’”. Read more
sourcefn to_indefinite_string(&self) -> String where
Self: Sized,
fn to_indefinite_string(&self) -> String where
Self: Sized,
Describe this node for diagnostics in indefinite form, e.g. “entity”.
sourcefn to_definite_string(&self) -> String where
Self: Sized,
fn to_definite_string(&self) -> String where
Self: Sized,
Describe this node for diagnostics in definite form, e.g. “entity ‘top’”. Read more
sourceimpl<'a> ForEachChild<'a> for ExprData<'a>
impl<'a> ForEachChild<'a> for ExprData<'a>
sourcefn for_each_child(&'a self, each: &mut dyn FnMut(&'a dyn AnyNode<'a>))
fn for_each_child(&'a self, each: &mut dyn FnMut(&'a dyn AnyNode<'a>))
Apply a function to each child node.
sourceimpl<'a> ForEachNode<'a> for ExprData<'a>
impl<'a> ForEachNode<'a> for ExprData<'a>
sourcefn for_each_node(&'a self, each: &mut dyn FnMut(&'a dyn AnyNode<'a>))
fn for_each_node(&'a self, each: &mut dyn FnMut(&'a dyn AnyNode<'a>))
Apply a function to this node.
impl<'a> Eq for ExprData<'a>
impl<'a> StructuralEq for ExprData<'a>
impl<'a> StructuralPartialEq for ExprData<'a>
Auto Trait Implementations
impl<'a> !RefUnwindSafe for ExprData<'a>
impl<'a> Send for ExprData<'a>
impl<'a> Sync for ExprData<'a>
impl<'a> Unpin for ExprData<'a>
impl<'a> !UnwindSafe for ExprData<'a>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more