#[derive(Debug, Copy, Clone)]
pub enum UnOp {
Not,
Neg,
}
#[derive(Debug, Copy, Clone)]
pub enum BinOp {
Add,
Sub,
Mul,
Div,
Rem,
And,
Or,
BitXor,
BitAnd,
BitOr,
Shl,
Shr,
Eq,
Lt,
Le,
Ne,
Ge,
Gt,
}
#[derive(Debug, Copy, Clone)]
pub enum AssignOp {
Assign,
AddAssign,
SubAssign,
MulAssign,
DivAssign,
RemAssign,
BitXorAssign,
BitAndAssign,
BitOrAssign,
ShlAssign,
ShrAssign,
}
#[derive(Debug, Clone)]
pub enum Value {
Integer(i32),
Unary(UnOp, Box<Value>),
Binary(BinOp, Box<Value>, Box<Value>),
Paren(Vec<Value>),
FuncLike(String, Vec<Value>),
Ident(String),
Assign(AssignOp, String, Box<Value>),
#[allow(unused)]
Native(String),
}