1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//! # rantlr-core
//!
//! Architecture
//!
//! ```text
//! .gr source
//! │
//! ▼
//! ┌─────────┐ Token stream + Spans ┌──────────┐
//! │ Lexer │ ──────────────────────────► │ Parser │
//! └─────────┘ └────┬─────┘
//! │
//! ▼
//! ┌──────────┐
//! │ AST │ Grammar / Rule / TokenDecl
//! └────┬─────┘
//! ┌───────────────────┼───────────────────┐
//! ▼ ▼ ▼
//! ┌────────┐ ┌──────────┐ ┌──────────┐
//! │ Linter │ │ rantlr-gen│ │ runtime │
//! └────────┘ └──────────┘ └──────────┘
//! ```
//!
//! Design choices:
//! - Hand-written lexer + recursive-descent parser for clear diagnostics / auto-fixes.
//! - Keywords over operators: `rule`, `token`, `match`, `repeat`, `optional`.
//! - `repeat` / `optional` are first-class AST nodes (not desugared away).
//! - Built-in types (`Number`, `QuotedString`, …) are recognized as dedicated tokens.
pub use ;
pub use ;
pub use ;
pub use FixHint;
pub use ;
pub use ;
pub use parse;
pub use ;
pub use ;
pub use ;
/// Parse a `.gr` grammar and run the smart linter.