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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
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 delimited lists or tokens.
/// Parsers for matching between `at_least` and `at_most` repetitions of a pattern.
/// Parsers allowing binding transformations of output.
/// Map result of parser with the input span it parsed
/// Map result of parser if it is an error
/// Parsers that match tokens satisfying predicates.
/// Useful for matching specific token classes.
use *;
/// Parsing multiple parsers one after the other.
/// Parsing two parsers in sequences ignoring the result of the first
/// Parsing two parsers in sequences ignore the result of the second
/// Folding the result of parser into a single value
/// 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 crate::;
/// Parsers specifically for identifiers.
/// Debugging parsers that print trace information for parser steps.
/// Parsers that combine multiple conditions (AND combinators).
/// Parser that asserts if an inner parser has consumed all input.
/// 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 inline ASCII whitespace token.
/// Meaning no newline tokens.
///
/// # Type Parameters
///
/// * `K` - The token type convertible into `char`.
///
/// # Returns
///
/// A `PSat` parser that accepts tokens representing inline ASCII whitespace.
/// Creates a parser that accepts any token.
///
/// # Type Parameters
///
/// * `K` - The token type.
///
/// # Returns
///
/// A `PSat` parser that accepts any token unconditionally.