use crate::core::rule::RewriteRule;
use crate::core::terms::term::RewritableLanguageOperatorSymbol;
pub struct AbstractRewritingPhase<LOS : RewritableLanguageOperatorSymbol> {
pub rules : Vec<Box<dyn RewriteRule<LOS>>>,
pub next_phase_id_on_changed : Option<usize>,
pub next_phase_id_on_unchanged : Option<usize>
}
impl<LOS : RewritableLanguageOperatorSymbol> AbstractRewritingPhase<LOS> {
pub fn new(
rules: Vec<Box<dyn RewriteRule<LOS>>>,
next_phase_id_on_changed : Option<usize>,
next_phase_id_on_unchanged : Option<usize>
) -> Self {
Self { rules, next_phase_id_on_changed, next_phase_id_on_unchanged }
}
}
pub struct RewritingProcessContextAndParameterization<LOS : RewritableLanguageOperatorSymbol> {
pub phases : Vec<AbstractRewritingPhase<LOS>>,
pub keep_only_one : bool,
}
impl<LOS : RewritableLanguageOperatorSymbol> RewritingProcessContextAndParameterization<LOS> {
pub fn new(
phases : Vec<AbstractRewritingPhase<LOS>>,
keep_only_one : bool,
) -> Self {
Self { phases, keep_only_one }
}
}