use super::PriorityTable;
#[derive(Debug, PartialEq, Copy, Clone)]
pub enum UnaryOperator {
OpNot, OpLen, OpUnm, OpBNot, OpNop, }
#[derive(Debug, PartialEq, Copy, Clone)]
pub enum BinaryOperator {
OpAdd, OpSub, OpMul, OpDiv, OpIDiv, OpMod, OpPow, OpBAnd, OpBOr, OpBXor, OpShl, OpShr, OpConcat, OpLt, OpLe, OpGt, OpGe, OpEq, OpNe, OpAnd, OpOr, OpNop, }
pub const PRIORITY: [PriorityTable; 21] = [
PriorityTable {
left: 10,
right: 10,
}, PriorityTable {
left: 10,
right: 10,
}, PriorityTable {
left: 11,
right: 11,
}, PriorityTable {
left: 11,
right: 11,
}, PriorityTable {
left: 11,
right: 11,
}, PriorityTable {
left: 11,
right: 11,
}, PriorityTable {
left: 14,
right: 13,
}, PriorityTable { left: 6, right: 6 }, PriorityTable { left: 4, right: 4 }, PriorityTable { left: 5, right: 5 }, PriorityTable { left: 7, right: 7 }, PriorityTable { left: 7, right: 7 }, PriorityTable { left: 9, right: 8 }, PriorityTable { left: 3, right: 3 }, PriorityTable { left: 3, right: 3 }, PriorityTable { left: 3, right: 3 }, PriorityTable { left: 3, right: 3 }, PriorityTable { left: 3, right: 3 }, PriorityTable { left: 3, right: 3 }, PriorityTable { left: 2, right: 2 }, PriorityTable { left: 1, right: 1 }, ];
impl BinaryOperator {
pub fn get_priority(&self) -> &PriorityTable {
&PRIORITY[*self as usize]
}
}
pub const UNARY_PRIORITY: i32 = 12;