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#![deny(
6    missing_copy_implementations,
7    trivial_casts,
8    trivial_numeric_casts,
9    unused_import_braces,
10    unused_qualifications
11)]
12#![cfg_attr(test, deny(warnings))]
13#![cfg_attr(test, allow(missing_docs))]
14
15#[cfg(feature = "smallvec")]
16use smallvec::SmallVec;
17
18pub mod cfg;
19mod compare;
20mod occurence_map;
21pub mod precedenced_rule;
22pub mod rule_builder;
23pub mod symbol_bit_set;
24
25pub use crate::cfg::*;
26pub use crate::symbol_bit_set::SymbolBitSet;
27
28#[cfg(not(feature = "smallvec"))]
29type MaybeSmallVec<T, const N: usize = 0> = Vec<T>;
30#[cfg(feature = "smallvec")]
31type MaybeSmallVec<T, const N: usize = 8> = SmallVec<[T; N]>;
32
33mod local_prelude {
34    pub use crate::precedenced_rule::PrecedencedRuleBuilder;
35    pub use crate::*;
36    pub use cfg_history::earley;
37    pub use cfg_symbol::Symbol;
38    pub use cfg_symbol::SymbolSource;
39}