valkyrie-ast 0.0.5

Strong typed abstract syntax tree of valkyrie language
Documentation
use super::*;

impl Display for ValkyrieOperator {
    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
        match self {
            ValkyrieOperator::Not => f.write_char('!'),
            ValkyrieOperator::Concat => f.write_str("++"),
            ValkyrieOperator::Positive => f.write_char('+'),
            ValkyrieOperator::Negative => f.write_char('-'),
            ValkyrieOperator::Plus => f.write_char('+'),
            ValkyrieOperator::Minus => f.write_char('-'),
            ValkyrieOperator::Multiply => f.write_char('*'),
            ValkyrieOperator::Divide => f.write_char('/'),
            ValkyrieOperator::Power => f.write_char('^'),
            ValkyrieOperator::Unwrap => f.write_char('!'),
            ValkyrieOperator::Raise => f.write_char('?'),
            ValkyrieOperator::Celsius => f.write_char(''),
            ValkyrieOperator::Fahrenheit => f.write_char(''),
            ValkyrieOperator::Transpose => f.write_char(''),
            ValkyrieOperator::Transjugate => f.write_char(''),
            ValkyrieOperator::Hermitian => f.write_str("Hermitian"),
            ValkyrieOperator::Unbox => f.write_char('*'),
            ValkyrieOperator::Unpack => f.write_str(""),
            ValkyrieOperator::UnpackAll => f.write_char(''),
            ValkyrieOperator::Greater => f.write_char('>'),
            ValkyrieOperator::MuchGreater => f.write_char(''),
            ValkyrieOperator::VeryMuchGreater => f.write_char(''),
            ValkyrieOperator::Less => f.write_char('<'),
            ValkyrieOperator::MuchLess => f.write_char(''),
            ValkyrieOperator::VeryMuchLess => f.write_char(''),
            ValkyrieOperator::Belongs(v) => match v {
                true => f.write_char(''),
                false => f.write_char(''),
            },
            ValkyrieOperator::IsA(v) => match v {
                true => f.write_char(''),
                false => f.write_char(''),
            },
            ValkyrieOperator::Equal(v) => match v {
                true => f.write_char(''),
                false => f.write_char(''),
            },
            ValkyrieOperator::StrictlyEqual(v) => match v {
                true => f.write_char(''),
                false => f.write_char(''),
            },
            ValkyrieOperator::Inverse => f.write_char('i'),
            ValkyrieOperator::Surd(v) => match v {
                3 => f.write_char(''),
                4 => f.write_char(''),
                _ => f.write_char(''),
            },
            ValkyrieOperator::DivideByDecimalPower(v) => match v {
                3 => f.write_char(''),
                4 => f.write_char(''),
                _ => f.write_char('%'),
            },
        }
    }
}

impl Display for OperatorNode {
    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
        write!(f, "{}", self.kind)
    }
}

impl<E: Display> Display for PrefixNode<E> {
    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
        write!(f, "{}{}", self.operator, self.body)
    }
}

impl<E: Display> Display for InfixNode<E> {
    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
        write!(f, "{} {} {}", self.lhs, self.operator, self.rhs)
    }
}

impl<E: Display> Display for PostfixNode<E> {
    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
        write!(f, "{}{}", self.body, self.operator)
    }
}