use simple_term_rewriter::term::syntax::{LanguageTerm, LanguageTermNode, TermFactory};
use crate::common::regex::lang::RegexOp;
pub fn empty(f: &mut TermFactory<RegexOp>) -> LanguageTerm<RegexOp> {
LanguageTermNode::build(RegexOp::Empty, vec![], f)
}
pub fn epsilon(f: &mut TermFactory<RegexOp>) -> LanguageTerm<RegexOp> {
LanguageTermNode::build(RegexOp::Epsilon, vec![], f)
}
pub fn atom(c: u8, f: &mut TermFactory<RegexOp>) -> LanguageTerm<RegexOp> {
LanguageTermNode::build(RegexOp::Atom(c), vec![], f)
}
pub fn alt(
l: LanguageTerm<RegexOp>,
r: LanguageTerm<RegexOp>,
f: &mut TermFactory<RegexOp>,
) -> LanguageTerm<RegexOp> {
LanguageTermNode::build(RegexOp::Alt, vec![l, r], f)
}
pub fn concat(
l: LanguageTerm<RegexOp>,
r: LanguageTerm<RegexOp>,
f: &mut TermFactory<RegexOp>,
) -> LanguageTerm<RegexOp> {
LanguageTermNode::build(RegexOp::Concat, vec![l, r], f)
}
pub fn star(r: LanguageTerm<RegexOp>, f: &mut TermFactory<RegexOp>) -> LanguageTerm<RegexOp> {
LanguageTermNode::build(RegexOp::Star, vec![r], f)
}