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
//! The chirp grammar, defined using winnow parsers.
//!
//! The current implementation is not done with a particular look for performance,
//! just functionality and readability.
//!
//! ```text
//! TokenTree
//! = 'ident'
//! | '(' (TokenTree)* ')'
//! | '[' (TokenTree)* ']'
//! | '{' (TokenTree)* '}'
//! | StringLit
//!
//! Method = 'ident' ('(' (TokenTree)* ')')?
//!
//! Statement
//! = 'code' '(' 'ident' ')'
//! | 'Entity' StatementTail
//! | 'ident' '!' '(' (TokenTree (',' TokenTree)*)? ')' (StatementTail)?
//! | 'ident' StatementTail
//! | StringLit StatementTail
//!
//! StatementTail
//! = '(' (Method)* ')' ('{' (Statement)* '}')?
//! | '{' (Statement)* '}'
//!
//! Path = 'ident' ('/' 'ident')*
//! Use = 'use' Path ('as' 'ident')?
//! Fn = ('pub')? 'fn' 'ident' '(' ('ident' (',' 'ident')*)? ')' '{' Statement '}'
//! ChirpFile = (Use)* (Fn)* Statement
//! ```
// allow: The generated code is fine, it's in line with how winnow does things
// internally.
use PResult;
use AstBuilder;
use Input;
use Error;
pub use chirp_file;
type BlockResult = ;