diskmat-tools/src/traits/parser.rs

29 lines
739 B
Rust

use crate::{boolean_algebra, truthtable};
use super::graphvizable::Graphvizable;
pub enum Pair<'a> {
BAPair(pest::iterators::Pair<'a, boolean_algebra::parser::BARule>),
TTPair(pest::iterators::Pair<'a, truthtable::parser::TTRule>),
}
impl <'a>Graphvizable for Pair<'a> {
fn graphviz_diagram(&self) -> String {
match &self {
Pair::BAPair(pair) => pair.graphviz_diagram(),
Pair::TTPair(pair) => pair.graphviz_diagram()
}
}
fn print_graphviz_diagram(&self) {
match &self {
Pair::BAPair(pair) => pair.print_graphviz_diagram(),
Pair::TTPair(pair) => pair.print_graphviz_diagram()
}
}
}
pub trait Parser {
fn parse(input: &mut String) -> Pair;
}