diff options
Diffstat (limited to 'src/tokens/expression.rs')
-rw-r--r-- | src/tokens/expression.rs | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/src/tokens/expression.rs b/src/tokens/expression.rs deleted file mode 100644 index 1d8a336..0000000 --- a/src/tokens/expression.rs +++ /dev/null @@ -1,78 +0,0 @@ -use crate::*; - - -#[derive(Clone)] -pub struct Expression { - pub source: SourceSpan, - pub tokens: Vec<ExpressionToken>, -} - -#[derive(Clone)] -pub struct ExpressionToken { - pub source: SourceSpan, - pub variant: ExpressionTokenVariant, -} - -#[derive(Clone)] -pub enum ExpressionTokenVariant { - Invocation(String), - Literal(isize), - Operator(Operator), - Error(ExpressionParseError), -} - -#[derive(Clone, Copy, Debug)] -pub enum Operator { - Equal, - NotEqual, - LessThan, - GreaterThan, - LessThanEqual, - GreaterThanEqual, - Add, - Subtract, - LeftShift, - RightShift, - And, - Or, - Xor, - Not, -} - -#[derive(Clone)] -pub enum ExpressionParseError { - InvalidHexadecimalLiteral(String), -} - -impl std::fmt::Debug for Expression { - fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> { - for (i, token) in self.tokens.iter().enumerate() { - let string = match &token.variant { - ExpressionTokenVariant::Invocation(name) => name, - ExpressionTokenVariant::Literal(value) => &value.to_string(), - ExpressionTokenVariant::Operator(operator) => match operator { - Operator::Equal => "=", - Operator::NotEqual => "!=", - Operator::LessThan => "<", - Operator::GreaterThan => ">", - Operator::LessThanEqual => "<=", - Operator::GreaterThanEqual => ">=", - Operator::Add => "+", - Operator::Subtract => "-", - Operator::LeftShift => "<<", - Operator::RightShift => ">>", - Operator::And => "&", - Operator::Or => "|", - Operator::Xor => "^", - Operator::Not => "~", - } - ExpressionTokenVariant::Error(_) => "<error>", - }; - match i { - 0 => write!(f, "{string}")?, - _ => write!(f, " {string}")?, - } - } - return Ok(()); - } -} |