pub enum ExprKind {
Show 41 variants
Int(i64),
Float(f64),
Unit {
value: String,
unit: String,
},
Str(Vec<StrSeg>),
RawStr(String),
Char(char),
Bool(bool),
Null,
Ident(String),
This,
Base,
It,
Declare {
ty: Option<Type>,
name: Name,
mutable: bool,
},
TypeOf(Type),
NameOf(Box<Expr>),
Checked {
expr: Box<Expr>,
checked: bool,
},
Default(Option<Type>),
Mc(VersionCond),
Tuple {
items: Vec<Expr>,
names: Vec<Option<Name>>,
},
Collection(Vec<Element>),
New {
ty: Option<Type>,
args: Option<Vec<Arg>>,
init: Vec<(Name, Expr)>,
items: Vec<Stmt>,
},
NewArray {
elem: Option<Type>,
rank: usize,
sizes: Vec<Expr>,
init: Option<Vec<ArrayItem>>,
},
Lambda {
params: Vec<LambdaParam>,
body: LambdaBody,
asynchronous: bool,
},
Unary {
op: UnOp,
expr: Box<Expr>,
},
Cast {
ty: Type,
expr: Box<Expr>,
},
Binary {
op: BinOp,
left: Box<Expr>,
right: Box<Expr>,
},
Range {
from: Box<Expr>,
to: Box<Expr>,
inclusive: bool,
},
Is {
expr: Box<Expr>,
pattern: Box<Pattern>,
},
As {
expr: Box<Expr>,
ty: Type,
},
Has {
expr: Box<Expr>,
ty: Type,
},
Conditional {
cond: Box<Expr>,
then: Box<Expr>,
otherwise: Box<Expr>,
},
With {
expr: Box<Expr>,
inits: Vec<(Name, Expr)>,
},
Switch {
expr: Box<Expr>,
arms: Vec<Arm>,
},
Call {
callee: Box<Expr>,
args: Vec<Arg>,
},
Index {
expr: Box<Expr>,
args: Vec<Expr>,
safe: bool,
},
TypeArgs {
expr: Box<Expr>,
args: Vec<Type>,
},
Member {
expr: Box<Expr>,
name: Name,
safe: bool,
},
Macro {
name: Name,
args: Vec<Expr>,
},
Move(Box<Expr>),
NotNull(Box<Expr>),
Error,
}Variants§
Int(i64)
Float(f64)
Unit
Str(Vec<StrSeg>)
RawStr(String)
Char(char)
Bool(bool)
Null
Ident(String)
This
Base
base: this as its base class (base.Tick()).
It
Declare
out let x, out i32 x: a local declared where a method gives it.
TypeOf(Type)
typeof(T): its System.Type.
NameOf(Box<Expr>)
nameof(x.Y): its last name, as a string.
Checked
checked(e) (checked) or unchecked(e): e’s whole-number
arithmetic panicking on overflow, or wrapping (C#’s).
Default(Option<Type>)
default, default(T): the type’s zero value.
Mc(VersionCond)
mc >= 1.21: the running game’s version.
Tuple
(a, b), (X: 1, Y: 2): a tuple, its items’ names where written.
Collection(Vec<Element>)
[a, b], [k => v], [..xs]: a list, a set or a map by its target.
New
new Pos(1, 2, 3), new(4), new Battery { Count = 2 }.
Fields
NewArray
new i32[n], new i32[2, 3], new i32[3][], new[] { 1, 2 },
new i32[,] { { 1, 2 }, { 3, 4 } }: an array made. elem is its
items’ type (none: the items’ own), rank its dimensions.
Lambda
x => …, (a, b) => …, { … } after a call (it its parameter).
Unary
Cast
(i32)x.
Binary
Range
Is
x is Monster m, x is not null.
As
x as T: null when it isn’t one.
Has
x has Charge.
Conditional
c ? a : b.
With
x with { Y = 64 }: a copy, members changed.
Switch
x switch { … }.
Call
Index
a[i], grid[x, y]: an indexer’s or an array’s element.
TypeArgs
f<T, U> before a call: the type arguments.
Member
x.Name, x?.Name.
Macro
panic!(…): a built-in macro’s call (a declared macro’s is
expanded before the parser sees it).
Move(Box<Expr>)
move x: x handed on, gone after.
NotNull(Box<Expr>)
x!: asserted not null.
Error
What couldn’t be parsed (reported already).