Skip to main content

parol/
lib.rs

1//!
2//! Main module of this crate
3//!
4#[cfg(test)]
5#[macro_use(quickcheck)]
6extern crate quickcheck_macros;
7
8#[macro_use]
9extern crate function_name;
10
11#[macro_use]
12extern crate derive_builder;
13
14extern crate rand;
15
16#[cfg(feature = "build")]
17pub mod build;
18pub use build::InnerAttributes;
19
20mod config;
21pub use config::{
22    CommonGeneratorConfig, Language, ParserGeneratorConfig, UserTraitGeneratorConfig,
23};
24
25///
26/// Basic grammar data structures and algorithms
27///
28#[forbid(missing_docs)]
29pub mod grammar;
30
31pub use grammar::{Cfg, Pos, Pr, Rhs, Symbol, SymbolAttribute, Terminal, TerminalKind};
32
33///
34/// Module with functionalities for grammar analysis
35///
36#[forbid(missing_docs)]
37pub mod analysis;
38
39pub use analysis::{
40    CompiledTerminal, GrammarAnalysisError, KTuple, KTupleBuilder, KTuples, KTuplesBuilder,
41    LR1State, LRAction, LRParseTable, LookaheadDFA, RecursiveNonTerminal, RelatedHint,
42    calculate_lalr1_parse_table, calculate_lookahead_dfas, detect_left_recursive_non_terminals,
43};
44
45///
46/// Module with functionalities for grammar conversion
47///
48#[forbid(missing_docs)]
49pub mod conversions;
50
51pub use conversions::{render_dfa_dot_string, render_nt_dot_string, render_par_string};
52
53///
54/// Module with functionalities for error reporting
55///
56#[forbid(missing_docs)]
57mod error_report;
58pub use error_report::ParolErrorReporter;
59
60///
61/// Module with functionalities for lexer and parser generation
62///
63#[forbid(missing_docs)]
64pub mod generators;
65pub use generators::{
66    GrammarConfig, GrammarTypeInfo, LanguageGenerator, ScannerConfig, UserTraitGenerator,
67    check_and_transform_grammar, generate_lalr1_parser_export_model, generate_lalr1_parser_source,
68    generate_lexer_source, generate_parser_export_model, generate_parser_export_model_from_grammar,
69    generate_parser_source, try_format,
70};
71
72///
73/// Module with parol's parser for input grammars
74///
75pub mod parser;
76pub use parser::{ParolGrammar, ParolParserError, parse};
77
78///
79/// Module with test template(s)
80///
81#[forbid(missing_docs)]
82pub mod test_support;
83
84///
85/// Module with functionalities for grammar transformation
86///
87#[forbid(missing_docs)]
88pub mod transformation;
89pub use transformation::{augment_grammar, left_factor};
90
91///
92/// Module with utility functionalities
93///
94pub mod utils;
95pub(crate) use utils::str_vec::StrVec;
96pub(crate) use utils::{generate_name, group_by};
97pub use utils::{generate_tree_layout, obtain_grammar_config, obtain_grammar_config_from_string};
98
99///
100/// Constant lookahead limit, which is used for the calculation of the lookahead sets.
101/// The value is used to limit the number of iterations in the calculation of the lookahead sets.
102/// Grammar with a higher value will be rejected.
103///
104pub const MAX_K: usize = 10;
105
106// re-export
107pub use parol_runtime;