xshade-parser 0.1.2

Parser and untyped AST for the xshade language.
Documentation
use ::ast::*;

#[derive(Debug, Eq, PartialEq, Serialize, Deserialize)]
pub struct BinaryExpression {
    pub span: Span,
    pub operator: OperatorType,
    pub left_hand: Box<Expression>,
    pub right_hand: Box<Expression>,
}

impl Spanned for BinaryExpression {
    fn get_span(&self) -> Span {
        self.span
    }
}

impl Execute for BinaryExpression {
    fn execute(&self) -> Option<i32> {
        let left = self.left_hand.execute()?;
        let right = self.right_hand.execute()?;

        match self.operator {
            OperatorType::Plus => Some(left + right),
            OperatorType::Minus => Some(left - right),
            OperatorType::Multiply => Some(left * right),
            OperatorType::Divide => Some(left / right),
            _ => None,
        }
    }
}