1#[derive(Copy, Clone, Debug, PartialEq, Eq)]
3pub enum ArithmeticOperator {
4 Add,
6 Subtract,
8 Multiply,
10 Divide,
12 Remainder,
14}
15
16#[derive(Copy, Clone, Debug, PartialEq, Eq)]
18pub enum ComparisonOperator {
19 Equal,
21 NotEqual,
23 Less,
25 LessEqual,
27 Greater,
29 GreaterEqual,
31}
32
33#[derive(Copy, Clone, Debug, PartialEq, Eq)]
35pub enum LogicalOperator {
36 And,
38 Or,
40}
41
42#[derive(Copy, Clone, Debug, PartialEq, Eq)]
44pub enum BitwiseOperator {
45 And,
47 Or,
49 Xor,
51 ShiftLeft,
53 ShiftRight,
55}
56
57#[derive(Copy, Clone, Debug, PartialEq, Eq)]
59pub enum BinaryOperator {
60 Arithmetic(ArithmeticOperator),
62 Comparison(ComparisonOperator),
64 Logical(LogicalOperator),
66 Bitwise(BitwiseOperator),
68}
69
70impl std::fmt::Display for BinaryOperator {
71 fn fmt(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
72 match self {
73 Self::Arithmetic(ArithmeticOperator::Add) => write!(formatter, "+"),
74 Self::Arithmetic(ArithmeticOperator::Subtract) => write!(formatter, "-"),
75 Self::Arithmetic(ArithmeticOperator::Multiply) => write!(formatter, "*"),
76 Self::Arithmetic(ArithmeticOperator::Divide) => write!(formatter, "/"),
77 Self::Arithmetic(ArithmeticOperator::Remainder) => write!(formatter, "%"),
78 Self::Comparison(ComparisonOperator::Equal) => write!(formatter, "=="),
79 Self::Comparison(ComparisonOperator::NotEqual) => write!(formatter, "!="),
80 Self::Comparison(ComparisonOperator::Less) => write!(formatter, "<"),
81 Self::Comparison(ComparisonOperator::LessEqual) => write!(formatter, "<="),
82 Self::Comparison(ComparisonOperator::Greater) => write!(formatter, ">"),
83 Self::Comparison(ComparisonOperator::GreaterEqual) => write!(formatter, ">="),
84 Self::Logical(LogicalOperator::And) => write!(formatter, "&&"),
85 Self::Logical(LogicalOperator::Or) => write!(formatter, "||"),
86 Self::Bitwise(BitwiseOperator::And) => write!(formatter, "&"),
87 Self::Bitwise(BitwiseOperator::Or) => write!(formatter, "|"),
88 Self::Bitwise(BitwiseOperator::Xor) => write!(formatter, "^"),
89 Self::Bitwise(BitwiseOperator::ShiftLeft) => write!(formatter, "<<"),
90 Self::Bitwise(BitwiseOperator::ShiftRight) => write!(formatter, ">>"),
91 }
92 }
93}
94
95#[derive(Copy, Clone, Debug, PartialEq, Eq)]
97pub enum UnaryOperator {
98 Negate,
100 LogicalNot,
102 BitwiseNot,
104}