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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
use Display;
/// Core parser components and traits.
use *;
/// Recursive parser combinators allowing parsers to reference themselves,
/// useful for parsing recursive grammars.
/// Parsers that handle padding around other parsers,
/// such as whitespace or delimiters before and after.
/// Negative lookahead parser combinators,
/// succeed if the inner parser fails at current input.
/// Parsers handling delimiters, useful for parsing separated lists or tokens.
/// Parsers for matching zero or more repetitions of a pattern.
/// Parsers allowing binding transformations of output.
/// Parsers that match tokens satisfying predicates.
/// Useful for matching specific token classes.
use *;
/// Parsers sequencing multiple parsers in order.
/// Choice combinators allowing trying multiple parsers in sequence,
/// succeeding on the first successful parser.
///
/// This module exports the `choice!` macro for convenient chaining.
/// Parsers that match between two delimiters.
/// Useful for bracketed or quoted sections.
/// Conversions from input types (like slices, strings) into specified tokens.
/// Utility functions and helpers used internally by parsers.
use *;
use crateChar;
/// Parsers specifically for identifiers.
/// Debugging parsers that print trace information for parser steps.
/// Parsers that combine multiple conditions (AND combinators).
/// Creates a parser that matches exactly one token equal to `t`.
///
/// # Type Parameters
///
/// * `K` - The token type (must implement `PartialEq`, `Display`).
/// * `T` - The input type convertible into `K`.
///
/// # Returns
///
/// A `PSat` parser that accepts only the token `t`.
/// Creates a parser that accepts any numeric ASCII digit token.
///
/// # Type Parameters
///
/// * `K` - The token type convertible into `char`.
///
/// # Returns
///
/// A `PSat` parser that accepts tokens representing ASCII digits (0-9).
/// Creates a parser that accepts any ASCII alphabetic letter token.
///
/// # Type Parameters
///
/// * `K` - The token type convertible into `char`.
///
/// # Returns
///
/// A `PSat` parser that accepts tokens representing ASCII letters (A-Z, a-z).
/// Creates a parser that accepts any ASCII whitespace token.
///
/// # Type Parameters
///
/// * `K` - The token type convertible into `char`.
///
/// # Returns
///
/// A `PSat` parser that accepts tokens representing ASCII whitespace.
/// Creates a parser that accepts any token.
///
/// # Type Parameters
///
/// * `K` - The token type.
///
/// # Returns
///
/// A `PSat` parser that accepts any token unconditionally.