pub struct Grammar {
pub imports: Vec<ImportStm>,
pub productions: ProdVec<Production>,
pub terminals: TermVec<Terminal>,
pub nonterminals: NonTermVec<NonTerminal>,
pub nonterm_by_name: BTreeMap<String, SymbolIndex>,
pub term_by_name: BTreeMap<String, SymbolIndex>,
pub empty_index: SymbolIndex,
pub stop_index: SymbolIndex,
pub augmented_index: SymbolIndex,
pub augmented_layout_index: Option<SymbolIndex>,
pub start_index: SymbolIndex,
}Fields§
§imports: Vec<ImportStm>§productions: ProdVec<Production>§terminals: TermVec<Terminal>§nonterminals: NonTermVec<NonTerminal>§nonterm_by_name: BTreeMap<String, SymbolIndex>§term_by_name: BTreeMap<String, SymbolIndex>§empty_index: SymbolIndexIndex of EMPTY symbol
stop_index: SymbolIndexIndex of STOP symbol
augmented_index: SymbolIndexIndex of grammar augmented symbol
augmented_layout_index: Option<SymbolIndex>Index of augmented symbol for Layout rule if given
start_index: SymbolIndexAn index of the start symbol. First non-terminal or terminal of the grammar.
Implementations§
Source§impl Grammar
impl Grammar
pub fn symbol_index(&self, name: &str) -> SymbolIndex
pub fn symbol_name(&self, index: SymbolIndex) -> String
Sourcepub fn symbol_has_content(&self, symbol: SymbolIndex) -> bool
pub fn symbol_has_content(&self, symbol: SymbolIndex) -> bool
If this symbol is either a non-terminal of a terminal with a content. I.e. not a constant match terminal (keyword, punctuation…)
pub fn symbol_indexes(&self, names: &[&str]) -> SymbolVec<SymbolIndex>
pub fn symbol_names<T>(&self, indexes: T) -> Vec<String>where
T: IntoIterator<Item = SymbolIndex>,
pub fn term_to_symbol_index(&self, index: TermIndex) -> SymbolIndex
Sourcepub fn symbol_to_term_index(&self, index: SymbolIndex) -> TermIndex
pub fn symbol_to_term_index(&self, index: SymbolIndex) -> TermIndex
Convert symbol index to terminal index.
Sourcepub fn symbol_to_term(&self, index: SymbolIndex) -> &Terminal
pub fn symbol_to_term(&self, index: SymbolIndex) -> &Terminal
Convert symbol index to terminal
Sourcepub fn term_by_name(&self, name: &str) -> &Terminal
pub fn term_by_name(&self, name: &str) -> &Terminal
Get Terminal by name.
Sourcepub fn term_by_index(&self, index: TermIndex) -> &Terminal
pub fn term_by_index(&self, index: TermIndex) -> &Terminal
Get Terminal by index.
pub fn nonterm_to_symbol_index(&self, index: NonTermIndex) -> SymbolIndex
Sourcepub fn symbol_to_nonterm_index(&self, index: SymbolIndex) -> NonTermIndex
pub fn symbol_to_nonterm_index(&self, index: SymbolIndex) -> NonTermIndex
Convert symbol index to non-terminal index. Panics if symbol index is a terminal index.
Sourcepub fn symbol_to_nonterm(&self, index: SymbolIndex) -> &NonTerminal
pub fn symbol_to_nonterm(&self, index: SymbolIndex) -> &NonTerminal
Convert symbol index to non-terminal. Panics if symbol index is a terminal index.
Sourcepub fn nonterm_by_name(&self, name: &str) -> &NonTerminal
pub fn nonterm_by_name(&self, name: &str) -> &NonTerminal
Get NonTerminal by name.
Sourcepub fn nonterm_by_index(&self, index: NonTermIndex) -> &NonTerminal
pub fn nonterm_by_index(&self, index: NonTermIndex) -> &NonTerminal
Get NonTerminal by index.
pub fn is_nonterm(&self, index: SymbolIndex) -> bool
pub fn is_term(&self, index: SymbolIndex) -> bool
pub fn is_empty(&self, index: SymbolIndex) -> bool
pub fn production_len(&self, prod: ProdIndex) -> usize
pub fn production_rhs_symbols(&self, prod: ProdIndex) -> Vec<SymbolIndex>
Sourcepub fn productions(&self) -> Vec<&Production>
pub fn productions(&self) -> Vec<&Production>
Returns all productions except special AUG and AUGL.
Sourcepub fn nonterminals(&self) -> Vec<&NonTerminal>
pub fn nonterminals(&self) -> Vec<&NonTerminal>
Returns all nonterminals except special EMPTY, AUG and AUGL.
pub fn is_enum(&self, nonterminal: &NonTerminal) -> bool
pub fn has_layout(&self) -> bool
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
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);