#[doc(hidden)]
mod __meta_table {
use super::gazelle;
pub static ACTION_DATA: &[u32] = &[
1u32, 3u32, 4294967295u32, 4u32, 5u32, 6u32, 7u32, 4294967270u32, 58u32,
4294967270u32, 8u32, 4294967271u32, 4294967272u32, 4294967271u32, 4294967272u32,
12u32, 48u32, 13u32, 45u32, 4294967273u32, 16u32, 4294967273u32, 21u32,
4294967268u32, 4294967262u32, 16u32, 4294967294u32, 4294967269u32, 44u32,
4294967263u32, 24u32, 4294967263u32, 4294967263u32, 4294967268u32, 25u32, 19u32,
4294967281u32, 4294967269u32, 4294967274u32, 4294967274u32, 36u32, 37u32, 26u32,
35u32, 4294967281u32, 4294967277u32, 4294967277u32, 4294967287u32, 4294967287u32,
4294967280u32, 4294967281u32, 4294967281u32, 4294967281u32, 39u32, 40u32, 41u32,
42u32, 4294967280u32, 4294967266u32, 4294967286u32, 4294967286u32, 25u32, 43u32,
4294967280u32, 4294967280u32, 4294967280u32, 4294967266u32, 4294967275u32,
4294967275u32, 26u32, 4294967267u32, 25u32, 4294967266u32, 4294967266u32,
4294967266u32, 4294967276u32, 4294967276u32, 31u32, 4294967267u32, 26u32,
4294967288u32, 4294967284u32, 46u32, 47u32, 4294967267u32, 4294967267u32,
4294967267u32, 4294967278u32, 4294967279u32, 4294967284u32, 4294967288u32,
4294967283u32, 49u32, 56u32, 4294967282u32, 4294967284u32, 4294967284u32,
4294967284u32, 4294967289u32, 4294967283u32, 4294967289u32, 4294967289u32,
4294967282u32, 4294967285u32, 4294967291u32, 4294967283u32, 4294967283u32,
4294967283u32, 4294967282u32, 4294967282u32, 4294967282u32, 4294967285u32,
4294967292u32, 4294967264u32, 4294967292u32, 4294967264u32, 4294967278u32,
4294967285u32, 4294967285u32, 4294967285u32, 53u32, 49u32, 54u32, 4294967265u32,
59u32, 4294967265u32, 4294967262u32, 21u32, 4294967262u32, 4294967290u32,
4294967293u32, 4294967290u32, 4294967293u32, 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 ACTION_BASE: &[i32] = &[
-3i32,
0i32,
2i32,
-7i32,
0i32,
4i32,
-10i32,
2i32,
7i32,
6i32,
7i32,
10i32,
6i32,
16i32,
14i32,
19i32,
10i32,
22i32,
24i32,
26i32,
26i32,
27i32,
18i32,
16i32,
33i32,
35i32,
48i32,
23i32,
57i32,
25i32,
60i32,
42i32,
30i32,
69i32,
32i32,
44i32,
70i32,
79i32,
52i32,
80i32,
90i32,
93i32,
61i32,
102i32,
87i32,
81i32,
67i32,
107i32,
86i32,
87i32,
102i32,
92i32,
109i32,
103i32,
115i32,
112i32,
115i32,
118i32,
108i32,
125i32,
];
pub static ACTION_CHECK: &[u32] = &[
0u32, 1u32, 2u32, 3u32, 4u32, 5u32, 6u32, 7u32, 8u32, 7u32, 7u32, 9u32, 10u32,
9u32, 10u32, 11u32, 12u32, 11u32, 13u32, 14u32, 15u32, 14u32, 16u32, 17u32,
16u32, 18u32, 19u32, 20u32, 21u32, 22u32, 23u32, 22u32, 22u32, 17u32, 24u32,
18u32, 25u32, 20u32, 27u32, 27u32, 29u32, 29u32, 24u32, 31u32, 25u32, 32u32,
32u32, 34u32, 34u32, 26u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32, 25u32,
26u32, 28u32, 35u32, 35u32, 30u32, 42u32, 26u32, 26u32, 26u32, 28u32, 38u32,
38u32, 30u32, 33u32, 36u32, 28u32, 28u32, 28u32, 30u32, 30u32, 30u32, 33u32,
36u32, 37u32, 39u32, 45u32, 46u32, 33u32, 33u32, 33u32, 48u32, 49u32, 39u32,
37u32, 40u32, 48u32, 51u32, 41u32, 39u32, 39u32, 39u32, 44u32, 40u32, 44u32,
44u32, 41u32, 43u32, 53u32, 40u32, 40u32, 40u32, 41u32, 41u32, 41u32, 43u32,
47u32, 50u32, 47u32, 50u32, 54u32, 43u32, 43u32, 43u32, 52u32, 54u32, 52u32,
55u32, 58u32, 55u32, 56u32, 56u32, 56u32, 57u32, 59u32, 57u32, 59u32,
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 GOTO_DATA: &[u32] = &[
2u32, 9u32, 11u32, 14u32, 15u32, 22u32, 17u32, 20u32, 27u32, 0u32, 28u32, 22u32,
0u32, 29u32, 10u32, 18u32, 0u32, 30u32, 23u32, 32u32, 33u32, 38u32, 34u32, 28u32,
57u32, 50u32, 55u32, 0u32, 0u32, 0u32, 30u32, 51u32, 51u32, 0u32, 0u32, 0u32,
0u32, 0u32, 52u32, 0u32,
];
pub static GOTO_BASE: &[i32] = &[
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
-11i32,
1i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
1i32,
0i32,
0i32,
0i32,
0i32,
0i32,
1i32,
0i32,
0i32,
0i32,
0i32,
0i32,
11i32,
0i32,
0i32,
0i32,
0i32,
0i32,
14i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
0i32,
21i32,
0i32,
0i32,
0i32,
0i32,
0i32,
22i32,
0i32,
6i32,
0i32,
0i32,
0i32,
];
pub static GOTO_CHECK: &[u32] = &[
0u32, 7u32, 10u32, 11u32, 11u32, 16u32, 15u32, 18u32, 24u32, 4294967295u32,
24u32, 56u32, 4294967295u32, 24u32, 7u32, 15u32, 4294967295u32, 24u32, 16u32,
30u32, 30u32, 36u32, 30u32, 36u32, 56u32, 48u32, 54u32, 4294967295u32,
4294967295u32, 4294967295u32, 36u32, 48u32, 54u32, 4294967295u32, 4294967295u32,
4294967295u32, 4294967295u32, 4294967295u32, 48u32, 4294967295u32,
];
pub static RULES: &[(u32, u8)] = &[
(41u32, 1u8),
(22u32, 11u8),
(23u32, 3u8),
(24u32, 4u8),
(25u32, 4u8),
(26u32, 3u8),
(27u32, 2u8),
(28u32, 5u8),
(29u32, 2u8),
(30u32, 2u8),
(31u32, 3u8),
(31u32, 2u8),
(31u32, 2u8),
(31u32, 2u8),
(31u32, 1u8),
(31u32, 1u8),
(32u32, 1u8),
(32u32, 0u8),
(33u32, 1u8),
(33u32, 0u8),
(34u32, 3u8),
(34u32, 1u8),
(35u32, 2u8),
(35u32, 0u8),
(36u32, 1u8),
(36u32, 0u8),
(37u32, 2u8),
(37u32, 1u8),
(38u32, 2u8),
(38u32, 1u8),
(39u32, 3u8),
(39u32, 1u8),
(40u32, 1u8),
(40u32, 0u8),
];
pub static STATE_SYMBOL: &[u32] = &[
0u32, 3u32, 22u32, 1u32, 10u32, 4u32, 1u32, 16u32, 8u32, 23u32, 36u32, 35u32,
5u32, 7u32, 24u32, 25u32, 1u32, 28u32, 37u32, 11u32, 28u32, 12u32, 27u32, 40u32,
14u32, 1u32, 9u32, 29u32, 31u32, 34u32, 38u32, 17u32, 30u32, 31u32, 33u32, 1u32,
15u32, 16u32, 29u32, 18u32, 19u32, 20u32, 21u32, 1u32, 1u32, 2u32, 1u32, 16u32,
10u32, 6u32, 26u32, 32u32, 39u32, 11u32, 13u32, 26u32, 1u32, 40u32, 1u32, 16u32,
];
pub const NUM_STATES: usize = 60usize;
pub const NUM_TERMINALS: u32 = 22u32;
#[allow(dead_code)]
pub const NUM_NON_TERMINALS: u32 = 20u32;
pub static SYMBOL_NAMES: &[&str] = &[
"$",
"IDENT",
"NUM",
"KW_GRAMMAR",
"KW_START",
"KW_TERMINALS",
"KW_PREC",
"KW_EXPECT",
"KW_MODE",
"UNDERSCORE",
"LBRACE",
"RBRACE",
"COLON",
"COMMA",
"EQ",
"PIPE",
"SEMI",
"AT",
"QUESTION",
"STAR",
"PLUS",
"PERCENT",
"grammar_def",
"mode_decl",
"expect_decl",
"terminals_block",
"terminal_item",
"type_annot",
"rule",
"alt",
"action_name",
"symbol",
"__kw_prec_opt",
"__action_name_opt",
"__alt_sep_pipe",
"__expect_decl_star",
"__mode_decl_opt",
"__rule_plus",
"__symbol_plus",
"__terminal_item_sep_comma",
"__type_annot_opt",
"__start",
];
static STATE_ITEMS_0: &[(u16, u8)] = &[(0u16, 0u8), (1u16, 0u8)];
static STATE_ITEMS_1: &[(u16, u8)] = &[(1u16, 1u8)];
static STATE_ITEMS_2: &[(u16, u8)] = &[(0u16, 1u8)];
static STATE_ITEMS_3: &[(u16, u8)] = &[(1u16, 2u8)];
static STATE_ITEMS_4: &[(u16, u8)] = &[(1u16, 3u8)];
static STATE_ITEMS_5: &[(u16, u8)] = &[(1u16, 4u8)];
static STATE_ITEMS_6: &[(u16, u8)] = &[(1u16, 5u8)];
static STATE_ITEMS_7: &[(u16, u8)] = &[
(1u16, 6u8),
(2u16, 0u8),
(2u16, 0u8),
(24u16, 0u8),
(24u16, 0u8),
(25u16, 0u8),
(25u16, 0u8),
];
static STATE_ITEMS_8: &[(u16, u8)] = &[(2u16, 1u8), (2u16, 1u8)];
static STATE_ITEMS_9: &[(u16, u8)] = &[(24u16, 1u8), (24u16, 1u8)];
static STATE_ITEMS_10: &[(u16, u8)] = &[
(1u16, 7u8),
(22u16, 0u8),
(22u16, 0u8),
(23u16, 0u8),
(23u16, 0u8),
];
static STATE_ITEMS_11: &[(u16, u8)] = &[
(1u16, 8u8),
(3u16, 0u8),
(3u16, 0u8),
(4u16, 0u8),
(22u16, 1u8),
(22u16, 1u8),
];
static STATE_ITEMS_12: &[(u16, u8)] = &[(4u16, 1u8)];
static STATE_ITEMS_13: &[(u16, u8)] = &[(3u16, 1u8), (3u16, 1u8)];
static STATE_ITEMS_14: &[(u16, u8)] = &[(22u16, 2u8), (22u16, 2u8)];
static STATE_ITEMS_15: &[(u16, u8)] = &[
(1u16, 9u8),
(7u16, 0u8),
(7u16, 0u8),
(26u16, 0u8),
(26u16, 0u8),
(27u16, 0u8),
(27u16, 0u8),
];
static STATE_ITEMS_16: &[(u16, u8)] = &[
(6u16, 0u8),
(7u16, 1u8),
(7u16, 1u8),
(32u16, 0u8),
(33u16, 0u8),
];
static STATE_ITEMS_17: &[(u16, u8)] = &[(27u16, 1u8), (27u16, 1u8)];
static STATE_ITEMS_18: &[(u16, u8)] = &[
(1u16, 10u8),
(7u16, 0u8),
(7u16, 0u8),
(26u16, 1u8),
(26u16, 1u8),
];
static STATE_ITEMS_19: &[(u16, u8)] = &[(1u16, 11u8)];
static STATE_ITEMS_20: &[(u16, u8)] = &[(26u16, 2u8), (26u16, 2u8)];
static STATE_ITEMS_21: &[(u16, u8)] = &[(6u16, 1u8), (6u16, 1u8), (6u16, 1u8)];
static STATE_ITEMS_22: &[(u16, u8)] = &[(32u16, 1u8), (32u16, 1u8), (32u16, 1u8)];
static STATE_ITEMS_23: &[(u16, u8)] = &[(7u16, 2u8), (7u16, 2u8)];
static STATE_ITEMS_24: &[(u16, u8)] = &[
(7u16, 3u8),
(7u16, 3u8),
(8u16, 0u8),
(8u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(20u16, 0u8),
(20u16, 0u8),
(21u16, 0u8),
(21u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
];
static STATE_ITEMS_25: &[(u16, u8)] = &[
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(10u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(11u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(12u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(13u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
(14u16, 1u8),
];
static STATE_ITEMS_26: &[(u16, u8)] = &[
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
(15u16, 1u8),
];
static STATE_ITEMS_27: &[(u16, u8)] = &[(21u16, 1u8), (21u16, 1u8)];
static STATE_ITEMS_28: &[(u16, u8)] = &[
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
(29u16, 1u8),
];
static STATE_ITEMS_29: &[(u16, u8)] = &[
(7u16, 4u8),
(7u16, 4u8),
(20u16, 1u8),
(20u16, 1u8),
];
static STATE_ITEMS_30: &[(u16, u8)] = &[
(8u16, 1u8),
(8u16, 1u8),
(9u16, 0u8),
(9u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(18u16, 0u8),
(18u16, 0u8),
(19u16, 0u8),
(19u16, 0u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
(28u16, 1u8),
];
static STATE_ITEMS_31: &[(u16, u8)] = &[(9u16, 1u8), (9u16, 1u8)];
static STATE_ITEMS_32: &[(u16, u8)] = &[(18u16, 1u8), (18u16, 1u8)];
static STATE_ITEMS_33: &[(u16, u8)] = &[
(28u16, 2u8),
(28u16, 2u8),
(28u16, 2u8),
(28u16, 2u8),
(28u16, 2u8),
];
static STATE_ITEMS_34: &[(u16, u8)] = &[(8u16, 2u8), (8u16, 2u8)];
static STATE_ITEMS_35: &[(u16, u8)] = &[(9u16, 2u8), (9u16, 2u8)];
static STATE_ITEMS_36: &[(u16, u8)] = &[
(8u16, 0u8),
(8u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(10u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(11u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(12u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(13u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(14u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(15u16, 0u8),
(20u16, 2u8),
(20u16, 2u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(28u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
(29u16, 0u8),
];
static STATE_ITEMS_37: &[(u16, u8)] = &[(7u16, 5u8), (7u16, 5u8)];
static STATE_ITEMS_38: &[(u16, u8)] = &[(20u16, 3u8), (20u16, 3u8)];
static STATE_ITEMS_39: &[(u16, u8)] = &[
(11u16, 2u8),
(11u16, 2u8),
(11u16, 2u8),
(11u16, 2u8),
(11u16, 2u8),
];
static STATE_ITEMS_40: &[(u16, u8)] = &[
(12u16, 2u8),
(12u16, 2u8),
(12u16, 2u8),
(12u16, 2u8),
(12u16, 2u8),
];
static STATE_ITEMS_41: &[(u16, u8)] = &[
(13u16, 2u8),
(13u16, 2u8),
(13u16, 2u8),
(13u16, 2u8),
(13u16, 2u8),
];
static STATE_ITEMS_42: &[(u16, u8)] = &[
(10u16, 2u8),
(10u16, 2u8),
(10u16, 2u8),
(10u16, 2u8),
(10u16, 2u8),
];
static STATE_ITEMS_43: &[(u16, u8)] = &[
(10u16, 3u8),
(10u16, 3u8),
(10u16, 3u8),
(10u16, 3u8),
(10u16, 3u8),
];
static STATE_ITEMS_44: &[(u16, u8)] = &[(6u16, 2u8), (6u16, 2u8), (6u16, 2u8)];
static STATE_ITEMS_45: &[(u16, u8)] = &[(3u16, 2u8), (3u16, 2u8)];
static STATE_ITEMS_46: &[(u16, u8)] = &[(3u16, 3u8), (3u16, 3u8)];
static STATE_ITEMS_47: &[(u16, u8)] = &[(3u16, 4u8), (3u16, 4u8)];
static STATE_ITEMS_48: &[(u16, u8)] = &[
(4u16, 2u8),
(5u16, 0u8),
(5u16, 0u8),
(16u16, 0u8),
(17u16, 0u8),
(30u16, 0u8),
(30u16, 0u8),
(31u16, 0u8),
(31u16, 0u8),
];
static STATE_ITEMS_49: &[(u16, u8)] = &[(16u16, 1u8)];
static STATE_ITEMS_50: &[(u16, u8)] = &[(31u16, 1u8), (31u16, 1u8)];
static STATE_ITEMS_51: &[(u16, u8)] = &[(5u16, 1u8), (5u16, 1u8)];
static STATE_ITEMS_52: &[(u16, u8)] = &[(4u16, 3u8), (30u16, 1u8), (30u16, 1u8)];
static STATE_ITEMS_53: &[(u16, u8)] = &[(4u16, 4u8)];
static STATE_ITEMS_54: &[(u16, u8)] = &[
(5u16, 0u8),
(5u16, 0u8),
(16u16, 0u8),
(17u16, 0u8),
(30u16, 2u8),
(30u16, 2u8),
];
static STATE_ITEMS_55: &[(u16, u8)] = &[(30u16, 3u8), (30u16, 3u8)];
static STATE_ITEMS_56: &[(u16, u8)] = &[
(5u16, 2u8),
(5u16, 2u8),
(6u16, 0u8),
(6u16, 0u8),
(32u16, 0u8),
(32u16, 0u8),
(33u16, 0u8),
(33u16, 0u8),
];
static STATE_ITEMS_57: &[(u16, u8)] = &[(5u16, 3u8), (5u16, 3u8)];
static STATE_ITEMS_58: &[(u16, u8)] = &[(2u16, 2u8), (2u16, 2u8)];
static STATE_ITEMS_59: &[(u16, u8)] = &[(2u16, 3u8), (2u16, 3u8)];
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,
STATE_ITEMS_44,
STATE_ITEMS_45,
STATE_ITEMS_46,
STATE_ITEMS_47,
STATE_ITEMS_48,
STATE_ITEMS_49,
STATE_ITEMS_50,
STATE_ITEMS_51,
STATE_ITEMS_52,
STATE_ITEMS_53,
STATE_ITEMS_54,
STATE_ITEMS_55,
STATE_ITEMS_56,
STATE_ITEMS_57,
STATE_ITEMS_58,
STATE_ITEMS_59,
];
static RULE_RHS_0: &[u32] = &[22u32];
static RULE_RHS_1: &[u32] = &[
3u32, 1u32, 10u32, 4u32, 1u32, 16u32, 36u32, 35u32, 25u32, 37u32, 11u32,
];
static RULE_RHS_2: &[u32] = &[8u32, 1u32, 16u32];
static RULE_RHS_3: &[u32] = &[7u32, 2u32, 1u32, 16u32];
static RULE_RHS_4: &[u32] = &[5u32, 10u32, 39u32, 11u32];
static RULE_RHS_5: &[u32] = &[32u32, 1u32, 40u32];
static RULE_RHS_6: &[u32] = &[12u32, 1u32];
static RULE_RHS_7: &[u32] = &[1u32, 40u32, 14u32, 34u32, 16u32];
static RULE_RHS_8: &[u32] = &[38u32, 33u32];
static RULE_RHS_9: &[u32] = &[17u32, 1u32];
static RULE_RHS_10: &[u32] = &[1u32, 21u32, 1u32];
static RULE_RHS_11: &[u32] = &[1u32, 18u32];
static RULE_RHS_12: &[u32] = &[1u32, 19u32];
static RULE_RHS_13: &[u32] = &[1u32, 20u32];
static RULE_RHS_14: &[u32] = &[1u32];
static RULE_RHS_15: &[u32] = &[9u32];
static RULE_RHS_16: &[u32] = &[6u32];
static RULE_RHS_17: &[u32] = &[];
static RULE_RHS_18: &[u32] = &[30u32];
static RULE_RHS_19: &[u32] = &[];
static RULE_RHS_20: &[u32] = &[34u32, 15u32, 29u32];
static RULE_RHS_21: &[u32] = &[29u32];
static RULE_RHS_22: &[u32] = &[35u32, 24u32];
static RULE_RHS_23: &[u32] = &[];
static RULE_RHS_24: &[u32] = &[23u32];
static RULE_RHS_25: &[u32] = &[];
static RULE_RHS_26: &[u32] = &[37u32, 28u32];
static RULE_RHS_27: &[u32] = &[28u32];
static RULE_RHS_28: &[u32] = &[38u32, 31u32];
static RULE_RHS_29: &[u32] = &[31u32];
static RULE_RHS_30: &[u32] = &[39u32, 13u32, 26u32];
static RULE_RHS_31: &[u32] = &[26u32];
static RULE_RHS_32: &[u32] = &[27u32];
static RULE_RHS_33: &[u32] = &[];
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,
];
pub fn symbol_id(name: &str) -> gazelle::SymbolId {
match name {
"IDENT" => gazelle::SymbolId(1u32),
"NUM" => gazelle::SymbolId(2u32),
"KW_GRAMMAR" => gazelle::SymbolId(3u32),
"KW_START" => gazelle::SymbolId(4u32),
"KW_TERMINALS" => gazelle::SymbolId(5u32),
"KW_PREC" => gazelle::SymbolId(6u32),
"KW_EXPECT" => gazelle::SymbolId(7u32),
"KW_MODE" => gazelle::SymbolId(8u32),
"UNDERSCORE" => gazelle::SymbolId(9u32),
"LBRACE" => gazelle::SymbolId(10u32),
"RBRACE" => gazelle::SymbolId(11u32),
"COLON" => gazelle::SymbolId(12u32),
"COMMA" => gazelle::SymbolId(13u32),
"EQ" => gazelle::SymbolId(14u32),
"PIPE" => gazelle::SymbolId(15u32),
"SEMI" => gazelle::SymbolId(16u32),
"AT" => gazelle::SymbolId(17u32),
"QUESTION" => gazelle::SymbolId(18u32),
"STAR" => gazelle::SymbolId(19u32),
"PLUS" => gazelle::SymbolId(20u32),
"PERCENT" => gazelle::SymbolId(21u32),
"grammar_def" => gazelle::SymbolId(22u32),
"mode_decl" => gazelle::SymbolId(23u32),
"expect_decl" => gazelle::SymbolId(24u32),
"terminals_block" => gazelle::SymbolId(25u32),
"terminal_item" => gazelle::SymbolId(26u32),
"type_annot" => gazelle::SymbolId(27u32),
"rule" => gazelle::SymbolId(28u32),
"alt" => gazelle::SymbolId(29u32),
"action_name" => gazelle::SymbolId(30u32),
"symbol" => gazelle::SymbolId(31u32),
"__kw_prec_opt" => gazelle::SymbolId(32u32),
"__action_name_opt" => gazelle::SymbolId(33u32),
"__alt_sep_pipe" => gazelle::SymbolId(34u32),
"__expect_decl_star" => gazelle::SymbolId(35u32),
"__mode_decl_opt" => gazelle::SymbolId(36u32),
"__rule_plus" => gazelle::SymbolId(37u32),
"__symbol_plus" => gazelle::SymbolId(38u32),
"__terminal_item_sep_comma" => gazelle::SymbolId(39u32),
"__type_annot_opt" => gazelle::SymbolId(40u32),
_ => panic!("unknown symbol: {}", name),
}
}
pub static TABLE: gazelle::ParseTable<'static> = gazelle::ParseTable::new(
ACTION_DATA,
ACTION_BASE,
ACTION_CHECK,
GOTO_DATA,
GOTO_BASE,
GOTO_CHECK,
RULES,
NUM_TERMINALS,
);
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,
};
}
#[allow(non_camel_case_types)]
pub enum MetaTerminal<A: MetaTypes> {
IDENT(A::Ident),
NUM(A::Ident),
KW_GRAMMAR,
KW_START,
KW_TERMINALS,
KW_PREC,
KW_EXPECT,
KW_MODE,
UNDERSCORE,
LBRACE,
RBRACE,
COLON,
COMMA,
EQ,
PIPE,
SEMI,
AT,
QUESTION,
STAR,
PLUS,
PERCENT,
#[doc(hidden)]
__Phantom(std::marker::PhantomData<A>),
}
impl<A: MetaTypes> MetaTerminal<A> {
pub fn symbol_id(&self) -> gazelle::SymbolId {
match self {
Self::IDENT(_) => gazelle::SymbolId(1u32),
Self::NUM(_) => gazelle::SymbolId(2u32),
Self::KW_GRAMMAR => gazelle::SymbolId(3u32),
Self::KW_START => gazelle::SymbolId(4u32),
Self::KW_TERMINALS => gazelle::SymbolId(5u32),
Self::KW_PREC => gazelle::SymbolId(6u32),
Self::KW_EXPECT => gazelle::SymbolId(7u32),
Self::KW_MODE => gazelle::SymbolId(8u32),
Self::UNDERSCORE => gazelle::SymbolId(9u32),
Self::LBRACE => gazelle::SymbolId(10u32),
Self::RBRACE => gazelle::SymbolId(11u32),
Self::COLON => gazelle::SymbolId(12u32),
Self::COMMA => gazelle::SymbolId(13u32),
Self::EQ => gazelle::SymbolId(14u32),
Self::PIPE => gazelle::SymbolId(15u32),
Self::SEMI => gazelle::SymbolId(16u32),
Self::AT => gazelle::SymbolId(17u32),
Self::QUESTION => gazelle::SymbolId(18u32),
Self::STAR => gazelle::SymbolId(19u32),
Self::PLUS => gazelle::SymbolId(20u32),
Self::PERCENT => gazelle::SymbolId(21u32),
Self::__Phantom(_) => unreachable!(),
}
}
pub fn to_token(
&self,
symbol_ids: &impl Fn(&str) -> gazelle::SymbolId,
) -> gazelle::Token {
match self {
Self::IDENT(_) => gazelle::Token::new(symbol_ids("IDENT")),
Self::NUM(_) => gazelle::Token::new(symbol_ids("NUM")),
Self::KW_GRAMMAR => gazelle::Token::new(symbol_ids("KW_GRAMMAR")),
Self::KW_START => gazelle::Token::new(symbol_ids("KW_START")),
Self::KW_TERMINALS => gazelle::Token::new(symbol_ids("KW_TERMINALS")),
Self::KW_PREC => gazelle::Token::new(symbol_ids("KW_PREC")),
Self::KW_EXPECT => gazelle::Token::new(symbol_ids("KW_EXPECT")),
Self::KW_MODE => gazelle::Token::new(symbol_ids("KW_MODE")),
Self::UNDERSCORE => gazelle::Token::new(symbol_ids("UNDERSCORE")),
Self::LBRACE => gazelle::Token::new(symbol_ids("LBRACE")),
Self::RBRACE => gazelle::Token::new(symbol_ids("RBRACE")),
Self::COLON => gazelle::Token::new(symbol_ids("COLON")),
Self::COMMA => gazelle::Token::new(symbol_ids("COMMA")),
Self::EQ => gazelle::Token::new(symbol_ids("EQ")),
Self::PIPE => gazelle::Token::new(symbol_ids("PIPE")),
Self::SEMI => gazelle::Token::new(symbol_ids("SEMI")),
Self::AT => gazelle::Token::new(symbol_ids("AT")),
Self::QUESTION => gazelle::Token::new(symbol_ids("QUESTION")),
Self::STAR => gazelle::Token::new(symbol_ids("STAR")),
Self::PLUS => gazelle::Token::new(symbol_ids("PLUS")),
Self::PERCENT => gazelle::Token::new(symbol_ids("PERCENT")),
Self::__Phantom(_) => unreachable!(),
}
}
pub fn precedence(&self) -> Option<gazelle::Precedence> {
match self {
Self::IDENT(_) => None,
Self::NUM(_) => None,
Self::KW_GRAMMAR => None,
Self::KW_START => None,
Self::KW_TERMINALS => None,
Self::KW_PREC => None,
Self::KW_EXPECT => None,
Self::KW_MODE => None,
Self::UNDERSCORE => None,
Self::LBRACE => None,
Self::RBRACE => None,
Self::COLON => None,
Self::COMMA => None,
Self::EQ => None,
Self::PIPE => None,
Self::SEMI => None,
Self::AT => None,
Self::QUESTION => None,
Self::STAR => None,
Self::PLUS => None,
Self::PERCENT => None,
Self::__Phantom(_) => unreachable!(),
}
}
}
pub trait MetaTypes {
type Ident;
type GrammarDef;
type ExpectDecl;
type TerminalsBlock;
type TerminalItem;
type Rule;
type Alt;
type Symbol;
}
pub trait MetaActions<E: From<gazelle::ParseError> = gazelle::ParseError>: MetaTypes {
#[allow(unused_variables)]
fn set_token_range(&mut self, start: usize, end: usize) {}
fn grammar_def(
&mut self,
v0: Self::Ident,
v1: Self::Ident,
v2: Option<Self::Ident>,
v3: Vec<Self::ExpectDecl>,
v4: Self::TerminalsBlock,
v5: Vec<Self::Rule>,
) -> Result<Self::GrammarDef, E>;
fn mode_decl(&mut self, v0: Self::Ident) -> Result<Self::Ident, E>;
fn expect_decl(
&mut self,
v0: Self::Ident,
v1: Self::Ident,
) -> Result<Self::ExpectDecl, E>;
fn terminals_block(
&mut self,
v0: Vec<Self::TerminalItem>,
) -> Result<Self::TerminalsBlock, E>;
fn terminal_item(
&mut self,
v0: Option<()>,
v1: Self::Ident,
v2: Option<Self::Ident>,
) -> Result<Self::TerminalItem, E>;
fn type_annot(&mut self, v0: Self::Ident) -> Result<Self::Ident, E>;
fn rule(
&mut self,
v0: Self::Ident,
v1: Option<Self::Ident>,
v2: Vec<Self::Alt>,
) -> Result<Self::Rule, E>;
fn alt(
&mut self,
v0: Vec<Self::Symbol>,
v1: Option<Self::Ident>,
) -> Result<Self::Alt, E>;
fn action_name(&mut self, v0: Self::Ident) -> Result<Self::Ident, E>;
fn sym_sep(&mut self, v0: Self::Ident, v1: Self::Ident) -> Result<Self::Symbol, E>;
fn sym_opt(&mut self, v0: Self::Ident) -> Result<Self::Symbol, E>;
fn sym_star(&mut self, v0: Self::Ident) -> Result<Self::Symbol, E>;
fn sym_plus(&mut self, v0: Self::Ident) -> Result<Self::Symbol, E>;
fn sym_plain(&mut self, v0: Self::Ident) -> Result<Self::Symbol, E>;
fn sym_empty(&mut self) -> Result<Self::Symbol, E>;
}
#[doc(hidden)]
union __MetaValue<A: MetaTypes> {
__ident: std::mem::ManuallyDrop<A::Ident>,
__num: std::mem::ManuallyDrop<A::Ident>,
__grammar_def: std::mem::ManuallyDrop<A::GrammarDef>,
__mode_decl: std::mem::ManuallyDrop<A::Ident>,
__expect_decl: std::mem::ManuallyDrop<A::ExpectDecl>,
__terminals_block: std::mem::ManuallyDrop<A::TerminalsBlock>,
__terminal_item: std::mem::ManuallyDrop<A::TerminalItem>,
__type_annot: std::mem::ManuallyDrop<A::Ident>,
__rule: std::mem::ManuallyDrop<A::Rule>,
__alt: std::mem::ManuallyDrop<A::Alt>,
__action_name: std::mem::ManuallyDrop<A::Ident>,
__symbol: std::mem::ManuallyDrop<A::Symbol>,
____kw_prec_opt: std::mem::ManuallyDrop<Option<()>>,
____action_name_opt: std::mem::ManuallyDrop<Option<A::Ident>>,
____alt_sep_pipe: std::mem::ManuallyDrop<Vec<A::Alt>>,
____expect_decl_star: std::mem::ManuallyDrop<Vec<A::ExpectDecl>>,
____mode_decl_opt: std::mem::ManuallyDrop<Option<A::Ident>>,
____rule_plus: std::mem::ManuallyDrop<Vec<A::Rule>>,
____symbol_plus: std::mem::ManuallyDrop<Vec<A::Symbol>>,
____terminal_item_sep_comma: std::mem::ManuallyDrop<Vec<A::TerminalItem>>,
____type_annot_opt: std::mem::ManuallyDrop<Option<A::Ident>>,
__unit: (),
__phantom: std::mem::ManuallyDrop<std::marker::PhantomData<A>>,
}
pub struct MetaParser<
A: MetaActions<E>,
E: From<gazelle::ParseError> = gazelle::ParseError,
> {
parser: gazelle::Parser<'static>,
value_stack: Vec<__MetaValue<A>>,
_phantom: std::marker::PhantomData<E>,
}
#[allow(clippy::result_large_err)]
impl<A: MetaActions<E>, E: From<gazelle::ParseError>> MetaParser<A, E> {
pub fn new() -> Self {
Self {
parser: gazelle::Parser::new(__meta_table::TABLE),
value_stack: Vec::new(),
_phantom: std::marker::PhantomData,
}
}
pub fn push(&mut self, terminal: MetaTerminal<A>, actions: &mut A) -> Result<(), E> {
let token = gazelle::Token {
terminal: terminal.symbol_id(),
prec: terminal.precedence(),
};
while let Some((rule, _, start_idx)) = self
.parser
.maybe_reduce(Some(&token))
.map_err(E::from)?
{
self.do_reduce(rule, start_idx, actions)?;
}
self.parser.shift(&token);
match terminal {
MetaTerminal::IDENT(v) => {
self.value_stack
.push(__MetaValue {
__ident: std::mem::ManuallyDrop::new(v),
});
}
MetaTerminal::NUM(v) => {
self.value_stack
.push(__MetaValue {
__num: std::mem::ManuallyDrop::new(v),
});
}
MetaTerminal::KW_GRAMMAR => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::KW_START => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::KW_TERMINALS => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::KW_PREC => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::KW_EXPECT => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::KW_MODE => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::UNDERSCORE => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::LBRACE => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::RBRACE => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::COLON => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::COMMA => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::EQ => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::PIPE => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::SEMI => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::AT => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::QUESTION => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::STAR => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::PLUS => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::PERCENT => {
self.value_stack.push(__MetaValue { __unit: () });
}
MetaTerminal::__Phantom(_) => unreachable!(),
}
Ok(())
}
pub fn finish(mut self, actions: &mut A) -> Result<A::GrammarDef, (Self, E)> {
loop {
match self.parser.maybe_reduce(None) {
Ok(Some((0, _, _))) => {
let union_val = self.value_stack.pop().unwrap();
return Ok(unsafe {
std::mem::ManuallyDrop::into_inner(union_val.__grammar_def)
});
}
Ok(Some((rule, _, start_idx))) => {
if let Err(e) = self.do_reduce(rule, start_idx, actions) {
return Err((self, e));
}
}
Ok(None) => unreachable!(),
Err(e) => return Err((self, e.into())),
}
}
}
pub fn state(&self) -> usize {
self.parser.state()
}
pub fn format_error(&self, err: &gazelle::ParseError) -> String {
self.parser.format_error(err, &__meta_table::ERROR_INFO)
}
pub fn format_error_with(
&self,
err: &gazelle::ParseError,
display_names: &std::collections::HashMap<&str, &str>,
tokens: &[&str],
) -> String {
self.parser
.format_error_with(err, &__meta_table::ERROR_INFO, display_names, tokens)
}
pub fn error_info() -> &'static gazelle::ErrorInfo<'static> {
&__meta_table::ERROR_INFO
}
fn do_reduce(
&mut self,
rule: usize,
start_idx: usize,
actions: &mut A,
) -> Result<(), E> {
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 _ = self.value_stack.pop().unwrap();
let v9 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____rule_plus,
)
};
let v8 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__terminals_block,
)
};
let v7 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____expect_decl_star,
)
};
let v6 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____mode_decl_opt,
)
};
let _ = self.value_stack.pop().unwrap();
let v4 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
let _ = self.value_stack.pop().unwrap();
let _ = self.value_stack.pop().unwrap();
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
let _ = self.value_stack.pop().unwrap();
__MetaValue {
__grammar_def: std::mem::ManuallyDrop::new(
actions.grammar_def(v1, v4, v6, v7, v8, v9)?,
),
}
}
1usize => {
let _ = self.value_stack.pop().unwrap();
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
let _ = self.value_stack.pop().unwrap();
__MetaValue {
__mode_decl: std::mem::ManuallyDrop::new(actions.mode_decl(v1)?),
}
}
2usize => {
let _ = self.value_stack.pop().unwrap();
let v2 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__num,
)
};
let _ = self.value_stack.pop().unwrap();
__MetaValue {
__expect_decl: std::mem::ManuallyDrop::new(
actions.expect_decl(v1, v2)?,
),
}
}
3usize => {
let _ = self.value_stack.pop().unwrap();
let v2 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____terminal_item_sep_comma,
)
};
let _ = self.value_stack.pop().unwrap();
let _ = self.value_stack.pop().unwrap();
__MetaValue {
__terminals_block: std::mem::ManuallyDrop::new(
actions.terminals_block(v2)?,
),
}
}
4usize => {
let v2 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____type_annot_opt,
)
};
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____kw_prec_opt,
)
};
__MetaValue {
__terminal_item: std::mem::ManuallyDrop::new(
actions.terminal_item(v0, v1, v2)?,
),
}
}
5usize => {
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
let _ = self.value_stack.pop().unwrap();
__MetaValue {
__type_annot: std::mem::ManuallyDrop::new(actions.type_annot(v1)?),
}
}
6usize => {
let _ = self.value_stack.pop().unwrap();
let v3 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____alt_sep_pipe,
)
};
let _ = self.value_stack.pop().unwrap();
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____type_annot_opt,
)
};
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
__MetaValue {
__rule: std::mem::ManuallyDrop::new(actions.rule(v0, v1, v3)?),
}
}
7usize => {
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____action_name_opt,
)
};
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____symbol_plus,
)
};
__MetaValue {
__alt: std::mem::ManuallyDrop::new(actions.alt(v0, v1)?),
}
}
8usize => {
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
let _ = self.value_stack.pop().unwrap();
__MetaValue {
__action_name: std::mem::ManuallyDrop::new(actions.action_name(v1)?),
}
}
9usize => {
let v2 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
__MetaValue {
__symbol: std::mem::ManuallyDrop::new(actions.sym_sep(v0, v2)?),
}
}
10usize => {
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
__MetaValue {
__symbol: std::mem::ManuallyDrop::new(actions.sym_opt(v0)?),
}
}
11usize => {
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
__MetaValue {
__symbol: std::mem::ManuallyDrop::new(actions.sym_star(v0)?),
}
}
12usize => {
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
__MetaValue {
__symbol: std::mem::ManuallyDrop::new(actions.sym_plus(v0)?),
}
}
13usize => {
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__ident,
)
};
__MetaValue {
__symbol: std::mem::ManuallyDrop::new(actions.sym_plain(v0)?),
}
}
14usize => {
let _ = self.value_stack.pop().unwrap();
__MetaValue {
__symbol: std::mem::ManuallyDrop::new(actions.sym_empty()?),
}
}
15usize => {
let _ = self.value_stack.pop().unwrap();
__MetaValue {
____kw_prec_opt: std::mem::ManuallyDrop::new(Some(())),
}
}
16usize => {
__MetaValue {
____kw_prec_opt: std::mem::ManuallyDrop::new(None),
}
}
17usize => {
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__action_name,
)
};
__MetaValue {
____action_name_opt: std::mem::ManuallyDrop::new(Some(v0)),
}
}
18usize => {
__MetaValue {
____action_name_opt: std::mem::ManuallyDrop::new(None),
}
}
19usize => {
let v2 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__alt,
)
};
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____alt_sep_pipe,
)
};
{
let mut v0 = v0;
v0.push(v2);
__MetaValue {
____alt_sep_pipe: std::mem::ManuallyDrop::new(v0),
}
}
}
20usize => {
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__alt,
)
};
__MetaValue {
____alt_sep_pipe: std::mem::ManuallyDrop::new(vec![v0]),
}
}
21usize => {
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__expect_decl,
)
};
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____expect_decl_star,
)
};
{
let mut v0 = v0;
v0.push(v1);
__MetaValue {
____expect_decl_star: std::mem::ManuallyDrop::new(v0),
}
}
}
22usize => {
__MetaValue {
____expect_decl_star: std::mem::ManuallyDrop::new(Vec::new()),
}
}
23usize => {
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__mode_decl,
)
};
__MetaValue {
____mode_decl_opt: std::mem::ManuallyDrop::new(Some(v0)),
}
}
24usize => {
__MetaValue {
____mode_decl_opt: std::mem::ManuallyDrop::new(None),
}
}
25usize => {
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__rule,
)
};
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____rule_plus,
)
};
{
let mut v0 = v0;
v0.push(v1);
__MetaValue {
____rule_plus: std::mem::ManuallyDrop::new(v0),
}
}
}
26usize => {
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__rule,
)
};
__MetaValue {
____rule_plus: std::mem::ManuallyDrop::new(vec![v0]),
}
}
27usize => {
let v1 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__symbol,
)
};
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____symbol_plus,
)
};
{
let mut v0 = v0;
v0.push(v1);
__MetaValue {
____symbol_plus: std::mem::ManuallyDrop::new(v0),
}
}
}
28usize => {
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__symbol,
)
};
__MetaValue {
____symbol_plus: std::mem::ManuallyDrop::new(vec![v0]),
}
}
29usize => {
let v2 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__terminal_item,
)
};
let _ = self.value_stack.pop().unwrap();
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().____terminal_item_sep_comma,
)
};
{
let mut v0 = v0;
v0.push(v2);
__MetaValue {
____terminal_item_sep_comma: std::mem::ManuallyDrop::new(v0),
}
}
}
30usize => {
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__terminal_item,
)
};
__MetaValue {
____terminal_item_sep_comma: std::mem::ManuallyDrop::new(vec![v0]),
}
}
31usize => {
let v0 = unsafe {
std::mem::ManuallyDrop::into_inner(
self.value_stack.pop().unwrap().__type_annot,
)
};
__MetaValue {
____type_annot_opt: std::mem::ManuallyDrop::new(Some(v0)),
}
}
32usize => {
__MetaValue {
____type_annot_opt: std::mem::ManuallyDrop::new(None),
}
}
_ => return Ok(()),
};
self.value_stack.push(value);
Ok(())
}
}
impl<A: MetaActions<E>, E: From<gazelle::ParseError>> Default for MetaParser<A, E> {
fn default() -> Self {
Self::new()
}
}
impl<A: MetaActions<E>, E: From<gazelle::ParseError>> Drop for MetaParser<A, E> {
fn drop(&mut self) {
for i in (0..self.value_stack.len()).rev() {
let union_val = self.value_stack.pop().unwrap();
let sym_id = __meta_table::STATE_SYMBOL[self.parser.state_at(i)];
unsafe {
match sym_id {
1u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__ident);
}
2u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__num);
}
22u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__grammar_def);
}
23u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__mode_decl);
}
24u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__expect_decl);
}
25u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__terminals_block);
}
26u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__terminal_item);
}
27u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__type_annot);
}
28u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__rule);
}
29u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__alt);
}
30u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__action_name);
}
31u32 => {
std::mem::ManuallyDrop::into_inner(union_val.__symbol);
}
32u32 => {
std::mem::ManuallyDrop::into_inner(union_val.____kw_prec_opt);
}
33u32 => {
std::mem::ManuallyDrop::into_inner(
union_val.____action_name_opt,
);
}
34u32 => {
std::mem::ManuallyDrop::into_inner(union_val.____alt_sep_pipe);
}
35u32 => {
std::mem::ManuallyDrop::into_inner(
union_val.____expect_decl_star,
);
}
36u32 => {
std::mem::ManuallyDrop::into_inner(union_val.____mode_decl_opt);
}
37u32 => {
std::mem::ManuallyDrop::into_inner(union_val.____rule_plus);
}
38u32 => {
std::mem::ManuallyDrop::into_inner(union_val.____symbol_plus);
}
39u32 => {
std::mem::ManuallyDrop::into_inner(
union_val.____terminal_item_sep_comma,
);
}
40u32 => {
std::mem::ManuallyDrop::into_inner(union_val.____type_annot_opt);
}
_ => {}
}
}
}
}
}