cfg_grammar/
lib.rs

1//! Library for manipulations on context-free grammars. Most transformations are abstracted over
2//! grammar representations.
3
4#![deny(unsafe_code)]
5#![warn(missing_docs)]
6#![deny(
7    missing_copy_implementations,
8    trivial_casts,
9    trivial_numeric_casts,
10    unused_import_braces,
11    unused_qualifications
12)]
13#![cfg_attr(test, deny(warnings))]
14#![cfg_attr(test, allow(missing_docs))]
15
16#[cfg(feature = "smallvec")]
17use smallvec::SmallVec;
18
19pub mod cfg;
20mod compare;
21mod occurence_map;
22pub mod precedenced_rule;
23pub mod rule_builder;
24pub mod symbol_bit_set;
25
26pub use crate::cfg::*;
27pub use crate::symbol_bit_set::SymbolBitSet;
28
29#[cfg(not(feature = "smallvec"))]
30type MaybeSmallVec<T, const N: usize = 0> = Vec<T>;
31#[cfg(feature = "smallvec")]
32type MaybeSmallVec<T, const N: usize = 8> = SmallVec<[T; N]>;
33
34mod local_prelude {
35    pub use crate::precedenced_rule::PrecedencedRuleBuilder;
36    pub use crate::*;
37    pub use cfg_history::earley;
38    pub use cfg_symbol::Symbol;
39    pub use cfg_symbol::SymbolSource;
40}