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
//! Parser combinator for EXPRESS language
//!
//! This submodule responsible for tokenize of EXPRESS language input into a [SyntaxTree] struct,
//! and provides parser combinators based on [nom](https://github.com/Geal/nom).
//!
//! Most parsers correspond to EXPRESS language grammers defined in [ISO-10303-11].
//! Each documentation of the parsers contains wirth syntax notation (WSN).
//! For example,
//!
//! ```text
//! 124 digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 .
//! ```
//!
//! [digit] matches to a digit character.
//! The head number, `124`, is the serial number of this WSN in [ISO-10303-11].
//!
//! [ISO-10303-11]: https://www.iso.org/standard/38047.html
//!
//! Remarks
//! --------
//!
//! EXPRESS language has two forms of "remarks" which corresponds to "comments" in Rust
//!
//! ```text
//! (* this is called "embedded remark" *)
//! -- this is called "tail remark"
//! ```
//!
//! Each of remarks are handled by [embedded_remark] and [tail_remark].
//! For handling remarks appear in arbitrary position,
//! we re-define nom's combinators in [combinator] to stack remarks onto a `Vec<Remark>` in appeared order.
//!
use crate*;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;