#[doc(hidden)]
mod __table {
use super::gazelle;
pub static DATA: &[u32] = &[
28u32, 27u32, 29u32, 30u32, 31u32, 32u32, 33u32, 34u32, 35u32, 4294967295u32,
20u32, 36u32, 37u32, 28u32, 27u32, 29u32, 30u32, 31u32, 32u32, 33u32, 34u32,
35u32, 41u32, 21u32, 36u32, 37u32, 28u32, 42u32, 29u32, 30u32, 31u32, 32u32,
33u32, 34u32, 35u32, 18u32, 1u32, 36u32, 37u32, 12u32, 17u32, 13u32, 2u32, 8u32,
9u32, 10u32, 40u32, 5u32, 22u32, 16u32, 15u32, 14u32, 25u32, 0u32, 23u32, 0u32,
0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
0u32, 0u32, 0u32, 0u32,
];
pub static CHECK: &[u32] = &[
1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 9u32, 0u32, 11u32, 12u32, 13u32,
1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 9u32, 7u32, 12u32, 12u32, 13u32,
1u32, 13u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 9u32, 9u32, 0u32, 12u32, 13u32,
1u32, 2u32, 3u32, 41u32, 4u32, 5u32, 6u32, 8u32, 7u32, 10u32, 11u32, 12u32,
13u32, 42u32, 4294967295u32, 38u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 4294967295u32,
];
pub static ACTION_BASE: &[i32] = &[
38i32,
9i32,
0i32,
2i32,
15i32,
3i32,
4i32,
38i32,
5i32,
6i32,
7i32,
39i32,
8i32,
13i32,
17i32,
18i32,
19i32,
20i32,
21i32,
22i32,
23i32,
24i32,
11i32,
27i32,
28i32,
29i32,
14i32,
30i32,
31i32,
32i32,
33i32,
34i32,
35i32,
37i32,
41i32,
42i32,
43i32,
44i32,
-1i32,
12i32,
38i32,
38i32,
25i32,
26i32,
];
pub static GOTO_BASE: &[i32] = &[
36i32, 1i32, 40i32, 45i32, 46i32, 16i32, 10i32, 47i32, 48i32, 49i32, 50i32, 51i32,
];
pub static RULES: &[(u32, u8)] = &[
(25u32, 1u8),
(21u32, 3u8),
(21u32, 1u8),
(14u32, 1u8),
(22u32, 2u8),
(22u32, 1u8),
(15u32, 1u8),
(16u32, 2u8),
(16u32, 2u8),
(16u32, 2u8),
(16u32, 1u8),
(17u32, 1u8),
(17u32, 1u8),
(17u32, 1u8),
(17u32, 1u8),
(17u32, 1u8),
(17u32, 1u8),
(17u32, 3u8),
(17u32, 1u8),
(23u32, 1u8),
(23u32, 0u8),
(24u32, 2u8),
(24u32, 1u8),
(18u32, 4u8),
(19u32, 3u8),
(19u32, 1u8),
(19u32, 1u8),
(20u32, 1u8),
(20u32, 1u8),
(20u32, 1u8),
(20u32, 1u8),
(20u32, 1u8),
(20u32, 1u8),
(20u32, 1u8),
(20u32, 1u8),
(20u32, 1u8),
(20u32, 1u8),
];
pub static STATE_SYMBOL: &[u32] = &[
0u32, 14u32, 15u32, 15u32, 21u32, 16u32, 16u32, 22u32, 4u32, 5u32, 6u32, 17u32,
1u32, 3u32, 13u32, 12u32, 11u32, 2u32, 9u32, 18u32, 11u32, 12u32, 10u32, 19u32,
19u32, 20u32, 20u32, 2u32, 1u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 9u32, 12u32,
13u32, 24u32, 23u32, 8u32, 7u32, 13u32, 14u32,
];
pub static DEFAULT_REDUCE: &[u32] = &[
0u32, 0u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 9u32, 10u32, 11u32,
12u32, 13u32, 14u32, 15u32, 16u32, 17u32, 18u32, 23u32, 19u32, 20u32, 21u32,
22u32, 24u32, 25u32, 26u32, 27u32, 28u32, 29u32, 30u32, 31u32, 32u32, 33u32,
34u32, 35u32, 36u32, 0u32, 0u32, 0u32, 0u32, 0u32, 0u32,
];
pub static DEFAULT_GOTO: &[u32] = &[
43u32, 3u32, 6u32, 11u32, 19u32, 24u32, 26u32, 4u32, 7u32, 39u32, 38u32,
4294967295u32,
];
pub const NUM_STATES: usize = 44usize;
pub const NUM_TERMINALS: u32 = 14u32;
#[allow(dead_code)]
pub const NUM_NON_TERMINALS: u32 = 12u32;
pub static SYMBOL_NAMES: &[&str] = &[
"$",
"CHAR",
"SHORTHAND",
"DOT",
"STAR",
"PLUS",
"QUESTION",
"PIPE",
"LPAREN",
"RPAREN",
"LBRACKET",
"RBRACKET",
"CARET",
"DASH",
"regex",
"concat",
"repetition",
"atom",
"char_class",
"class_item",
"class_char",
"__concat_sep_pipe",
"__repetition_plus",
"__caret_opt",
"__class_item_plus",
"__start",
];
static STATE_ITEMS_0: &[(u16, u8)] = &[
(0u16, 0u8),
(1u16, 0u8),
(1u16, 0u8),
(2u16, 0u8),
(2u16, 0u8),
(3u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(6u16, 0u8),
(6u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
];
static STATE_ITEMS_1: &[(u16, u8)] = &[(0u16, 1u8)];
static STATE_ITEMS_2: &[(u16, u8)] = &[(1u16, 3u8), (1u16, 3u8)];
static STATE_ITEMS_3: &[(u16, u8)] = &[(2u16, 1u8), (2u16, 1u8)];
static STATE_ITEMS_4: &[(u16, u8)] = &[(1u16, 1u8), (1u16, 1u8), (3u16, 1u8)];
static STATE_ITEMS_5: &[(u16, u8)] = &[
(4u16, 2u8),
(4u16, 2u8),
(4u16, 2u8),
(4u16, 2u8),
(4u16, 2u8),
(4u16, 2u8),
(4u16, 2u8),
(4u16, 2u8),
(4u16, 2u8),
(4u16, 2u8),
];
static STATE_ITEMS_6: &[(u16, u8)] = &[
(5u16, 1u8),
(5u16, 1u8),
(5u16, 1u8),
(5u16, 1u8),
(5u16, 1u8),
(5u16, 1u8),
(5u16, 1u8),
(5u16, 1u8),
(5u16, 1u8),
(5u16, 1u8),
];
static STATE_ITEMS_7: &[(u16, u8)] = &[
(4u16, 1u8),
(4u16, 1u8),
(4u16, 1u8),
(4u16, 1u8),
(4u16, 1u8),
(4u16, 1u8),
(4u16, 1u8),
(4u16, 1u8),
(4u16, 1u8),
(4u16, 1u8),
(6u16, 1u8),
(6u16, 1u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
];
static STATE_ITEMS_8: &[(u16, u8)] = &[
(7u16, 2u8),
(7u16, 2u8),
(7u16, 2u8),
(7u16, 2u8),
(7u16, 2u8),
(7u16, 2u8),
(7u16, 2u8),
(7u16, 2u8),
(7u16, 2u8),
(7u16, 2u8),
];
static STATE_ITEMS_9: &[(u16, u8)] = &[
(8u16, 2u8),
(8u16, 2u8),
(8u16, 2u8),
(8u16, 2u8),
(8u16, 2u8),
(8u16, 2u8),
(8u16, 2u8),
(8u16, 2u8),
(8u16, 2u8),
(8u16, 2u8),
];
static STATE_ITEMS_10: &[(u16, u8)] = &[
(9u16, 2u8),
(9u16, 2u8),
(9u16, 2u8),
(9u16, 2u8),
(9u16, 2u8),
(9u16, 2u8),
(9u16, 2u8),
(9u16, 2u8),
(9u16, 2u8),
(9u16, 2u8),
];
static STATE_ITEMS_11: &[(u16, u8)] = &[
(7u16, 1u8),
(7u16, 1u8),
(7u16, 1u8),
(7u16, 1u8),
(7u16, 1u8),
(7u16, 1u8),
(7u16, 1u8),
(7u16, 1u8),
(7u16, 1u8),
(7u16, 1u8),
(8u16, 1u8),
(8u16, 1u8),
(8u16, 1u8),
(8u16, 1u8),
(8u16, 1u8),
(8u16, 1u8),
(8u16, 1u8),
(8u16, 1u8),
(8u16, 1u8),
(8u16, 1u8),
(9u16, 1u8),
(9u16, 1u8),
(9u16, 1u8),
(9u16, 1u8),
(9u16, 1u8),
(9u16, 1u8),
(9u16, 1u8),
(9u16, 1u8),
(9u16, 1u8),
(9u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
];
static STATE_ITEMS_12: &[(u16, u8)] = &[
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
];
static STATE_ITEMS_13: &[(u16, u8)] = &[
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
];
static STATE_ITEMS_14: &[(u16, u8)] = &[
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
];
static STATE_ITEMS_15: &[(u16, u8)] = &[
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
];
static STATE_ITEMS_16: &[(u16, u8)] = &[
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
];
static STATE_ITEMS_17: &[(u16, u8)] = &[
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
(16u16, 1u8),
];
static STATE_ITEMS_18: &[(u16, u8)] = &[
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
(17u16, 3u8),
];
static STATE_ITEMS_19: &[(u16, u8)] = &[
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
(18u16, 1u8),
];
static STATE_ITEMS_20: &[(u16, u8)] = &[
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
(23u16, 4u8),
];
static STATE_ITEMS_21: &[(u16, u8)] = &[
(19u16, 1u8),
(19u16, 1u8),
(19u16, 1u8),
(19u16, 1u8),
(19u16, 1u8),
(19u16, 1u8),
(19u16, 1u8),
(19u16, 1u8),
(19u16, 1u8),
(19u16, 1u8),
(19u16, 1u8),
];
static STATE_ITEMS_22: &[(u16, u8)] = &[
(19u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
(23u16, 1u8),
];
static STATE_ITEMS_23: &[(u16, u8)] = &[
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
(21u16, 2u8),
];
static STATE_ITEMS_24: &[(u16, u8)] = &[
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
(22u16, 1u8),
];
static STATE_ITEMS_25: &[(u16, u8)] = &[
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
(24u16, 3u8),
];
static STATE_ITEMS_26: &[(u16, u8)] = &[
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(24u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
(25u16, 1u8),
];
static STATE_ITEMS_27: &[(u16, u8)] = &[
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
(26u16, 1u8),
];
static STATE_ITEMS_28: &[(u16, u8)] = &[
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
(27u16, 1u8),
];
static STATE_ITEMS_29: &[(u16, u8)] = &[
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
];
static STATE_ITEMS_30: &[(u16, u8)] = &[
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
];
static STATE_ITEMS_31: &[(u16, u8)] = &[
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
(30u16, 1u8),
];
static STATE_ITEMS_32: &[(u16, u8)] = &[
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
(31u16, 1u8),
];
static STATE_ITEMS_33: &[(u16, u8)] = &[
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
(32u16, 1u8),
];
static STATE_ITEMS_34: &[(u16, u8)] = &[
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
(33u16, 1u8),
];
static STATE_ITEMS_35: &[(u16, u8)] = &[
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
(34u16, 1u8),
];
static STATE_ITEMS_36: &[(u16, u8)] = &[
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
(35u16, 1u8),
];
static STATE_ITEMS_37: &[(u16, u8)] = &[
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
(36u16, 1u8),
];
static STATE_ITEMS_38: &[(u16, u8)] = &[
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(21u16, 1u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(23u16, 3u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
];
static STATE_ITEMS_39: &[(u16, u8)] = &[
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(22u16, 0u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(23u16, 2u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
];
static STATE_ITEMS_40: &[(u16, u8)] = &[
(1u16, 0u8),
(1u16, 0u8),
(2u16, 0u8),
(2u16, 0u8),
(3u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(6u16, 0u8),
(6u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(17u16, 1u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
];
static STATE_ITEMS_41: &[(u16, u8)] = &[
(1u16, 2u8),
(1u16, 2u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(4u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(5u16, 0u8),
(6u16, 0u8),
(6u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(7u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(8u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(9u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(16u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(17u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
];
static STATE_ITEMS_42: &[(u16, u8)] = &[
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(24u16, 2u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(34u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(35u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
(36u16, 0u8),
];
static STATE_ITEMS_43: &[(u16, u8)] = &[
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
(17u16, 2u8),
];
pub static STATE_ITEMS: &[&[(u16, u8)]] = &[
STATE_ITEMS_0,
STATE_ITEMS_1,
STATE_ITEMS_2,
STATE_ITEMS_3,
STATE_ITEMS_4,
STATE_ITEMS_5,
STATE_ITEMS_6,
STATE_ITEMS_7,
STATE_ITEMS_8,
STATE_ITEMS_9,
STATE_ITEMS_10,
STATE_ITEMS_11,
STATE_ITEMS_12,
STATE_ITEMS_13,
STATE_ITEMS_14,
STATE_ITEMS_15,
STATE_ITEMS_16,
STATE_ITEMS_17,
STATE_ITEMS_18,
STATE_ITEMS_19,
STATE_ITEMS_20,
STATE_ITEMS_21,
STATE_ITEMS_22,
STATE_ITEMS_23,
STATE_ITEMS_24,
STATE_ITEMS_25,
STATE_ITEMS_26,
STATE_ITEMS_27,
STATE_ITEMS_28,
STATE_ITEMS_29,
STATE_ITEMS_30,
STATE_ITEMS_31,
STATE_ITEMS_32,
STATE_ITEMS_33,
STATE_ITEMS_34,
STATE_ITEMS_35,
STATE_ITEMS_36,
STATE_ITEMS_37,
STATE_ITEMS_38,
STATE_ITEMS_39,
STATE_ITEMS_40,
STATE_ITEMS_41,
STATE_ITEMS_42,
STATE_ITEMS_43,
];
static RULE_RHS_0: &[u32] = &[14u32];
static RULE_RHS_1: &[u32] = &[21u32, 7u32, 15u32];
static RULE_RHS_2: &[u32] = &[15u32];
static RULE_RHS_3: &[u32] = &[21u32];
static RULE_RHS_4: &[u32] = &[22u32, 16u32];
static RULE_RHS_5: &[u32] = &[16u32];
static RULE_RHS_6: &[u32] = &[22u32];
static RULE_RHS_7: &[u32] = &[17u32, 4u32];
static RULE_RHS_8: &[u32] = &[17u32, 5u32];
static RULE_RHS_9: &[u32] = &[17u32, 6u32];
static RULE_RHS_10: &[u32] = &[17u32];
static RULE_RHS_11: &[u32] = &[1u32];
static RULE_RHS_12: &[u32] = &[3u32];
static RULE_RHS_13: &[u32] = &[13u32];
static RULE_RHS_14: &[u32] = &[12u32];
static RULE_RHS_15: &[u32] = &[11u32];
static RULE_RHS_16: &[u32] = &[2u32];
static RULE_RHS_17: &[u32] = &[8u32, 14u32, 9u32];
static RULE_RHS_18: &[u32] = &[18u32];
static RULE_RHS_19: &[u32] = &[12u32];
static RULE_RHS_20: &[u32] = &[];
static RULE_RHS_21: &[u32] = &[24u32, 19u32];
static RULE_RHS_22: &[u32] = &[19u32];
static RULE_RHS_23: &[u32] = &[10u32, 23u32, 24u32, 11u32];
static RULE_RHS_24: &[u32] = &[20u32, 13u32, 20u32];
static RULE_RHS_25: &[u32] = &[20u32];
static RULE_RHS_26: &[u32] = &[2u32];
static RULE_RHS_27: &[u32] = &[1u32];
static RULE_RHS_28: &[u32] = &[3u32];
static RULE_RHS_29: &[u32] = &[4u32];
static RULE_RHS_30: &[u32] = &[5u32];
static RULE_RHS_31: &[u32] = &[6u32];
static RULE_RHS_32: &[u32] = &[7u32];
static RULE_RHS_33: &[u32] = &[8u32];
static RULE_RHS_34: &[u32] = &[9u32];
static RULE_RHS_35: &[u32] = &[12u32];
static RULE_RHS_36: &[u32] = &[13u32];
pub static RULE_RHS: &[&[u32]] = &[
RULE_RHS_0,
RULE_RHS_1,
RULE_RHS_2,
RULE_RHS_3,
RULE_RHS_4,
RULE_RHS_5,
RULE_RHS_6,
RULE_RHS_7,
RULE_RHS_8,
RULE_RHS_9,
RULE_RHS_10,
RULE_RHS_11,
RULE_RHS_12,
RULE_RHS_13,
RULE_RHS_14,
RULE_RHS_15,
RULE_RHS_16,
RULE_RHS_17,
RULE_RHS_18,
RULE_RHS_19,
RULE_RHS_20,
RULE_RHS_21,
RULE_RHS_22,
RULE_RHS_23,
RULE_RHS_24,
RULE_RHS_25,
RULE_RHS_26,
RULE_RHS_27,
RULE_RHS_28,
RULE_RHS_29,
RULE_RHS_30,
RULE_RHS_31,
RULE_RHS_32,
RULE_RHS_33,
RULE_RHS_34,
RULE_RHS_35,
RULE_RHS_36,
];
pub fn symbol_id(name: &str) -> gazelle::SymbolId {
match name {
"CHAR" => gazelle::SymbolId::new(1u32),
"SHORTHAND" => gazelle::SymbolId::new(2u32),
"DOT" => gazelle::SymbolId::new(3u32),
"STAR" => gazelle::SymbolId::new(4u32),
"PLUS" => gazelle::SymbolId::new(5u32),
"QUESTION" => gazelle::SymbolId::new(6u32),
"PIPE" => gazelle::SymbolId::new(7u32),
"LPAREN" => gazelle::SymbolId::new(8u32),
"RPAREN" => gazelle::SymbolId::new(9u32),
"LBRACKET" => gazelle::SymbolId::new(10u32),
"RBRACKET" => gazelle::SymbolId::new(11u32),
"CARET" => gazelle::SymbolId::new(12u32),
"DASH" => gazelle::SymbolId::new(13u32),
"regex" => gazelle::SymbolId::new(14u32),
"concat" => gazelle::SymbolId::new(15u32),
"repetition" => gazelle::SymbolId::new(16u32),
"atom" => gazelle::SymbolId::new(17u32),
"char_class" => gazelle::SymbolId::new(18u32),
"class_item" => gazelle::SymbolId::new(19u32),
"class_char" => gazelle::SymbolId::new(20u32),
"__concat_sep_pipe" => gazelle::SymbolId::new(21u32),
"__repetition_plus" => gazelle::SymbolId::new(22u32),
"__caret_opt" => gazelle::SymbolId::new(23u32),
"__class_item_plus" => gazelle::SymbolId::new(24u32),
"__start" => gazelle::SymbolId::new(25u32),
_ => panic!("unknown symbol: {}", name),
}
}
pub static TABLE: gazelle::ParseTable<'static> = gazelle::ParseTable::new(
DATA,
CHECK,
ACTION_BASE,
GOTO_BASE,
RULES,
NUM_TERMINALS,
DEFAULT_REDUCE,
DEFAULT_GOTO,
);
pub static ERROR_INFO: gazelle::ErrorInfo<'static> = gazelle::ErrorInfo {
symbol_names: SYMBOL_NAMES,
state_items: STATE_ITEMS,
rule_rhs: RULE_RHS,
state_symbols: STATE_SYMBOL,
};
}
pub enum Terminal<A: Types> {
Char(A::Char),
Shorthand(A::Shorthand),
Dot,
Star,
Plus,
Question,
Pipe,
Lparen,
Rparen,
Lbracket,
Rbracket,
Caret,
Dash,
#[doc(hidden)]
__Phantom(core::marker::PhantomData<A>),
}
impl<A: Types> Terminal<A> {
pub fn symbol_id(&self) -> gazelle::SymbolId {
match self {
Self::Char(_) => gazelle::SymbolId::new(1u32),
Self::Shorthand(_) => gazelle::SymbolId::new(2u32),
Self::Dot => gazelle::SymbolId::new(3u32),
Self::Star => gazelle::SymbolId::new(4u32),
Self::Plus => gazelle::SymbolId::new(5u32),
Self::Question => gazelle::SymbolId::new(6u32),
Self::Pipe => gazelle::SymbolId::new(7u32),
Self::Lparen => gazelle::SymbolId::new(8u32),
Self::Rparen => gazelle::SymbolId::new(9u32),
Self::Lbracket => gazelle::SymbolId::new(10u32),
Self::Rbracket => gazelle::SymbolId::new(11u32),
Self::Caret => gazelle::SymbolId::new(12u32),
Self::Dash => gazelle::SymbolId::new(13u32),
Self::__Phantom(_) => unreachable!(),
}
}
pub fn to_token(
&self,
symbol_ids: &impl Fn(&str) -> gazelle::SymbolId,
) -> gazelle::Token {
match self {
Self::Char(_) => gazelle::Token::new(symbol_ids("CHAR")),
Self::Shorthand(_) => gazelle::Token::new(symbol_ids("SHORTHAND")),
Self::Dot => gazelle::Token::new(symbol_ids("DOT")),
Self::Star => gazelle::Token::new(symbol_ids("STAR")),
Self::Plus => gazelle::Token::new(symbol_ids("PLUS")),
Self::Question => gazelle::Token::new(symbol_ids("QUESTION")),
Self::Pipe => gazelle::Token::new(symbol_ids("PIPE")),
Self::Lparen => gazelle::Token::new(symbol_ids("LPAREN")),
Self::Rparen => gazelle::Token::new(symbol_ids("RPAREN")),
Self::Lbracket => gazelle::Token::new(symbol_ids("LBRACKET")),
Self::Rbracket => gazelle::Token::new(symbol_ids("RBRACKET")),
Self::Caret => gazelle::Token::new(symbol_ids("CARET")),
Self::Dash => gazelle::Token::new(symbol_ids("DASH")),
Self::__Phantom(_) => unreachable!(),
}
}
pub fn resolution(&self) -> Option<gazelle::Resolution> {
match self {
Self::Char(_) => None,
Self::Shorthand(_) => None,
Self::Dot => None,
Self::Star => None,
Self::Plus => None,
Self::Question => None,
Self::Pipe => None,
Self::Lparen => None,
Self::Rparen => None,
Self::Lbracket => None,
Self::Rbracket => None,
Self::Caret => None,
Self::Dash => None,
Self::__Phantom(_) => unreachable!(),
}
}
}
pub enum Atom<A: Types> {
Char(A::Char),
Dot,
Dash,
Caret,
Rbracket,
Shorthand(A::Shorthand),
Group(A::Regex),
Class(A::CharClass),
}
pub enum CharClass<A: Types> {
Class(Option<()>, Vec<A::ClassItem>),
}
pub enum ClassChar<A: Types> {
Char(A::Char),
Dot,
Star,
Plus,
Question,
Pipe,
Lparen,
Rparen,
Caret,
Dash,
}
pub enum ClassItem<A: Types> {
Range(A::ClassChar, A::ClassChar),
Char(A::ClassChar),
Shorthand(A::Shorthand),
}
pub enum Concat<A: Types> {
Concat(Vec<A::Repetition>),
}
pub enum Regex<A: Types> {
Regex(Vec<A::Concat>),
}
pub enum Repetition<A: Types> {
Star(A::Atom),
Plus(A::Atom),
Opt(A::Atom),
Atom(A::Atom),
}
pub trait Types: gazelle::ErrorType + Sized {
type Char;
type Shorthand;
type Regex;
type Concat;
type Repetition;
type Atom;
type CharClass;
type ClassItem;
type ClassChar;
#[allow(unused_variables)]
fn set_token_range(&mut self, start: usize, end: usize) {}
}
impl<A: Types> gazelle::AstNode for Regex<A> {
type Output = A::Regex;
}
impl<A: Types> gazelle::AstNode for Concat<A> {
type Output = A::Concat;
}
impl<A: Types> gazelle::AstNode for Repetition<A> {
type Output = A::Repetition;
}
impl<A: Types> gazelle::AstNode for Atom<A> {
type Output = A::Atom;
}
impl<A: Types> gazelle::AstNode for CharClass<A> {
type Output = A::CharClass;
}
impl<A: Types> gazelle::AstNode for ClassItem<A> {
type Output = A::ClassItem;
}
impl<A: Types> gazelle::AstNode for ClassChar<A> {
type Output = A::ClassChar;
}
#[doc(hidden)]
union __Value<A: Types> {
__char: core::mem::ManuallyDrop<A::Char>,
__shorthand: core::mem::ManuallyDrop<A::Shorthand>,
__regex: core::mem::ManuallyDrop<A::Regex>,
__concat: core::mem::ManuallyDrop<A::Concat>,
__repetition: core::mem::ManuallyDrop<A::Repetition>,
__atom: core::mem::ManuallyDrop<A::Atom>,
__char_class: core::mem::ManuallyDrop<A::CharClass>,
__class_item: core::mem::ManuallyDrop<A::ClassItem>,
__class_char: core::mem::ManuallyDrop<A::ClassChar>,
____concat_sep_pipe: core::mem::ManuallyDrop<Vec<A::Concat>>,
____repetition_plus: core::mem::ManuallyDrop<Vec<A::Repetition>>,
____caret_opt: core::mem::ManuallyDrop<Option<()>>,
____class_item_plus: core::mem::ManuallyDrop<Vec<A::ClassItem>>,
__unit: (),
__phantom: core::mem::ManuallyDrop<core::marker::PhantomData<A>>,
}
pub struct Parser<A: Types> {
parser: gazelle::Parser<'static>,
value_stack: Vec<__Value<A>>,
}
impl<A: Types> Parser<A> {
pub fn new() -> Self {
Self {
parser: gazelle::Parser::new(__table::TABLE),
value_stack: Vec::new(),
}
}
pub fn state(&self) -> usize {
self.parser.state()
}
pub fn format_error(
&self,
terminal: gazelle::SymbolId,
display_names: Option<&[(&str, &str)]>,
tokens: Option<&[&str]>,
) -> String {
self.parser.format_error(terminal, &__table::ERROR_INFO, display_names, tokens)
}
pub fn error_info() -> &'static gazelle::ErrorInfo<'static> {
&__table::ERROR_INFO
}
pub fn recover(&mut self, buffer: &[gazelle::Token]) -> Vec<gazelle::RecoveryInfo> {
self.parser.recover(buffer)
}
fn drain_values(&mut self) {
for i in (0..self.value_stack.len()).rev() {
let union_val = self.value_stack.pop().unwrap();
let sym_id = __table::STATE_SYMBOL[self.parser.state_at(i)];
unsafe {
match sym_id {
1u32 => {
core::mem::ManuallyDrop::into_inner(union_val.__char);
}
2u32 => {
core::mem::ManuallyDrop::into_inner(union_val.__shorthand);
}
14u32 => {
core::mem::ManuallyDrop::into_inner(union_val.__regex);
}
15u32 => {
core::mem::ManuallyDrop::into_inner(union_val.__concat);
}
16u32 => {
core::mem::ManuallyDrop::into_inner(union_val.__repetition);
}
17u32 => {
core::mem::ManuallyDrop::into_inner(union_val.__atom);
}
18u32 => {
core::mem::ManuallyDrop::into_inner(union_val.__char_class);
}
19u32 => {
core::mem::ManuallyDrop::into_inner(union_val.__class_item);
}
20u32 => {
core::mem::ManuallyDrop::into_inner(union_val.__class_char);
}
21u32 => {
core::mem::ManuallyDrop::into_inner(
union_val.____concat_sep_pipe,
);
}
22u32 => {
core::mem::ManuallyDrop::into_inner(
union_val.____repetition_plus,
);
}
23u32 => {
core::mem::ManuallyDrop::into_inner(union_val.____caret_opt);
}
24u32 => {
core::mem::ManuallyDrop::into_inner(
union_val.____class_item_plus,
);
}
_ => {}
}
}
}
}
}
#[allow(clippy::result_large_err)]
impl<
A: Types + gazelle::Action<Regex<A>> + gazelle::Action<Concat<A>>
+ gazelle::Action<Repetition<A>> + gazelle::Action<Atom<A>>
+ gazelle::Action<CharClass<A>> + gazelle::Action<ClassItem<A>>
+ gazelle::Action<ClassChar<A>>,
> Parser<A> {
pub fn push(
&mut self,
terminal: Terminal<A>,
actions: &mut A,
) -> Result<(), gazelle::ParseError<A::Error>> {
let token = gazelle::Token {
terminal: terminal.symbol_id(),
resolution: terminal.resolution(),
};
loop {
match self.parser.maybe_reduce(Some(token)) {
Ok(Some((rule, _, start_idx))) => {
self.do_reduce(rule, start_idx, actions)
.map_err(gazelle::ParseError::Action)?;
}
Ok(None) => break,
Err(e) => {
self.drain_values();
self.parser.restore_checkpoint();
return Err(e.cast());
}
}
}
self.parser.shift(token);
match terminal {
Terminal::Char(v) => {
self.value_stack
.push(__Value {
__char: core::mem::ManuallyDrop::new(v),
});
}
Terminal::Shorthand(v) => {
self.value_stack
.push(__Value {
__shorthand: core::mem::ManuallyDrop::new(v),
});
}
Terminal::Dot => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Star => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Plus => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Question => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Pipe => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Lparen => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Rparen => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Lbracket => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Rbracket => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Caret => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::Dash => {
self.value_stack.push(__Value { __unit: () });
}
Terminal::__Phantom(_) => unreachable!(),
}
Ok(())
}
pub fn finish(
mut self,
actions: &mut A,
) -> Result<A::Regex, (Self, gazelle::ParseError<A::Error>)> {
loop {
match self.parser.maybe_reduce(None) {
Ok(Some((0, _, _))) => {
let union_val = self.value_stack.pop().unwrap();
return Ok(unsafe {
core::mem::ManuallyDrop::into_inner(union_val.__regex)
});
}
Ok(Some((rule, _, start_idx))) => {
if let Err(e) = self.do_reduce(rule, start_idx, actions) {
return Err((self, gazelle::ParseError::Action(e)));
}
}
Ok(None) => unreachable!(),
Err(e) => {
self.drain_values();
self.parser.restore_checkpoint();
return Err((self, e.cast()));
}
}
}
}
fn do_reduce(
&mut self,
rule: usize,
start_idx: usize,
actions: &mut A,
) -> Result<(), A::Error> {
if rule == 0 {
return Ok(());
}
actions.set_token_range(start_idx, self.parser.token_count());
let original_rule_idx = rule - 1;
let value = match original_rule_idx {
0usize => {
let v2 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__concat,
)
};
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____concat_sep_pipe,
)
};
{
let mut v0 = v0;
v0.push(v2);
__Value {
____concat_sep_pipe: core::mem::ManuallyDrop::new(v0),
}
}
}
1usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__concat,
)
};
__Value {
____concat_sep_pipe: core::mem::ManuallyDrop::new(vec![v0]),
}
}
2usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____concat_sep_pipe,
)
};
__Value {
__regex: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Regex::Regex(v0))?,
),
}
}
3usize => {
let v1 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__repetition,
)
};
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____repetition_plus,
)
};
{
let mut v0 = v0;
v0.push(v1);
__Value {
____repetition_plus: core::mem::ManuallyDrop::new(v0),
}
}
}
4usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__repetition,
)
};
__Value {
____repetition_plus: core::mem::ManuallyDrop::new(vec![v0]),
}
}
5usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____repetition_plus,
)
};
__Value {
__concat: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Concat::Concat(v0))?,
),
}
}
6usize => {
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__atom,
)
};
__Value {
__repetition: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Repetition::Star(v0))?,
),
}
}
7usize => {
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__atom,
)
};
__Value {
__repetition: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Repetition::Plus(v0))?,
),
}
}
8usize => {
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__atom,
)
};
__Value {
__repetition: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Repetition::Opt(v0))?,
),
}
}
9usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__atom,
)
};
__Value {
__repetition: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Repetition::Atom(v0))?,
),
}
}
10usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__char,
)
};
__Value {
__atom: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Atom::Char(v0))?,
),
}
}
11usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__atom: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Atom::Dot)?,
),
}
}
12usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__atom: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Atom::Dash)?,
),
}
}
13usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__atom: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Atom::Caret)?,
),
}
}
14usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__atom: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Atom::Rbracket)?,
),
}
}
15usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__shorthand,
)
};
__Value {
__atom: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Atom::Shorthand(v0))?,
),
}
}
16usize => {
let _ = self.value_stack.pop().unwrap();
let v1 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__regex,
)
};
let _ = self.value_stack.pop().unwrap();
__Value {
__atom: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Atom::Group(v1))?,
),
}
}
17usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__char_class,
)
};
__Value {
__atom: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, Atom::Class(v0))?,
),
}
}
18usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
____caret_opt: core::mem::ManuallyDrop::new(Some(())),
}
}
19usize => {
__Value {
____caret_opt: core::mem::ManuallyDrop::new(None),
}
}
20usize => {
let v1 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__class_item,
)
};
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____class_item_plus,
)
};
{
let mut v0 = v0;
v0.push(v1);
__Value {
____class_item_plus: core::mem::ManuallyDrop::new(v0),
}
}
}
21usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__class_item,
)
};
__Value {
____class_item_plus: core::mem::ManuallyDrop::new(vec![v0]),
}
}
22usize => {
let _ = self.value_stack.pop().unwrap();
let v2 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____class_item_plus,
)
};
let v1 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____caret_opt,
)
};
let _ = self.value_stack.pop().unwrap();
__Value {
__char_class: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, CharClass::Class(v1, v2))?,
),
}
}
23usize => {
let v2 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__class_char,
)
};
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__class_char,
)
};
__Value {
__class_item: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassItem::Range(v0, v2))?,
),
}
}
24usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__class_char,
)
};
__Value {
__class_item: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassItem::Char(v0))?,
),
}
}
25usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__shorthand,
)
};
__Value {
__class_item: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassItem::Shorthand(v0))?,
),
}
}
26usize => {
let v0 = unsafe {
core::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__char,
)
};
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Char(v0))?,
),
}
}
27usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Dot)?,
),
}
}
28usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Star)?,
),
}
}
29usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Plus)?,
),
}
}
30usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Question)?,
),
}
}
31usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Pipe)?,
),
}
}
32usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Lparen)?,
),
}
}
33usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Rparen)?,
),
}
}
34usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Caret)?,
),
}
}
35usize => {
let _ = self.value_stack.pop().unwrap();
__Value {
__class_char: core::mem::ManuallyDrop::new(
gazelle::Action::build(actions, ClassChar::Dash)?,
),
}
}
_ => return Ok(()),
};
self.value_stack.push(value);
Ok(())
}
}
impl<A: Types> Default for Parser<A> {
fn default() -> Self {
Self::new()
}
}
impl<A: Types> Drop for Parser<A> {
fn drop(&mut self) {
self.drain_values();
}
}