pub enum ChapelExpr {
Show 25 variants
IntLit(i64),
RealLit(f64),
BoolLit(bool),
StrLit(String),
Var(String),
Apply(Box<ChapelExpr>, Vec<ChapelExpr>),
Index(Box<ChapelExpr>, Box<ChapelExpr>),
FieldAccess(Box<ChapelExpr>, String),
BinOp(String, Box<ChapelExpr>, Box<ChapelExpr>),
UnOp(String, Box<ChapelExpr>),
RangeLit(Box<ChapelExpr>, Box<ChapelExpr>, bool),
ReduceExpr(String, Box<ChapelExpr>),
ForallExpr(String, Box<ChapelExpr>, Box<ChapelExpr>),
CoforallExpr(String, Box<ChapelExpr>, Box<ChapelExpr>),
TupleLit(Vec<ChapelExpr>),
ArrayLit(Vec<ChapelExpr>),
Cast(Box<ChapelExpr>, ChapelType),
IfExpr(Box<ChapelExpr>, Box<ChapelExpr>, Box<ChapelExpr>),
New(ChapelType, Vec<ChapelExpr>),
Nil,
Here,
NumLocales,
This,
TypeOf(Box<ChapelExpr>),
DomainLit(Vec<ChapelExpr>),
}Expand description
Chapel expression representation.
Variants§
IntLit(i64)
Integer literal: 42
RealLit(f64)
Real literal: 3.14
BoolLit(bool)
Bool literal: true / false
StrLit(String)
String literal: "hello"
Var(String)
Variable reference: x
Apply(Box<ChapelExpr>, Vec<ChapelExpr>)
Function/procedure application: f(a, b, ...)
Index(Box<ChapelExpr>, Box<ChapelExpr>)
Array index: a[i]
FieldAccess(Box<ChapelExpr>, String)
Field/member access: r.field
BinOp(String, Box<ChapelExpr>, Box<ChapelExpr>)
Binary operation: lhs op rhs
UnOp(String, Box<ChapelExpr>)
Unary operation: op e
RangeLit(Box<ChapelExpr>, Box<ChapelExpr>, bool)
Range: lo..hi or lo..#n
ReduceExpr(String, Box<ChapelExpr>)
Reduce expression: + reduce arr
ForallExpr(String, Box<ChapelExpr>, Box<ChapelExpr>)
Forall expression: [i in D] f(i)
CoforallExpr(String, Box<ChapelExpr>, Box<ChapelExpr>)
Coforall expression body reference
TupleLit(Vec<ChapelExpr>)
Tuple literal: (e1, e2, ...)
ArrayLit(Vec<ChapelExpr>)
Array literal: [e1, e2, ...]
Cast(Box<ChapelExpr>, ChapelType)
Cast: e : t
IfExpr(Box<ChapelExpr>, Box<ChapelExpr>, Box<ChapelExpr>)
Conditional (ternary): if cond then t else e
New(ChapelType, Vec<ChapelExpr>)
New object: new C(args...)
Nil
nil
Here
here locale
NumLocales
numLocales
This
this reference
TypeOf(Box<ChapelExpr>)
Type query: e.type
DomainLit(Vec<ChapelExpr>)
Domain literal: {e1, e2, ...} or {lo..hi}
Trait Implementations§
Source§impl Clone for ChapelExpr
impl Clone for ChapelExpr
Source§fn clone(&self) -> ChapelExpr
fn clone(&self) -> ChapelExpr
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for ChapelExpr
impl RefUnwindSafe for ChapelExpr
impl Send for ChapelExpr
impl Sync for ChapelExpr
impl Unpin for ChapelExpr
impl UnsafeUnpin for ChapelExpr
impl UnwindSafe for ChapelExpr
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more