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
/// Creates an `Arc<TerminalDef>` from either a literal string or a regex pattern.
///
/// **String form** (`name`, `value`, `priority`)
/// ```ignore
/// let plus = terminal_def!("PLUS", "+", 0);
/// ```
///
/// **Regex form** (`name`, `pattern`, `flags`, `priority`);
/// ```ignore
/// let int = terminal_def!("INT", r"\d+", RegexFlag::default(), 0);
/// ```
/// Wraps a string in `Ac<Symbol::Terminal>`.
///
/// ```ignore
/// let sym = terms!("INT");
/// assert!(sym.is_terminal());
/// ```
/// Wraps a string in `Arc<Symbol::NonTerminal>`.
///
/// ```ignore
/// let sym = non_terms!("expr");
/// assert!(!sym.is_terminal());
/// ```