1use crate::{
2 err,
3 lexer::PtxToken,
4 parser::{ParseErrorKind, PtxParseError, PtxTokenStream, Span},
5 span,
6};
7
8#[macro_export]
19macro_rules! mapc {
20 ($parser:expr, $ty:path { $($fields:tt)* }) => {{
21 $crate::parser::util::map($parser, $crate::cclosure!($ty { $($fields)* }))
22 }};
23}
24
25#[macro_export]
27macro_rules! try_mapc {
28 ($parser:expr, $ty:path { $($fields:tt)* }) => {{
29 $crate::parser::util::try_map($parser, $crate::okmap!($ty { $($fields)* }))
30 }};
31}
32
33pub fn parse_unsigned_integer(
38 lit: &str,
39 span: Span,
40 min: u128,
41 max: u128,
42) -> Result<u128, PtxParseError> {
43 let trimmed = lit.trim_end_matches('U').trim_end_matches('u');
44 let (radix, digits) = if let Some(rest) = trimmed
45 .strip_prefix("0x")
46 .or_else(|| trimmed.strip_prefix("0X"))
47 {
48 (16, rest)
49 } else if let Some(rest) = trimmed
50 .strip_prefix("0b")
51 .or_else(|| trimmed.strip_prefix("0B"))
52 {
53 (2, rest)
54 } else if trimmed.starts_with('0') && trimmed.len() > 1 {
55 (8, trimmed.strip_prefix('0').unwrap_or(""))
56 } else {
57 (10, trimmed)
58 };
59 let value = u128::from_str_radix(digits, radix).map_err(|_| PtxParseError {
60 kind: ParseErrorKind::InvalidLiteral(format!("invalid integer literal: {lit}")),
61 span,
62 })?;
63 if value < min || value > max {
64 return Err(PtxParseError {
65 kind: ParseErrorKind::InvalidLiteral(format!("integer literal out of range: {lit}")),
66 span,
67 });
68 }
69 Ok(value)
70}
71
72pub fn parse_signed_integer(
73 lit: &str,
74 span: Span,
75 min: i128,
76 max: i128,
77) -> Result<i128, PtxParseError> {
78 let trimmed = lit.trim_end_matches('U').trim_end_matches('u');
79 let (sign, body) = if let Some(rest) = trimmed.strip_prefix('-') {
80 (-1i32, rest)
81 } else if let Some(rest) = trimmed.strip_prefix('+') {
82 (1i32, rest)
83 } else {
84 (1i32, trimmed)
85 };
86 let limit = if sign < 0 {
87 abs_limit(min)
88 } else {
89 max as u128
90 };
91 let magnitude = parse_unsigned_integer(body, span, 0, limit)? as i128;
92 let value = if sign < 0 { -magnitude } else { magnitude };
93 if value < min || value > max {
94 return Err(PtxParseError {
95 kind: ParseErrorKind::InvalidLiteral(format!("integer literal out of range: {lit}")),
96 span,
97 });
98 }
99 Ok(value)
100}
101
102pub fn parse_u32_literal(lit: &str, span: Span) -> Result<u32, PtxParseError> {
103 parse_unsigned_integer(lit, span, 0, u32::MAX as u128).map(|v| v as u32)
104}
105
106pub fn parse_u64_literal(lit: &str, span: Span) -> Result<u64, PtxParseError> {
107 parse_unsigned_integer(lit, span, 0, u64::MAX as u128).map(|v| v as u64)
108}
109
110pub fn parse_index_suffix(
111 digits: &str,
112 max: u8,
113 label: &str,
114 span: Span,
115) -> Result<u8, PtxParseError> {
116 if digits.is_empty() {
117 return err!(ParseErrorKind::InvalidLiteral(format!(
118 "missing index for {label}"
119 )));
120 }
121 let value = digits.parse::<u8>().map_err(|_| PtxParseError {
122 kind: ParseErrorKind::InvalidLiteral(format!("invalid index for {label}: {digits}")),
123 span,
124 })?;
125 if value > max {
126 return err!(ParseErrorKind::InvalidLiteral(format!(
127 "{label} index out of range: {value}"
128 )));
129 }
130 Ok(value)
131}
132
133fn abs_limit(min: i128) -> u128 {
134 if min == i128::MIN {
135 (i128::MAX as u128) + 1
136 } else {
137 (-min) as u128
138 }
139}
140
141pub fn string_p(
147 expected: impl Into<String>,
148) -> impl Fn(&mut PtxTokenStream) -> Result<((), Span), PtxParseError> {
149 let expected = expected.into();
150 move |stream| {
151 stream.try_with_span(|stream| {
152 stream.with_partial_token_mode(|stream| stream.expect_string(&expected))?;
153 Ok(())
154 })
155 }
156}
157
158macro_rules! define_token_parser {
160 ($name:ident, $token:expr, $doc:expr) => {
161 #[doc = $doc]
162 pub fn $name() -> impl Fn(&mut PtxTokenStream) -> Result<((), Span), PtxParseError> {
163 move |stream| {
164 stream.try_with_span(|stream| {
165 stream.expect(&$token)?;
166 Ok(())
167 })
168 }
169 }
170 };
171}
172
173define_token_parser!(
175 comma_p,
176 PtxToken::Comma,
177 "Parser that expects a comma token."
178);
179define_token_parser!(
180 semicolon_p,
181 PtxToken::Semicolon,
182 "Parser that expects a semicolon token."
183);
184define_token_parser!(
185 colon_p,
186 PtxToken::Colon,
187 "Parser that expects a colon token."
188);
189define_token_parser!(plus_p, PtxToken::Plus, "Parser that expects a plus token.");
190define_token_parser!(
191 minus_p,
192 PtxToken::Minus,
193 "Parser that expects a minus token."
194);
195define_token_parser!(
196 lparen_p,
197 PtxToken::LParen,
198 "Parser that expects a left parenthesis token."
199);
200define_token_parser!(
201 rparen_p,
202 PtxToken::RParen,
203 "Parser that expects a right parenthesis token."
204);
205define_token_parser!(
206 lbracket_p,
207 PtxToken::LBracket,
208 "Parser that expects a left bracket token."
209);
210define_token_parser!(
211 rbracket_p,
212 PtxToken::RBracket,
213 "Parser that expects a right bracket token."
214);
215define_token_parser!(
216 lbrace_p,
217 PtxToken::LBrace,
218 "Parser that expects a left brace token."
219);
220define_token_parser!(
221 rbrace_p,
222 PtxToken::RBrace,
223 "Parser that expects a right brace token."
224);
225define_token_parser!(
226 langle_p,
227 PtxToken::LAngle,
228 "Parser that expects a left angle bracket token."
229);
230define_token_parser!(
231 rangle_p,
232 PtxToken::RAngle,
233 "Parser that expects a right angle bracket token."
234);
235define_token_parser!(
236 equals_p,
237 PtxToken::Equals,
238 "Parser that expects an equals token."
239);
240define_token_parser!(at_p, PtxToken::At, "Parser that expects an @ token.");
241define_token_parser!(
242 exclamation_p,
243 PtxToken::Exclaim,
244 "Parser that expects an exclamation mark token."
245);
246define_token_parser!(pipe_p, PtxToken::Pipe, "Parser that expects a pipe token.");
247
248pub fn integer_p() -> impl Fn(&mut PtxTokenStream) -> Result<(String, Span), PtxParseError> {
250 move |stream| {
251 stream.try_with_span(|stream| {
252 let (token, token_span) = stream.consume()?;
253
254 match token {
255 PtxToken::DecimalInteger(s)
256 | PtxToken::HexInteger(s)
257 | PtxToken::BinaryInteger(s)
258 | PtxToken::OctalInteger(s) => Ok(s.clone()),
259 _ => Err(crate::unexpected_token!(
260 *token_span,
261 &["integer literal".to_string()],
262 format!("{:?}", token)
263 )),
264 }
265 })
266 }
267}
268
269pub fn u32_p() -> impl Fn(&mut PtxTokenStream) -> Result<(u32, Span), PtxParseError> {
271 try_map(integer_p(), |literal, span| {
272 parse_u32_literal(&literal, span)
273 })
274}
275
276pub fn u64_p() -> impl Fn(&mut PtxTokenStream) -> Result<(u64, Span), PtxParseError> {
278 try_map(integer_p(), |literal, span| {
279 parse_u64_literal(&literal, span)
280 })
281}
282
283pub fn identifier_p() -> impl Fn(&mut PtxTokenStream) -> Result<(String, Span), PtxParseError> {
285 move |stream| {
286 stream.try_with_span(|stream| {
287 let (name, _) = stream.expect_identifier()?;
288 Ok(name)
289 })
290 }
291}
292
293pub fn directive_p() -> impl Fn(&mut PtxTokenStream) -> Result<(String, Span), PtxParseError> {
295 move |stream| {
296 stream.try_with_span(|stream| {
297 let (dir, _) = stream.expect_directive()?;
298 Ok(dir)
299 })
300 }
301}
302
303pub fn directive_exact_p(
305 expected: impl Into<String>,
306) -> impl Fn(&mut PtxTokenStream) -> Result<((), Span), PtxParseError> {
307 let expected = expected.into();
308 move |stream| {
309 let (dir, span) = directive_p()(stream)?;
310 if dir == expected {
311 Ok(((), span))
312 } else {
313 Err(crate::unexpected_value!(
314 span,
315 &[&format!(".{expected}")],
316 format!(".{dir}")
317 ))
318 }
319 }
320}
321
322pub fn register_p() -> impl Fn(&mut PtxTokenStream) -> Result<(String, Span), PtxParseError> {
324 move |stream| {
325 stream.try_with_span(|stream| {
326 let (mut name, _) = stream.expect_register()?;
327 loop {
328 let has_dot = matches!(stream.peek(), Ok((PtxToken::Dot, _)));
329 if !has_dot {
330 break;
331 }
332
333 let is_component = match stream.peek_n(1) {
335 Ok((PtxToken::Identifier(component_name), _)) => matches!(
336 component_name.as_str(),
337 "x" | "y" | "z" | "w" | "r" | "g" | "b" | "a"
338 ),
339 _ => false,
340 };
341
342 if !is_component {
343 break;
344 }
345
346 let _ = stream.consume()?;
348 let (suffix, _) = stream.expect_identifier()?;
349 name.push('.');
350 name.push_str(&suffix);
351 }
352 Ok(name)
353 })
354 }
355}
356
357pub fn string_literal_p() -> impl Fn(&mut PtxTokenStream) -> Result<(String, Span), PtxParseError> {
359 move |stream| {
360 stream.try_with_span(|stream| {
361 let (token, token_span) = stream.consume()?;
362 match token {
363 PtxToken::StringLiteral(value) => Ok(value.clone()),
364 _ => Err(crate::unexpected_token!(
365 *token_span,
366 &["string literal".to_string()],
367 format!("{:?}", token)
368 )),
369 }
370 })
371 }
372}
373
374pub fn literal_p() -> impl Fn(&mut PtxTokenStream) -> Result<(String, Span), PtxParseError> {
376 move |stream| {
377 stream.try_with_span(|stream| {
378 let (token, token_span) = stream.consume()?;
379 match token {
380 PtxToken::DecimalInteger(s)
381 | PtxToken::HexInteger(s)
382 | PtxToken::BinaryInteger(s)
383 | PtxToken::OctalInteger(s)
384 | PtxToken::Float(s)
385 | PtxToken::FloatExponent(s)
386 | PtxToken::HexFloatSingle(s)
387 | PtxToken::HexFloatDouble(s) => Ok(s.clone()),
388 _ => Err(crate::unexpected_token!(
389 *token_span,
390 &["literal".to_string()],
391 format!("{:?}", token)
392 )),
393 }
394 })
395 }
396}
397
398macro_rules! define_seq {
404 ($name:ident, $count:expr, $($ty:ident),+; $($param:ident),+; $($var:ident),+) => {
405 #[allow(non_camel_case_types)]
406 #[allow(dead_code)]
407 #[doc = concat!("Sequence ", $count, " parsers, keeping all results.")]
408 pub fn $name<$($ty),+, $($param),+>(
409 $($param: $param),+
410 ) -> impl Fn(&mut PtxTokenStream) -> Result<(($($ty),+), Span), PtxParseError>
411 where
412 $($param: Fn(&mut PtxTokenStream) -> Result<($ty, Span), PtxParseError>),+
413 {
414 move |stream| stream.try_with_span(|stream| {
415 $(let ($var, _) = $param(stream)?;)+
416 Ok(($($var),+))
417 })
418 }
419 };
420}
421
422define_seq!(seq, "2", A, B; parser_a, parser_b; a, b);
424define_seq!(seq3, "3", A, B, C; parser_a, parser_b, parser_c; a, b, c);
425define_seq!(seq4, "4", A, B, C, D; parser_a, parser_b, parser_c, parser_d; a, b, c, d);
426define_seq!(seq5, "5", A, B, C, D, E; parser_a, parser_b, parser_c, parser_d, parser_e; a, b, c, d, e);
427define_seq!(seq6, "6", A, B, C, D, E, F; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f; a, b, c, d, e, f);
428define_seq!(seq7, "7", A, B, C, D, E, F, G; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g; a, b, c, d, e, f, g);
429define_seq!(seq8, "8", A, B, C, D, E, F, G, H; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h; a, b, c, d, e, f, g, h);
430define_seq!(seq9, "9", A, B, C, D, E, F, G, H, I; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i; a, b, c, d, e, f, g, h, i);
431define_seq!(seq10, "10", A, B, C, D, E, F, G, H, I, J; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j; a, b, c, d, e, f, g, h, i, j);
432define_seq!(seq11, "11", A, B, C, D, E, F, G, H, I, J, K; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k; a, b, c, d, e, f, g, h, i, j, k);
433define_seq!(seq12, "12", A, B, C, D, E, F, G, H, I, J, K, L; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l; a, b, c, d, e, f, g, h, i, j, k, l);
434define_seq!(seq13, "13", A, B, C, D, E, F, G, H, I, J, K, L, M; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m; a, b, c, d, e, f, g, h, i, j, k, l, m);
435define_seq!(seq14, "14", A, B, C, D, E, F, G, H, I, J, K, L, M, N; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n; a, b, c, d, e, f, g, h, i, j, k, l, m, n);
436define_seq!(seq15, "15", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);
437define_seq!(seq16, "16", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p);
438define_seq!(seq17, "17", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q);
439define_seq!(seq18, "18", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r);
440define_seq!(seq19, "19", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s);
441define_seq!(seq20, "20", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t);
442define_seq!(seq21, "21", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u);
443define_seq!(seq22, "22", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v);
444define_seq!(seq23, "23", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w);
445define_seq!(seq24, "24", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x);
446define_seq!(seq25, "25", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y);
447define_seq!(seq26, "26", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z);
448define_seq!(seq27, "27", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa);
449define_seq!(seq28, "28", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab);
450define_seq!(seq29, "29", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac);
451define_seq!(seq30, "30", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad);
452define_seq!(seq31, "31", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae);
453define_seq!(seq32, "32", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af);
454define_seq!(seq33, "33", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag);
455define_seq!(seq34, "34", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah);
456define_seq!(seq35, "35", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai);
457define_seq!(seq36, "36", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj);
458define_seq!(seq37, "37", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak);
459define_seq!(seq38, "38", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al);
460define_seq!(seq39, "39", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am);
461define_seq!(seq40, "40", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an);
462define_seq!(seq41, "41", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao);
463define_seq!(seq42, "42", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap);
464define_seq!(seq43, "43", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq);
465define_seq!(seq44, "44", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar);
466define_seq!(seq45, "45", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as);
467define_seq!(seq46, "46", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at);
468define_seq!(seq47, "47", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au);
469define_seq!(seq48, "48", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av);
470define_seq!(seq49, "49", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw);
471define_seq!(seq50, "50", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax);
472define_seq!(seq51, "51", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay);
473define_seq!(seq52, "52", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az);
474define_seq!(seq53, "53", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba);
475define_seq!(seq54, "54", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb);
476define_seq!(seq55, "55", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc);
477define_seq!(seq56, "56", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc, parser_bd; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd);
478define_seq!(seq57, "57", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc, parser_bd, parser_be; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be);
479define_seq!(seq58, "58", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE, BF; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc, parser_bd, parser_be, parser_bf; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf);
480define_seq!(seq59, "59", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE, BF, BG; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc, parser_bd, parser_be, parser_bf, parser_bg; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg);
481define_seq!(seq60, "60", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE, BF, BG, BH; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc, parser_bd, parser_be, parser_bf, parser_bg, parser_bh; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh);
482define_seq!(seq61, "61", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE, BF, BG, BH, BI; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc, parser_bd, parser_be, parser_bf, parser_bg, parser_bh, parser_bi; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi);
483define_seq!(seq62, "62", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE, BF, BG, BH, BI, BJ; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc, parser_bd, parser_be, parser_bf, parser_bg, parser_bh, parser_bi, parser_bj; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj);
484define_seq!(seq63, "63", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE, BF, BG, BH, BI, BJ, BK; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc, parser_bd, parser_be, parser_bf, parser_bg, parser_bh, parser_bi, parser_bj, parser_bk; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk);
485define_seq!(seq64, "64", A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA, BB, BC, BD, BE, BF, BG, BH, BI, BJ, BK, BL; parser_a, parser_b, parser_c, parser_d, parser_e, parser_f, parser_g, parser_h, parser_i, parser_j, parser_k, parser_l, parser_m, parser_n, parser_o, parser_p, parser_q, parser_r, parser_s, parser_t, parser_u, parser_v, parser_w, parser_x, parser_y, parser_z, parser_aa, parser_ab, parser_ac, parser_ad, parser_ae, parser_af, parser_ag, parser_ah, parser_ai, parser_aj, parser_ak, parser_al, parser_am, parser_an, parser_ao, parser_ap, parser_aq, parser_ar, parser_as, parser_at, parser_au, parser_av, parser_aw, parser_ax, parser_ay, parser_az, parser_ba, parser_bb, parser_bc, parser_bd, parser_be, parser_bf, parser_bg, parser_bh, parser_bi, parser_bj, parser_bk, parser_bl; a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, aa, ab, ac, ad, ae, af, ag, ah, ai, aj, ak, al, am, an, ao, ap, aq, ar, r#as, at, au, av, aw, ax, ay, az, ba, bb, bc, bd, be, bf, bg, bh, bi, bj, bk, bl);
486
487#[macro_export]
489macro_rules! seq_n {
490 () => {
491 compile_error!("seq_n! requires at least two parsers");
492 };
493 ($parser_a:expr $(,)?) => {
494 compile_error!("seq_n! requires at least two parsers");
495 };
496 ($parser_0:expr, $parser_1:expr $(,)?) => {
497 $crate::parser::util::seq($parser_0, $parser_1)
498 };
499 ($parser_0:expr, $parser_1:expr, $parser_2:expr $(,)?) => {
500 $crate::parser::util::seq3($parser_0, $parser_1, $parser_2)
501 };
502 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr $(,)?) => {
503 $crate::parser::util::seq4($parser_0, $parser_1, $parser_2, $parser_3)
504 };
505 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr $(,)?) => {
506 $crate::parser::util::seq5($parser_0, $parser_1, $parser_2, $parser_3, $parser_4)
507 };
508 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr $(,)?) => {
509 $crate::parser::util::seq6(
510 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5,
511 )
512 };
513 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr $(,)?) => {
514 $crate::parser::util::seq7(
515 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6,
516 )
517 };
518 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr $(,)?) => {
519 $crate::parser::util::seq8(
520 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
521 )
522 };
523 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr $(,)?) => {
524 $crate::parser::util::seq9(
525 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
526 $parser_8,
527 )
528 };
529 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr $(,)?) => {
530 $crate::parser::util::seq10(
531 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
532 $parser_8, $parser_9,
533 )
534 };
535 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr $(,)?) => {
536 $crate::parser::util::seq11(
537 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
538 $parser_8, $parser_9, $parser_10,
539 )
540 };
541 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr $(,)?) => {
542 $crate::parser::util::seq12(
543 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
544 $parser_8, $parser_9, $parser_10, $parser_11,
545 )
546 };
547 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr $(,)?) => {
548 $crate::parser::util::seq13(
549 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
550 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12,
551 )
552 };
553 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr $(,)?) => {
554 $crate::parser::util::seq14(
555 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
556 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13,
557 )
558 };
559 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr $(,)?) => {
560 $crate::parser::util::seq15(
561 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
562 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
563 )
564 };
565 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr $(,)?) => {
566 $crate::parser::util::seq16(
567 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
568 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
569 $parser_15,
570 )
571 };
572 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr $(,)?) => {
573 $crate::parser::util::seq17(
574 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
575 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
576 $parser_15, $parser_16,
577 )
578 };
579 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr $(,)?) => {
580 $crate::parser::util::seq18(
581 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
582 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
583 $parser_15, $parser_16, $parser_17,
584 )
585 };
586 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr $(,)?) => {
587 $crate::parser::util::seq19(
588 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
589 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
590 $parser_15, $parser_16, $parser_17, $parser_18,
591 )
592 };
593 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr $(,)?) => {
594 $crate::parser::util::seq20(
595 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
596 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
597 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19,
598 )
599 };
600 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr $(,)?) => {
601 $crate::parser::util::seq21(
602 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
603 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
604 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20,
605 )
606 };
607 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr $(,)?) => {
608 $crate::parser::util::seq22(
609 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
610 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
611 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
612 )
613 };
614 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr $(,)?) => {
615 $crate::parser::util::seq23(
616 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
617 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
618 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
619 $parser_22,
620 )
621 };
622 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr $(,)?) => {
623 $crate::parser::util::seq24(
624 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
625 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
626 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
627 $parser_22, $parser_23,
628 )
629 };
630 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr $(,)?) => {
631 $crate::parser::util::seq25(
632 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
633 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
634 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
635 $parser_22, $parser_23, $parser_24,
636 )
637 };
638 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr $(,)?) => {
639 $crate::parser::util::seq26(
640 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
641 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
642 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
643 $parser_22, $parser_23, $parser_24, $parser_25,
644 )
645 };
646 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr $(,)?) => {
647 $crate::parser::util::seq27(
648 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
649 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
650 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
651 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26,
652 )
653 };
654 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr $(,)?) => {
655 $crate::parser::util::seq28(
656 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
657 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
658 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
659 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27,
660 )
661 };
662 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr $(,)?) => {
663 $crate::parser::util::seq29(
664 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
665 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
666 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
667 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
668 )
669 };
670 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr $(,)?) => {
671 $crate::parser::util::seq30(
672 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
673 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
674 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
675 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
676 $parser_29,
677 )
678 };
679 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr $(,)?) => {
680 $crate::parser::util::seq31(
681 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
682 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
683 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
684 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
685 $parser_29, $parser_30,
686 )
687 };
688 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr $(,)?) => {
689 $crate::parser::util::seq32(
690 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
691 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
692 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
693 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
694 $parser_29, $parser_30, $parser_31,
695 )
696 };
697 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr $(,)?) => {
698 $crate::parser::util::seq33(
699 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
700 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
701 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
702 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
703 $parser_29, $parser_30, $parser_31, $parser_32,
704 )
705 };
706 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr $(,)?) => {
707 $crate::parser::util::seq34(
708 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
709 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
710 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
711 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
712 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33,
713 )
714 };
715 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr $(,)?) => {
716 $crate::parser::util::seq35(
717 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
718 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
719 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
720 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
721 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34,
722 )
723 };
724 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr $(,)?) => {
725 $crate::parser::util::seq36(
726 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
727 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
728 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
729 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
730 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
731 )
732 };
733 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr $(,)?) => {
734 $crate::parser::util::seq37(
735 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
736 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
737 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
738 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
739 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
740 $parser_36,
741 )
742 };
743 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr $(,)?) => {
744 $crate::parser::util::seq38(
745 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
746 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
747 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
748 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
749 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
750 $parser_36, $parser_37,
751 )
752 };
753 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr $(,)?) => {
754 $crate::parser::util::seq39(
755 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
756 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
757 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
758 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
759 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
760 $parser_36, $parser_37, $parser_38,
761 )
762 };
763 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr $(,)?) => {
764 $crate::parser::util::seq40(
765 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
766 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
767 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
768 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
769 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
770 $parser_36, $parser_37, $parser_38, $parser_39,
771 )
772 };
773 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr $(,)?) => {
774 $crate::parser::util::seq41(
775 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
776 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
777 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
778 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
779 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
780 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40,
781 )
782 };
783 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr $(,)?) => {
784 $crate::parser::util::seq42(
785 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
786 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
787 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
788 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
789 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
790 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41,
791 )
792 };
793 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr $(,)?) => {
794 $crate::parser::util::seq43(
795 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
796 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
797 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
798 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
799 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
800 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
801 )
802 };
803 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr $(,)?) => {
804 $crate::parser::util::seq44(
805 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
806 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
807 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
808 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
809 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
810 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
811 $parser_43,
812 )
813 };
814 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr $(,)?) => {
815 $crate::parser::util::seq45(
816 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
817 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
818 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
819 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
820 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
821 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
822 $parser_43, $parser_44,
823 )
824 };
825 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr $(,)?) => {
826 $crate::parser::util::seq46(
827 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
828 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
829 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
830 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
831 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
832 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
833 $parser_43, $parser_44, $parser_45,
834 )
835 };
836 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr $(,)?) => {
837 $crate::parser::util::seq47(
838 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
839 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
840 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
841 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
842 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
843 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
844 $parser_43, $parser_44, $parser_45, $parser_46,
845 )
846 };
847 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr $(,)?) => {
848 $crate::parser::util::seq48(
849 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
850 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
851 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
852 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
853 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
854 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
855 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47,
856 )
857 };
858 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr $(,)?) => {
859 $crate::parser::util::seq49(
860 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
861 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
862 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
863 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
864 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
865 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
866 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48,
867 )
868 };
869 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr $(,)?) => {
870 $crate::parser::util::seq50(
871 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
872 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
873 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
874 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
875 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
876 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
877 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
878 )
879 };
880 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr $(,)?) => {
881 $crate::parser::util::seq51(
882 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
883 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
884 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
885 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
886 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
887 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
888 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
889 $parser_50,
890 )
891 };
892 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr $(,)?) => {
893 $crate::parser::util::seq52(
894 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
895 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
896 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
897 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
898 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
899 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
900 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
901 $parser_50, $parser_51,
902 )
903 };
904 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr $(,)?) => {
905 $crate::parser::util::seq53(
906 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
907 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
908 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
909 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
910 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
911 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
912 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
913 $parser_50, $parser_51, $parser_52,
914 )
915 };
916 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr $(,)?) => {
917 $crate::parser::util::seq54(
918 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
919 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
920 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
921 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
922 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
923 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
924 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
925 $parser_50, $parser_51, $parser_52, $parser_53,
926 )
927 };
928 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr $(,)?) => {
929 $crate::parser::util::seq55(
930 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
931 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
932 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
933 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
934 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
935 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
936 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
937 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54,
938 )
939 };
940 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr, $parser_55:expr $(,)?) => {
941 $crate::parser::util::seq56(
942 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
943 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
944 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
945 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
946 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
947 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
948 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
949 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54, $parser_55,
950 )
951 };
952 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr, $parser_55:expr, $parser_56:expr $(,)?) => {
953 $crate::parser::util::seq57(
954 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
955 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
956 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
957 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
958 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
959 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
960 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
961 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54, $parser_55, $parser_56,
962 )
963 };
964 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr, $parser_55:expr, $parser_56:expr, $parser_57:expr $(,)?) => {
965 $crate::parser::util::seq58(
966 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
967 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
968 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
969 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
970 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
971 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
972 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
973 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54, $parser_55, $parser_56,
974 $parser_57,
975 )
976 };
977 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr, $parser_55:expr, $parser_56:expr, $parser_57:expr, $parser_58:expr $(,)?) => {
978 $crate::parser::util::seq59(
979 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
980 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
981 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
982 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
983 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
984 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
985 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
986 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54, $parser_55, $parser_56,
987 $parser_57, $parser_58,
988 )
989 };
990 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr, $parser_55:expr, $parser_56:expr, $parser_57:expr, $parser_58:expr, $parser_59:expr $(,)?) => {
991 $crate::parser::util::seq60(
992 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
993 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
994 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
995 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
996 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
997 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
998 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
999 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54, $parser_55, $parser_56,
1000 $parser_57, $parser_58, $parser_59,
1001 )
1002 };
1003 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr, $parser_55:expr, $parser_56:expr, $parser_57:expr, $parser_58:expr, $parser_59:expr, $parser_60:expr $(,)?) => {
1004 $crate::parser::util::seq61(
1005 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
1006 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
1007 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
1008 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
1009 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
1010 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
1011 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
1012 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54, $parser_55, $parser_56,
1013 $parser_57, $parser_58, $parser_59, $parser_60,
1014 )
1015 };
1016 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr, $parser_55:expr, $parser_56:expr, $parser_57:expr, $parser_58:expr, $parser_59:expr, $parser_60:expr, $parser_61:expr $(,)?) => {
1017 $crate::parser::util::seq62(
1018 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
1019 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
1020 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
1021 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
1022 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
1023 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
1024 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
1025 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54, $parser_55, $parser_56,
1026 $parser_57, $parser_58, $parser_59, $parser_60, $parser_61,
1027 )
1028 };
1029 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr, $parser_55:expr, $parser_56:expr, $parser_57:expr, $parser_58:expr, $parser_59:expr, $parser_60:expr, $parser_61:expr, $parser_62:expr $(,)?) => {
1030 $crate::parser::util::seq63(
1031 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
1032 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
1033 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
1034 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
1035 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
1036 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
1037 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
1038 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54, $parser_55, $parser_56,
1039 $parser_57, $parser_58, $parser_59, $parser_60, $parser_61, $parser_62,
1040 )
1041 };
1042 ($parser_0:expr, $parser_1:expr, $parser_2:expr, $parser_3:expr, $parser_4:expr, $parser_5:expr, $parser_6:expr, $parser_7:expr, $parser_8:expr, $parser_9:expr, $parser_10:expr, $parser_11:expr, $parser_12:expr, $parser_13:expr, $parser_14:expr, $parser_15:expr, $parser_16:expr, $parser_17:expr, $parser_18:expr, $parser_19:expr, $parser_20:expr, $parser_21:expr, $parser_22:expr, $parser_23:expr, $parser_24:expr, $parser_25:expr, $parser_26:expr, $parser_27:expr, $parser_28:expr, $parser_29:expr, $parser_30:expr, $parser_31:expr, $parser_32:expr, $parser_33:expr, $parser_34:expr, $parser_35:expr, $parser_36:expr, $parser_37:expr, $parser_38:expr, $parser_39:expr, $parser_40:expr, $parser_41:expr, $parser_42:expr, $parser_43:expr, $parser_44:expr, $parser_45:expr, $parser_46:expr, $parser_47:expr, $parser_48:expr, $parser_49:expr, $parser_50:expr, $parser_51:expr, $parser_52:expr, $parser_53:expr, $parser_54:expr, $parser_55:expr, $parser_56:expr, $parser_57:expr, $parser_58:expr, $parser_59:expr, $parser_60:expr, $parser_61:expr, $parser_62:expr, $parser_63:expr $(,)?) => {
1043 $crate::parser::util::seq64(
1044 $parser_0, $parser_1, $parser_2, $parser_3, $parser_4, $parser_5, $parser_6, $parser_7,
1045 $parser_8, $parser_9, $parser_10, $parser_11, $parser_12, $parser_13, $parser_14,
1046 $parser_15, $parser_16, $parser_17, $parser_18, $parser_19, $parser_20, $parser_21,
1047 $parser_22, $parser_23, $parser_24, $parser_25, $parser_26, $parser_27, $parser_28,
1048 $parser_29, $parser_30, $parser_31, $parser_32, $parser_33, $parser_34, $parser_35,
1049 $parser_36, $parser_37, $parser_38, $parser_39, $parser_40, $parser_41, $parser_42,
1050 $parser_43, $parser_44, $parser_45, $parser_46, $parser_47, $parser_48, $parser_49,
1051 $parser_50, $parser_51, $parser_52, $parser_53, $parser_54, $parser_55, $parser_56,
1052 $parser_57, $parser_58, $parser_59, $parser_60, $parser_61, $parser_62, $parser_63,
1053 )
1054 };
1055 ($($parser:expr),+ $(,)?) => {
1056 compile_error!("seq_n! currently supports up to 64 parsers");
1057 };
1058}
1059
1060pub fn skip_first<A, B, PA, PB>(
1062 parser_a: PA,
1063 parser_b: PB,
1064) -> impl Fn(&mut PtxTokenStream) -> Result<(B, Span), PtxParseError>
1065where
1066 PA: Fn(&mut PtxTokenStream) -> Result<(A, Span), PtxParseError>,
1067 PB: Fn(&mut PtxTokenStream) -> Result<(B, Span), PtxParseError>,
1068{
1069 move |stream| {
1070 stream.try_with_span(|stream| {
1071 let _ = parser_a(stream)?;
1072 let (b, _) = parser_b(stream)?;
1073 Ok(b)
1074 })
1075 }
1076}
1077
1078pub fn skip_semicolon<T, P>(
1080 parser: P,
1081) -> impl Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>
1082where
1083 P: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1084{
1085 move |stream| {
1086 let (value, span) = parser(stream)?;
1087 let _ = semicolon_p()(stream)?;
1088 Ok((value, span))
1089 }
1090}
1091
1092#[allow(dead_code)]
1094pub fn skip_second<A, B, PA, PB>(
1095 parser_a: PA,
1096 parser_b: PB,
1097) -> impl Fn(&mut PtxTokenStream) -> Result<(A, Span), PtxParseError>
1098where
1099 PA: Fn(&mut PtxTokenStream) -> Result<(A, Span), PtxParseError>,
1100 PB: Fn(&mut PtxTokenStream) -> Result<(B, Span), PtxParseError>,
1101{
1102 move |stream| {
1103 stream.try_with_span(|stream| {
1104 let (a, _) = parser_a(stream)?;
1105 let (_, _) = parser_b(stream)?;
1106 Ok(a)
1107 })
1108 }
1109}
1110
1111#[allow(dead_code)]
1119pub fn pure<T>(value: T) -> impl Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>
1120where
1121 T: Clone + 'static,
1122{
1123 move |stream| stream.try_with_span(|_| Ok(value.clone()))
1124}
1125
1126#[allow(dead_code)]
1146pub fn dispatch<A, B, P, F, Next>(
1147 parser: P,
1148 f: F,
1149) -> impl Fn(&mut PtxTokenStream) -> Result<(B, Span), PtxParseError>
1150where
1151 P: Fn(&mut PtxTokenStream) -> Result<(A, Span), PtxParseError>,
1152 F: Fn(A, Span) -> Next,
1153 Next: Fn(&mut PtxTokenStream) -> Result<(B, Span), PtxParseError>,
1154{
1155 move |stream| {
1156 stream.try_with_span(|stream| {
1157 let (value, span) = parser(stream)?;
1158 let next_parser = f(value, span);
1159 let (result, _) = next_parser(stream)?;
1160 Ok(result)
1161 })
1162 }
1163}
1164
1165pub fn map<A, B, P, F>(
1167 parser: P,
1168 f: F,
1169) -> impl Fn(&mut PtxTokenStream) -> Result<(B, Span), PtxParseError>
1170where
1171 P: Fn(&mut PtxTokenStream) -> Result<(A, Span), PtxParseError>,
1172 F: Fn(A, Span) -> B,
1173{
1174 move |stream| {
1175 let (value, span) = parser(stream)?;
1176 Ok((f(value, span), span))
1177 }
1178}
1179
1180pub fn try_map<A, B, P, F>(
1182 parser: P,
1183 f: F,
1184) -> impl Fn(&mut PtxTokenStream) -> Result<(B, Span), PtxParseError>
1185where
1186 P: Fn(&mut PtxTokenStream) -> Result<(A, Span), PtxParseError>,
1187 F: Fn(A, Span) -> Result<B, PtxParseError>,
1188{
1189 move |stream| {
1190 stream.try_with_span(|stream| {
1191 let (value, span) = parser(stream)?;
1192 match f(value, span) {
1193 Ok(node) => Ok(node),
1194 Err(mut err) => {
1195 err.span = span;
1196 Err(err)
1197 }
1198 }
1199 })
1200 }
1201}
1202
1203#[macro_export]
1209macro_rules! alt {
1210 () => {
1211 compile_error!("alt! requires at least one parser")
1212 };
1213 ($parser:expr $(,)?) => {
1215 $parser
1216 };
1217 ($parser_head:expr, $($parser_tail:expr),+ $(,)?) => {{
1219 move |stream: &mut $crate::parser::PtxTokenStream| {
1220 $crate::alt!(@attempt stream $parser_head, $($parser_tail),+)
1221 }
1222 }};
1223 (@attempt $stream:ident $last:expr) => {{
1224 let parser_ref = &$last;
1225 match $stream.try_with_span(|s| parser_ref(s)) {
1226 Ok((result, _)) => Ok(result),
1227 Err(e) => Err(e),
1228 }
1229 }};
1230 (@attempt $stream:ident $parser_curr:expr, $($parser_rest:expr),+) => {{
1231 let parser_ref = &$parser_curr;
1232 match $stream.try_with_span(|s| parser_ref(s)) {
1233 Ok((result, _)) => Ok(result),
1234 Err(_) => $crate::alt!(@attempt $stream $($parser_rest),+),
1235 }
1236 }};
1237}
1238
1239pub fn alt<T, P1, P2>(
1252 parser1: P1,
1253 parser2: P2,
1254) -> impl Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>
1255where
1256 P1: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1257 P2: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1258{
1259 move |stream| match stream.try_with_span(|stream| parser1(stream)) {
1260 Ok((result, _)) => Ok(result),
1261 Err(_) => parser2(stream),
1262 }
1263}
1264
1265#[allow(dead_code)]
1269pub fn choice<T>(
1270 parsers: Vec<impl Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>>,
1271) -> impl Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError> {
1272 move |stream| {
1273 let mut last_error = None;
1274 for parser in &parsers {
1275 match stream.try_with_span(|stream| parser(stream)) {
1276 Ok((result, _)) => return Ok(result),
1277 Err(err) => {
1278 last_error = Some(err);
1279 }
1280 }
1281 }
1282
1283 Err(last_error.unwrap_or_else(|| PtxParseError {
1284 kind: ParseErrorKind::UnexpectedEof,
1285 span: span!(0..0),
1286 }))
1287 }
1288}
1289
1290#[allow(dead_code)]
1292pub fn attempt<T, P>(parser: P) -> impl Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>
1293where
1294 P: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1295{
1296 move |stream| match stream.try_with_span(|stream| parser(stream)) {
1297 Ok((result, _)) => Ok(result),
1298 Err(err) => Err(err),
1299 }
1300}
1301
1302pub fn optional<T, P>(
1304 parser: P,
1305) -> impl Fn(&mut PtxTokenStream) -> Result<(Option<T>, Span), PtxParseError>
1306where
1307 P: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1308{
1309 move |stream| match stream.try_with_span(|stream| parser(stream)) {
1310 Ok(((value, _), span)) => Ok((Some(value), span)),
1311 Err(_) => Ok((None, stream.current_span())),
1312 }
1313}
1314
1315pub fn many<T, P>(
1323 parser: P,
1324) -> impl Fn(&mut PtxTokenStream) -> Result<(Vec<T>, Span), PtxParseError>
1325where
1326 P: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1327{
1328 move |stream| {
1329 stream.try_with_span(|stream| {
1330 let mut values = Vec::new();
1331
1332 loop {
1333 match stream.try_with_span(|stream| parser(stream)) {
1334 Ok(((value, _), _)) => values.push(value),
1335 Err(_) => break,
1336 }
1337 }
1338
1339 Ok(values)
1340 })
1341 }
1342}
1343
1344#[allow(dead_code)]
1348pub fn many1<T, P>(
1349 parser: P,
1350) -> impl Fn(&mut PtxTokenStream) -> Result<(Vec<T>, Span), PtxParseError>
1351where
1352 P: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1353{
1354 move |stream| {
1355 stream.try_with_span(|stream| {
1356 let (first, _) = parser(stream)?;
1357 let mut values = vec![first];
1358
1359 loop {
1360 match stream.try_with_span(|stream| parser(stream)) {
1361 Ok(((value, _), _)) => values.push(value),
1362 Err(_) => break,
1363 }
1364 }
1365
1366 Ok(values)
1367 })
1368 }
1369}
1370
1371pub fn sep_by<T, S, P, PS>(
1378 parser: P,
1379 separator: PS,
1380) -> impl Fn(&mut PtxTokenStream) -> Result<(Vec<T>, Span), PtxParseError>
1381where
1382 P: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1383 PS: Fn(&mut PtxTokenStream) -> Result<(S, Span), PtxParseError>,
1384{
1385 move |stream| {
1386 stream.try_with_span(|stream| {
1387 let mut values = Vec::new();
1388
1389 match stream.try_with_span(|stream| parser(stream)) {
1390 Ok(((value, _), _)) => values.push(value),
1391 Err(_) => return Ok(values),
1392 }
1393
1394 loop {
1395 match stream.try_with_span(|stream| separator(stream)) {
1396 Ok((_, _)) => match stream.try_with_span(|stream| parser(stream)) {
1397 Ok(((value, _), _)) => values.push(value),
1398 Err(_) => break,
1399 },
1400 Err(_) => break,
1401 }
1402 }
1403
1404 Ok(values)
1405 })
1406 }
1407}
1408
1409pub fn sep_by1<T, S, P, PS>(
1411 parser: P,
1412 separator: PS,
1413) -> impl Fn(&mut PtxTokenStream) -> Result<(Vec<T>, Span), PtxParseError>
1414where
1415 P: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1416 PS: Fn(&mut PtxTokenStream) -> Result<(S, Span), PtxParseError>,
1417{
1418 move |stream| {
1419 stream.try_with_span(|stream| {
1420 let (first, _) = parser(stream)?;
1421 let mut values = vec![first];
1422
1423 loop {
1424 let mut separator_failed = false;
1425 match stream.try_with_span(|stream| {
1426 separator(stream).map_err(|err| {
1427 separator_failed = true;
1428 err
1429 })?;
1430 parser(stream)
1431 }) {
1432 Ok(((value, _), _)) => values.push(value),
1433 Err(err) => {
1434 if separator_failed {
1435 break;
1436 } else {
1437 return Err(err);
1438 }
1439 }
1440 }
1441 }
1442
1443 Ok(values)
1444 })
1445 }
1446}
1447
1448#[allow(dead_code)]
1456pub fn peek<T, P>(parser: P) -> impl Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>
1457where
1458 P: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1459{
1460 move |stream| {
1461 let saved_pos = stream.position();
1462 let result = parser(stream);
1463 stream.set_position(saved_pos);
1464 result
1465 }
1466}
1467
1468#[allow(dead_code)]
1470pub fn check<F>(predicate: F) -> impl Fn(&mut PtxTokenStream) -> Result<bool, PtxParseError>
1471where
1472 F: Fn(&PtxToken) -> bool,
1473{
1474 move |stream| {
1475 Ok(stream
1476 .peek()
1477 .map(|(token, _)| predicate(&token))
1478 .unwrap_or(false))
1479 }
1480}
1481
1482#[allow(dead_code)]
1485pub fn peek_directive() -> impl Fn(&mut PtxTokenStream) -> Result<Option<String>, PtxParseError> {
1486 |stream| {
1487 let directive = match (stream.peek(), stream.peek_n(1)) {
1488 (Ok((PtxToken::Dot, _dot_span)), Ok((PtxToken::Identifier(name), _id_span))) => {
1489 Some(name.clone())
1490 }
1491 _ => None,
1492 };
1493 Ok(directive)
1494 }
1495}
1496
1497#[allow(dead_code)]
1504pub fn satisfy<F>(
1505 predicate: F,
1506 expected_msg: &'static str,
1507) -> impl Fn(&mut PtxTokenStream) -> Result<((PtxToken, Span), Span), PtxParseError>
1508where
1509 F: Fn(&PtxToken) -> bool + Clone + 'static,
1510{
1511 move |stream| {
1512 let eof_span = stream.current_span();
1513 stream.try_with_span(|stream| {
1514 let (token, span) = stream.peek().map_err(|_| PtxParseError {
1515 kind: ParseErrorKind::UnexpectedEof,
1516 span: eof_span,
1517 })?;
1518
1519 if predicate(&token) {
1520 stream.consume()?;
1521 Ok((token.clone(), *span))
1522 } else {
1523 Err(crate::unexpected_token!(
1524 *span,
1525 &[expected_msg.to_string()],
1526 format!("{:?}", token)
1527 ))
1528 }
1529 })
1530 }
1531}
1532
1533pub fn between<O, C, T, PO, PC, PT>(
1537 open: PO,
1538 close: PC,
1539 parser: PT,
1540) -> impl Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>
1541where
1542 PO: Fn(&mut PtxTokenStream) -> Result<(O, Span), PtxParseError>,
1543 PC: Fn(&mut PtxTokenStream) -> Result<(C, Span), PtxParseError>,
1544 PT: Fn(&mut PtxTokenStream) -> Result<(T, Span), PtxParseError>,
1545{
1546 move |stream| {
1547 stream.try_with_span(|stream| {
1548 let _ = open(stream)?;
1549 let (result, _) = parser(stream)?;
1550 let _ = close(stream)?;
1551 Ok(result)
1552 })
1553 }
1554}