use cfg_grammar::Cfg;
use crate::PerSymbolSets;
use crate::PredictSets;
use crate::cfg_sets_ext::CfgSetsExt;
pub struct LastSets {
map: PerSymbolSets,
}
impl LastSets {
pub fn new(grammar: &Cfg) -> Self {
let mut reversed_grammar = grammar.clone();
reversed_grammar.reverse();
let map = {
let first_sets = reversed_grammar.first_sets();
first_sets.map
};
LastSets { map }
}
}
impl PredictSets for LastSets {
fn predict_sets(&self) -> &PerSymbolSets {
&self.map
}
}