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
62
63
64
65
66
67
68
69
70
71
use crate::;
/// # Token Configuration
/// Only certain configurations support this, but it
/// basically describes what a token does.
/// # Basic Configuration
/// The most simple configuration system, used by
/// `StreamTokenizer` as a way to setup rules and tokens.
///
/// # Example
///
/// ```rust
/// use roketok::prelude::*;
///
/// #[derive(Clone, Copy, Default)]
/// enum TokenKind {
/// Number,
///
/// Plus,
/// Equal,
/// FatArrow,
///
/// Parenthesis,
///
/// #[default]
/// Invalid,
/// }
///
/// let config = Configuration::<TokenKind>::new()
/// .add_tokens([
/// (TokenConfiguration::Branch(&['('], &[')']), TokenKind::Parenthesis),
/// (TokenConfiguration::Boring(&['+']), TokenKind::Plus),
/// (TokenConfiguration::Boring(&['=']), TokenKind::Equal),
/// (TokenConfiguration::Boring(&['=', '>']), TokenKind::FatArrow),
/// ]);
/// ```
);