#[derive(Clone, Debug, PartialEq)]
pub enum AssignmentOp {
Add,
Subtract,
Set,
}
#[derive(Clone, Debug, PartialEq)]
pub enum Node {
NewVar {
name: String,
value: i32,
},
SetVar {
name: String,
operator: AssignmentOp,
value: i32,
},
TestVar {
name: String,
test: String,
},
DeleteVar(String),
NewObjective {
name: String,
objective: String,
},
SetObjective {
target: String,
name: String,
operator: AssignmentOp,
value: i32,
},
GetVar(String),
Function {
name: String,
contents: Vec<Node>,
},
Tag(String),
CallFunction(String),
IfStatement {
condition: Vec<Node>,
if_block: Vec<Node>,
else_block: Vec<Node>,
},
WhileLoop {
condition: Vec<Node>,
contents: Vec<Node>,
},
MacroDefinition {
name: String,
args: Vec<String>,
contents: String,
},
MacroCall {
name: String,
args: Vec<String>,
},
MinecraftCommand {
name: String,
args: Vec<Node>,
},
CommandArg(String),
TrustMe(String),
}