pub struct Grammar {
pub symbols: Vec<Symbol>,
pub symbol_table: HashMap<String, usize>,
pub start_symbol: Option<usize>,
/* private fields */
}
Fields§
§symbols: Vec<Symbol>
§symbol_table: HashMap<String, usize>
§start_symbol: Option<usize>
Implementations§
Source§impl Grammar
impl Grammar
pub fn eliminate_left_recursion(&mut self)
Source§impl Grammar
impl Grammar
pub fn new() -> Self
pub fn get_symbol_by_name(&self, name: &str) -> &Symbol
pub fn terminal_iter(&self) -> impl Iterator<Item = &String>
pub fn non_terminal_iter(&self) -> impl Iterator<Item = &NonTerminal>
pub fn non_terminal_iter_mut( &mut self, ) -> impl Iterator<Item = &mut NonTerminal>
pub fn get_symbol_index(&self, name: &str) -> Option<usize>
pub fn add_non_terminal(&mut self, name: &str) -> usize
pub fn add_terminal(&mut self, name: String) -> usize
pub fn add_production(&mut self, left: usize, right: Vec<usize>)
pub fn get_symbol_name(&self, index: usize) -> &str
pub fn get_symbol_prime_name(&self, name: String) -> String
pub fn invalidate_nullable_first_follow(&mut self)
pub fn is_nullable_first_follow_valid(&self) -> bool
pub fn validate_nullable_first_follow(&mut self)
pub fn production_to_vec_str(&self, production: &Vec<usize>) -> Vec<&str>
Source§impl Grammar
impl Grammar
pub fn generate_ll1_parsing_table(&mut self) -> LL1ParsingTable<'_>
Source§impl Grammar
impl Grammar
pub fn calculate_nullable_first_follow(&mut self)
pub fn reset_nullable_first_follow(&mut self)
pub fn calculate_first_for_production( &self, production: &[usize], ) -> HashSet<usize>
pub fn calculate_follow_for_production( &self, production: &Vec<usize>, ) -> HashSet<usize>
Source§impl Grammar
impl Grammar
pub fn to_production_output_vec(&self) -> ProductionOutputVec<'_>
Source§impl Grammar
impl Grammar
pub fn to_non_terminal_output_vec(&mut self) -> NonTerminalOutputVec<'_>
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Grammar
impl RefUnwindSafe for Grammar
impl Send for Grammar
impl Sync for Grammar
impl Unpin for Grammar
impl UnwindSafe for Grammar
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more