parol 4.5.0

LL(k) and LALR(1) parser generator for Rust
Documentation
//!
//! Main module of this crate
//!
#[cfg(test)]
#[macro_use(quickcheck)]
extern crate quickcheck_macros;

#[macro_use]
extern crate function_name;

#[macro_use]
extern crate derive_builder;

extern crate rand;

#[cfg(feature = "build")]
pub mod build;
pub use build::InnerAttributes;

mod config;
pub use config::{
    CommonGeneratorConfig, Language, ParserGeneratorConfig, UserTraitGeneratorConfig,
};

///
/// Basic grammar data structures and algorithms
///
#[forbid(missing_docs)]
pub mod grammar;

pub use grammar::{Cfg, Pos, Pr, Rhs, Symbol, SymbolAttribute, Terminal, TerminalKind};

///
/// Module with functionalities for grammar analysis
///
#[forbid(missing_docs)]
pub mod analysis;

pub use analysis::{
    CompiledTerminal, GrammarAnalysisError, KTuple, KTupleBuilder, KTuples, KTuplesBuilder,
    LR1State, LRAction, LRParseTable, LookaheadDFA, RecursiveNonTerminal, RelatedHint,
    calculate_lalr1_parse_table, calculate_lookahead_dfas, detect_left_recursive_non_terminals,
};

///
/// Module with functionalities for grammar conversion
///
#[forbid(missing_docs)]
pub mod conversions;

pub use conversions::{render_dfa_dot_string, render_nt_dot_string, render_par_string};

///
/// Module with functionalities for error reporting
///
#[forbid(missing_docs)]
mod error_report;
pub use error_report::ParolErrorReporter;

///
/// Module with functionalities for lexer and parser generation
///
#[forbid(missing_docs)]
pub mod generators;
pub use generators::{
    GrammarConfig, GrammarTypeInfo, LanguageGenerator, ScannerConfig, UserTraitGenerator,
    check_and_transform_grammar, generate_lalr1_parser_export_model, generate_lalr1_parser_source,
    generate_lexer_source, generate_parser_export_model, generate_parser_export_model_from_grammar,
    generate_parser_source, try_format,
};

///
/// Module with parol's parser for input grammars
///
pub mod parser;
pub use parser::{ParolGrammar, ParolParserError, parse};

///
/// Module with test template(s)
///
#[forbid(missing_docs)]
pub mod test_support;

///
/// Module with functionalities for grammar transformation
///
#[forbid(missing_docs)]
pub mod transformation;
pub use transformation::{augment_grammar, left_factor};

///
/// Module with utility functionalities
///
pub mod utils;
pub(crate) use utils::str_vec::StrVec;
pub(crate) use utils::{generate_name, group_by};
pub use utils::{generate_tree_layout, obtain_grammar_config, obtain_grammar_config_from_string};

///
/// Constant lookahead limit, which is used for the calculation of the lookahead sets.
/// The value is used to limit the number of iterations in the calculation of the lookahead sets.
/// Grammar with a higher value will be rejected.
///
pub const MAX_K: usize = 10;

// re-export
pub use parol_runtime;