pub enum ScriptAst {
Function {
name: String,
params: Vec<Parameter>,
return_type: Option<TypeAnnotation>,
body: Box<ScriptAst>,
},
Let {
name: String,
type_ann: Option<TypeAnnotation>,
value: Box<ScriptAst>,
},
BinOp {
op: BinaryOp,
left: Box<ScriptAst>,
right: Box<ScriptAst>,
},
UnaryOp {
op: UnaryOp,
operand: Box<ScriptAst>,
},
Call {
func: String,
args: Vec<ScriptAst>,
},
If {
condition: Box<ScriptAst>,
then_branch: Box<ScriptAst>,
else_branch: Option<Box<ScriptAst>>,
},
For {
var: String,
iter: Box<ScriptAst>,
body: Box<ScriptAst>,
},
Block(Vec<ScriptAst>),
Var(String),
Literal(LiteralValue),
Return(Box<ScriptAst>),
}Expand description
Script AST node for parsing script code
Variants§
Function
Function definition
Let
Variable declaration
BinOp
Binary operation
UnaryOp
Unary operation
Call
Function call
If
Conditional
For
Loop
Block(Vec<ScriptAst>)
Block of statements
Var(String)
Variable reference
Literal(LiteralValue)
Literal value
Return(Box<ScriptAst>)
Return statement
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ScriptAst
impl RefUnwindSafe for ScriptAst
impl Send for ScriptAst
impl Sync for ScriptAst
impl Unpin for ScriptAst
impl UnsafeUnpin for ScriptAst
impl UnwindSafe for ScriptAst
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more