2019-08-01 03:58:42 +02:00
|
|
|
use crate::parser::{hir::Expression, Operator};
|
2019-07-24 00:22:11 +02:00
|
|
|
use crate::prelude::*;
|
2019-08-01 03:58:42 +02:00
|
|
|
use crate::Tagged;
|
2019-06-22 05:43:37 +02:00
|
|
|
use derive_new::new;
|
|
|
|
use getset::Getters;
|
2019-08-02 21:15:07 +02:00
|
|
|
use serde::{Deserialize, Serialize};
|
2019-07-24 00:22:11 +02:00
|
|
|
use std::fmt;
|
2019-06-22 05:43:37 +02:00
|
|
|
|
2019-07-24 00:22:11 +02:00
|
|
|
#[derive(
|
|
|
|
Debug, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Getters, Serialize, Deserialize, new,
|
|
|
|
)]
|
2019-09-01 21:56:17 +02:00
|
|
|
#[get = "pub(crate)"]
|
2019-06-22 05:43:37 +02:00
|
|
|
pub struct Binary {
|
|
|
|
left: Expression,
|
2019-08-01 03:58:42 +02:00
|
|
|
op: Tagged<Operator>,
|
2019-06-22 05:43:37 +02:00
|
|
|
right: Expression,
|
|
|
|
}
|
2019-07-24 00:22:11 +02:00
|
|
|
|
|
|
|
impl ToDebug for Binary {
|
|
|
|
fn fmt_debug(&self, f: &mut fmt::Formatter, source: &str) -> fmt::Result {
|
|
|
|
write!(f, "{}", self.left.debug(source))?;
|
|
|
|
write!(f, " {} ", self.op.debug(source))?;
|
|
|
|
write!(f, "{}", self.right.debug(source))?;
|
|
|
|
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
}
|