eonlib/opt/rustwide/target/x86_64-unknown-linux-gnu/debug/build/eon-4b1b136bbdb147f4/out/
parser.rs

1// auto-generated: "lalrpop 0.19.5"
2// sha3: 384b94f371a6ccde1d3d955ab441fc9f190445e92a3d0189addb19c8e19bde1
3use std::str::FromStr;
4use crate::ast;
5#[allow(unused_extern_crates)]
6extern crate lalrpop_util as __lalrpop_util;
7#[allow(unused_imports)]
8use self::__lalrpop_util::state_machine as __state_machine;
9extern crate core;
10extern crate alloc;
11
12#[cfg_attr(rustfmt, rustfmt_skip)]
13mod __parse__Program {
14    #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens)]
15
16    use std::str::FromStr;
17    use crate::ast;
18    #[allow(unused_extern_crates)]
19    extern crate lalrpop_util as __lalrpop_util;
20    #[allow(unused_imports)]
21    use self::__lalrpop_util::state_machine as __state_machine;
22    extern crate core;
23    extern crate alloc;
24    use self::__lalrpop_util::lexer::Token;
25    #[allow(dead_code)]
26    pub(crate) enum __Symbol<'input>
27     {
28        Variant0(&'input str),
29        Variant1((ast::Expr, ast::Expr)),
30        Variant2(alloc::vec::Vec<(ast::Expr, ast::Expr)>),
31        Variant3(ast::Expr),
32        Variant4(alloc::vec::Vec<ast::Expr>),
33        Variant5(core::option::Option<(ast::Expr, ast::Expr)>),
34        Variant6(ast::Block),
35        Variant7(Vec<(ast::Expr, ast::Expr)>),
36        Variant8(Vec<ast::Expr>),
37        Variant9(core::option::Option<ast::Expr>),
38        Variant10(String),
39        Variant11(f64),
40        Variant12(ast::Pattern),
41        Variant13(alloc::vec::Vec<ast::Pattern>),
42        Variant14(ast::Program),
43        Variant15(ast::Statement),
44        Variant16(alloc::vec::Vec<ast::Statement>),
45    }
46    const __ACTION: &[i8] = &[
47        // State 0
48        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 9, 0, 0, 34, 10, 0, 35, 36, 37, 38,
49        // State 1
50        4, 5, 32, -28, -28, 0, 13, 14, -28, -28, -28, 0, 6, -28, -28, 33, 0, 0, 0, 0, -28, 34, 10, -28, 35, 36, 37, 38,
51        // State 2
52        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 9, 0, 0, 34, 10, 0, 35, 36, 37, 38,
53        // State 3
54        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, -18, 35, 36, 37, 38,
55        // State 4
56        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
57        // State 5
58        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, -22, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
59        // State 6
60        0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0,
61        // State 7
62        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
63        // State 8
64        0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 37, 0,
65        // State 9
66        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 9, 0, 0, 34, 10, -15, 35, 36, 37, 38,
67        // State 10
68        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
69        // State 11
70        4, 5, 32, -26, -26, 0, 0, 0, -26, -26, -26, 0, 6, -26, -26, 33, 0, 0, 0, 0, -26, 34, 10, -26, 35, 36, 37, 38,
71        // State 12
72        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0,
73        // State 13
74        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
75        // State 14
76        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, -20, 35, 36, 37, 38,
77        // State 15
78        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, -24, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
79        // State 16
80        0, 0, 49, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0,
81        // State 17
82        0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0,
83        // State 18
84        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 9, 0, 0, 34, 10, -15, 35, 36, 37, 38,
85        // State 19
86        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
87        // State 20
88        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
89        // State 21
90        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
91        // State 22
92        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
93        // State 23
94        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
95        // State 24
96        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
97        // State 25
98        4, 5, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 33, 7, 8, 0, 0, 0, 34, 10, 0, 35, 36, 37, 38,
99        // State 26
100        0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
101        // State 27
102        -45, -45, -45, -45, -45, 0, -45, -45, -45, -45, -45, 0, -45, -45, -45, -45, 0, 0, 0, 0, -45, -45, -45, -45, -45, -45, -45, -45,
103        // State 28
104        -43, -43, -43, -43, -43, 0, -43, -43, -43, -43, -43, 0, -43, -43, -43, -43, 0, 0, 0, 0, -43, -43, -43, -43, -43, -43, -43, -43,
105        // State 29
106        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
107        // State 30
108        -60, -60, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, -60, -60, -60, -60, 0, 0, -60, -60, 0, -60, -60, -60, -60,
109        // State 31
110        -40, -40, -40, -40, -40, 0, -40, -40, -40, -40, -40, 0, -40, -40, -40, -40, 0, 0, 0, 0, -40, -40, -40, -40, -40, -40, -40, -40,
111        // State 32
112        -42, -42, -42, -42, -42, 0, -42, -42, -42, -42, -42, 0, -42, -42, -42, -42, 0, 0, 0, 0, -42, -42, -42, -42, -42, -42, -42, -42,
113        // State 33
114        -41, -41, -41, -41, -41, 0, -41, -41, -41, -41, -41, 0, -41, -41, -41, -41, 0, 0, 0, 0, -41, -41, -41, -41, -41, -41, -41, -41,
115        // State 34
116        -44, -44, -44, -44, -44, 0, -44, -44, -44, -44, -44, 0, -44, -44, -44, -44, 0, 0, 0, 0, -44, -44, -44, -44, -44, -44, -44, -44,
117        // State 35
118        -32, -32, -32, -32, -32, 0, -32, -32, -32, -32, -32, 0, -32, -32, -32, -32, 0, 0, 0, 0, -32, -32, -32, -32, -32, -32, -32, -32,
119        // State 36
120        -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, -31, 0, 0, 0, 0, -31, -31, -31, -31, -31, -31, -31, -31,
121        // State 37
122        -51, -51, -51, -51, -51, 0, -51, -51, -51, -51, -51, 0, -51, -51, -51, -51, 0, 0, 0, 0, -51, -51, -51, -51, -51, -51, -51, -51,
123        // State 38
124        -57, -57, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, -57, -57, -57, -57, 0, 0, -57, -57, -57, -57, -57, -57, -57,
125        // State 39
126        -52, -52, -52, -52, -52, 0, 13, 14, -52, -52, -52, 0, -52, -52, -52, -52, 0, 0, 0, 0, -52, -52, -52, -52, -52, -52, -52, -52,
127        // State 40
128        -61, -61, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, -61, -61, -61, -61, 0, 0, -61, -61, 0, -61, -61, -61, -61,
129        // State 41
130        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0,
131        // State 42
132        0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
133        // State 43
134        0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
135        // State 44
136        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
137        // State 45
138        0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, -21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
139        // State 46
140        0, 0, -34, 0, 0, -34, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0,
141        // State 47
142        0, 0, -35, 0, 0, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, 0,
143        // State 48
144        0, 0, -33, 0, 0, -33, 0, 0, 0, 0, 0, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 0,
145        // State 49
146        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0,
147        // State 50
148        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
149        // State 51
150        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0,
151        // State 52
152        0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, 0, 0, 0,
153        // State 53
154        0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
155        // State 54
156        -53, -53, -53, -53, -53, 0, 13, 14, -53, -53, -53, 0, -53, -53, -53, -53, 0, 0, 0, 0, -53, -53, -53, -53, -53, -53, -53, -53,
157        // State 55
158        -50, -50, -50, -50, -50, 0, -50, -50, -50, -50, -50, 0, -50, -50, -50, -50, 0, 0, 0, 0, -50, -50, -50, -50, -50, -50, -50, -50,
159        // State 56
160        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
161        // State 57
162        0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
163        // State 58
164        -48, -48, -48, -48, -48, 0, -48, -48, -48, -48, -48, 0, -48, -48, -48, -48, 0, 0, 0, 0, -48, -48, -48, -48, -48, -48, -48, -48,
165        // State 59
166        -39, -39, -39, -39, -39, 0, -39, -39, -39, -39, -39, 0, -39, -39, -39, -39, 0, 0, 0, 0, -39, -39, -39, -39, -39, -39, -39, -39,
167        // State 60
168        0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
169        // State 61
170        -47, -47, -47, -47, -47, 0, -47, -47, -47, -47, -47, 0, -47, -47, -47, -47, 0, 0, 0, 0, -47, -47, -47, -47, -47, -47, -47, -47,
171        // State 62
172        -9, -9, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -9, 0, -9, -9, -9, 0, 0, 0, -9, -9, 0, -9, -9, -9, -9,
173        // State 63
174        0, 0, -36, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0,
175        // State 64
176        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
177        // State 65
178        -46, -46, -46, -46, -46, 0, -46, -46, -46, -46, -46, 0, -46, -46, -46, -46, 0, 0, 0, 0, -46, -46, -46, -46, -46, -46, -46, -46,
179        // State 66
180        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0,
181        // State 67
182        -56, -56, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, -56, -56, -56, -56, 0, 0, -56, -56, -56, -56, -56, -56, -56,
183        // State 68
184        -49, -49, -49, -49, -49, 0, -49, -49, -49, -49, -49, 0, -49, -49, -49, -49, 0, 0, 0, 0, -49, -49, -49, -49, -49, -49, -49, -49,
185        // State 69
186        0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, 0, 0, 0,
187        // State 70
188        -10, -10, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -10, 0, -10, -10, -10, 0, 0, 0, -10, -10, 0, -10, -10, -10, -10,
189        // State 71
190        0, 0, 0, -25, -25, 0, 0, 0, -25, -25, -25, 0, 0, -25, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, 0,
191        // State 72
192        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
193        // State 73
194        0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
195        // State 74
196        0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, 0, 0, 0,
197        // State 75
198        -4, -4, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, -4, -4, -4, 0, 0, 0, -4, -4, -4, -4, -4, -4, -4,
199        // State 76
200        -55, -55, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, -55, 0, 0, -55, -55, -55, -55, 0, 0, -55, -55, -55, -55, -55, -55, -55,
201        // State 77
202        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
203        // State 78
204        -5, -5, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, -5, -5, -5, 0, 0, 0, -5, -5, -5, -5, -5, -5, -5,
205        // State 79
206        0, 0, 0, -27, -27, 0, 0, 0, -27, -27, -27, 0, 0, -27, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0,
207        // State 80
208        -54, -54, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, -54, -54, -54, -54, 0, 0, -54, -54, -54, -54, -54, -54, -54,
209    ];
210    fn __action(state: i8, integer: usize) -> i8 {
211        __ACTION[(state as usize) * 28 + integer]
212    }
213    const __EOF_ACTION: &[i8] = &[
214        // State 0
215        -37,
216        // State 1
217        0,
218        // State 2
219        -38,
220        // State 3
221        0,
222        // State 4
223        0,
224        // State 5
225        0,
226        // State 6
227        0,
228        // State 7
229        0,
230        // State 8
231        0,
232        // State 9
233        0,
234        // State 10
235        0,
236        // State 11
237        0,
238        // State 12
239        0,
240        // State 13
241        0,
242        // State 14
243        0,
244        // State 15
245        0,
246        // State 16
247        0,
248        // State 17
249        0,
250        // State 18
251        0,
252        // State 19
253        0,
254        // State 20
255        0,
256        // State 21
257        0,
258        // State 22
259        0,
260        // State 23
261        0,
262        // State 24
263        0,
264        // State 25
265        0,
266        // State 26
267        0,
268        // State 27
269        0,
270        // State 28
271        0,
272        // State 29
273        -62,
274        // State 30
275        -60,
276        // State 31
277        0,
278        // State 32
279        0,
280        // State 33
281        0,
282        // State 34
283        0,
284        // State 35
285        0,
286        // State 36
287        0,
288        // State 37
289        0,
290        // State 38
291        -57,
292        // State 39
293        0,
294        // State 40
295        -61,
296        // State 41
297        0,
298        // State 42
299        0,
300        // State 43
301        0,
302        // State 44
303        0,
304        // State 45
305        0,
306        // State 46
307        0,
308        // State 47
309        0,
310        // State 48
311        0,
312        // State 49
313        0,
314        // State 50
315        0,
316        // State 51
317        0,
318        // State 52
319        0,
320        // State 53
321        0,
322        // State 54
323        0,
324        // State 55
325        0,
326        // State 56
327        0,
328        // State 57
329        0,
330        // State 58
331        0,
332        // State 59
333        0,
334        // State 60
335        0,
336        // State 61
337        0,
338        // State 62
339        0,
340        // State 63
341        0,
342        // State 64
343        0,
344        // State 65
345        0,
346        // State 66
347        0,
348        // State 67
349        -56,
350        // State 68
351        0,
352        // State 69
353        0,
354        // State 70
355        0,
356        // State 71
357        0,
358        // State 72
359        0,
360        // State 73
361        0,
362        // State 74
363        0,
364        // State 75
365        0,
366        // State 76
367        -55,
368        // State 77
369        0,
370        // State 78
371        0,
372        // State 79
373        0,
374        // State 80
375        -54,
376    ];
377    fn __goto(state: i8, nt: usize) -> i8 {
378        match nt {
379            2 => 14,
380            5 => 15,
381            8 => match state {
382                18 => 66,
383                _ => 51,
384            },
385            9 => 41,
386            10 => 44,
387            11 => match state {
388                3 => 42,
389                4 => 43,
390                5 => 45,
391                7 => 49,
392                9 | 18 => 52,
393                10 => 53,
394                13 => 56,
395                14 => 57,
396                15 => 60,
397                19 => 69,
398                20 => 71,
399                21 => 72,
400                22 => 73,
401                23 => 74,
402                24 => 77,
403                25 => 79,
404                _ => 26,
405            },
406            13 => match state {
407                6 | 8 | 16..=17 => 46,
408                12 => 55,
409                _ => 27,
410            },
411            14 => 28,
412            15 => match state {
413                8 => 50,
414                16 => 63,
415                17 => 64,
416                _ => 47,
417            },
418            16 => 16,
419            17 => 29,
420            18 => match state {
421                1 => 39,
422                11 => 54,
423                _ => 1,
424            },
425            19 => 11,
426            20 => match state {
427                0 => 30,
428                2 => 40,
429                _ => 18,
430            },
431            22 => 2,
432            _ => 0,
433        }
434    }
435    fn __expected_tokens(__state: i8) -> alloc::vec::Vec<alloc::string::String> {
436        const __TERMINAL: &[&str] = &[
437            r###""%{""###,
438            r###""(""###,
439            r###""()""###,
440            r###"")""###,
441            r###"",""###,
442            r###""->""###,
443            r###"".""###,
444            r###"".[""###,
445            r###"":""###,
446            r###"";""###,
447            r###""<-""###,
448            r###""=""###,
449            r###""[""###,
450            r###""]""###,
451            r###""else""###,
452            r###""false""###,
453            r###""fun""###,
454            r###""if""###,
455            r###""let""###,
456            r###""rec""###,
457            r###""then""###,
458            r###""true""###,
459            r###""{""###,
460            r###""}""###,
461            r###"r#"\"[^\"]*\""#"###,
462            r###"r#"[0-9]+(\\.[0-9]+)?"#"###,
463            r###"r#"[a-zA-Z_][a-zA-Z0-9_]*"#"###,
464            r###"r#"raw`[^`]*`"#"###,
465        ];
466        __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
467            let next_state = __action(__state, index);
468            if next_state == 0 {
469                None
470            } else {
471                Some(alloc::string::ToString::to_string(terminal))
472            }
473        }).collect()
474    }
475    pub(crate) struct __StateMachine<'input>
476    where 
477    {
478        input: &'input str,
479        __phantom: core::marker::PhantomData<(&'input ())>,
480    }
481    impl<'input> __state_machine::ParserDefinition for __StateMachine<'input>
482    where 
483    {
484        type Location = usize;
485        type Error = &'static str;
486        type Token = Token<'input>;
487        type TokenIndex = usize;
488        type Symbol = __Symbol<'input>;
489        type Success = ast::Program;
490        type StateIndex = i8;
491        type Action = i8;
492        type ReduceIndex = i8;
493        type NonterminalIndex = usize;
494
495        #[inline]
496        fn start_location(&self) -> Self::Location {
497              Default::default()
498        }
499
500        #[inline]
501        fn start_state(&self) -> Self::StateIndex {
502              0
503        }
504
505        #[inline]
506        fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
507            __token_to_integer(token, core::marker::PhantomData::<(&())>)
508        }
509
510        #[inline]
511        fn action(&self, state: i8, integer: usize) -> i8 {
512            __action(state, integer)
513        }
514
515        #[inline]
516        fn error_action(&self, state: i8) -> i8 {
517            __action(state, 28 - 1)
518        }
519
520        #[inline]
521        fn eof_action(&self, state: i8) -> i8 {
522            __EOF_ACTION[state as usize]
523        }
524
525        #[inline]
526        fn goto(&self, state: i8, nt: usize) -> i8 {
527            __goto(state, nt)
528        }
529
530        fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
531            __token_to_symbol(token_index, token, core::marker::PhantomData::<(&())>)
532        }
533
534        fn expected_tokens(&self, state: i8) -> alloc::vec::Vec<alloc::string::String> {
535            __expected_tokens(state)
536        }
537
538        #[inline]
539        fn uses_error_recovery(&self) -> bool {
540            false
541        }
542
543        #[inline]
544        fn error_recovery_symbol(
545            &self,
546            recovery: __state_machine::ErrorRecovery<Self>,
547        ) -> Self::Symbol {
548            panic!("error recovery not enabled for this grammar")
549        }
550
551        fn reduce(
552            &mut self,
553            action: i8,
554            start_location: Option<&Self::Location>,
555            states: &mut alloc::vec::Vec<i8>,
556            symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
557        ) -> Option<__state_machine::ParseResult<Self>> {
558            __reduce(
559                self.input,
560                action,
561                start_location,
562                states,
563                symbols,
564                core::marker::PhantomData::<(&())>,
565            )
566        }
567
568        fn simulate_reduce(&self, action: i8) -> __state_machine::SimulatedReduce<Self> {
569            panic!("error recovery not enabled for this grammar")
570        }
571    }
572    fn __token_to_integer<
573        'input,
574    >(
575        __token: &Token<'input>,
576        _: core::marker::PhantomData<(&'input ())>,
577    ) -> Option<usize>
578    {
579        match *__token {
580            Token(4, _) if true => Some(0),
581            Token(5, _) if true => Some(1),
582            Token(6, _) if true => Some(2),
583            Token(7, _) if true => Some(3),
584            Token(8, _) if true => Some(4),
585            Token(9, _) if true => Some(5),
586            Token(10, _) if true => Some(6),
587            Token(11, _) if true => Some(7),
588            Token(12, _) if true => Some(8),
589            Token(13, _) if true => Some(9),
590            Token(14, _) if true => Some(10),
591            Token(15, _) if true => Some(11),
592            Token(16, _) if true => Some(12),
593            Token(17, _) if true => Some(13),
594            Token(18, _) if true => Some(14),
595            Token(19, _) if true => Some(15),
596            Token(20, _) if true => Some(16),
597            Token(21, _) if true => Some(17),
598            Token(22, _) if true => Some(18),
599            Token(23, _) if true => Some(19),
600            Token(24, _) if true => Some(20),
601            Token(25, _) if true => Some(21),
602            Token(26, _) if true => Some(22),
603            Token(27, _) if true => Some(23),
604            Token(0, _) if true => Some(24),
605            Token(1, _) if true => Some(25),
606            Token(2, _) if true => Some(26),
607            Token(3, _) if true => Some(27),
608            _ => None,
609        }
610    }
611    fn __token_to_symbol<
612        'input,
613    >(
614        __token_index: usize,
615        __token: Token<'input>,
616        _: core::marker::PhantomData<(&'input ())>,
617    ) -> __Symbol<'input>
618    {
619        match __token_index {
620            0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 => match __token {
621                Token(4, __tok0) | Token(5, __tok0) | Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(13, __tok0) | Token(14, __tok0) | Token(15, __tok0) | Token(16, __tok0) | Token(17, __tok0) | Token(18, __tok0) | Token(19, __tok0) | Token(20, __tok0) | Token(21, __tok0) | Token(22, __tok0) | Token(23, __tok0) | Token(24, __tok0) | Token(25, __tok0) | Token(26, __tok0) | Token(27, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) if true => __Symbol::Variant0(__tok0),
622                _ => unreachable!(),
623            },
624            _ => unreachable!(),
625        }
626    }
627    pub struct ProgramParser {
628        builder: __lalrpop_util::lexer::MatcherBuilder,
629        _priv: (),
630    }
631
632    impl ProgramParser {
633        pub fn new() -> ProgramParser {
634            let __builder = super::__intern_token::new_builder();
635            ProgramParser {
636                builder: __builder,
637                _priv: (),
638            }
639        }
640
641        #[allow(dead_code)]
642        pub fn parse<
643            'input,
644        >(
645            &self,
646            input: &'input str,
647        ) -> Result<ast::Program, __lalrpop_util::ParseError<usize, Token<'input>, &'static str>>
648        {
649            let mut __tokens = self.builder.matcher(input);
650            __state_machine::Parser::drive(
651                __StateMachine {
652                    input,
653                    __phantom: core::marker::PhantomData::<(&())>,
654                },
655                __tokens,
656            )
657        }
658    }
659    pub(crate) fn __reduce<
660        'input,
661    >(
662        input: &'input str,
663        __action: i8,
664        __lookahead_start: Option<&usize>,
665        __states: &mut alloc::vec::Vec<i8>,
666        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
667        _: core::marker::PhantomData<(&'input ())>,
668    ) -> Option<Result<ast::Program,__lalrpop_util::ParseError<usize, Token<'input>, &'static str>>>
669    {
670        let (__pop_states, __nonterminal) = match __action {
671            0 => {
672                __reduce0(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
673            }
674            1 => {
675                __reduce1(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
676            }
677            2 => {
678                __reduce2(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
679            }
680            3 => {
681                __reduce3(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
682            }
683            4 => {
684                __reduce4(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
685            }
686            5 => {
687                __reduce5(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
688            }
689            6 => {
690                __reduce6(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
691            }
692            7 => {
693                __reduce7(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
694            }
695            8 => {
696                __reduce8(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
697            }
698            9 => {
699                __reduce9(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
700            }
701            10 => {
702                __reduce10(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
703            }
704            11 => {
705                __reduce11(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
706            }
707            12 => {
708                __reduce12(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
709            }
710            13 => {
711                __reduce13(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
712            }
713            14 => {
714                __reduce14(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
715            }
716            15 => {
717                __reduce15(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
718            }
719            16 => {
720                __reduce16(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
721            }
722            17 => {
723                __reduce17(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
724            }
725            18 => {
726                __reduce18(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
727            }
728            19 => {
729                __reduce19(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
730            }
731            20 => {
732                __reduce20(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
733            }
734            21 => {
735                __reduce21(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
736            }
737            22 => {
738                __reduce22(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
739            }
740            23 => {
741                __reduce23(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
742            }
743            24 => {
744                __reduce24(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
745            }
746            25 => {
747                __reduce25(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
748            }
749            26 => {
750                __reduce26(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
751            }
752            27 => {
753                __reduce27(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
754            }
755            28 => {
756                __reduce28(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
757            }
758            29 => {
759                __reduce29(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
760            }
761            30 => {
762                __reduce30(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
763            }
764            31 => {
765                __reduce31(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
766            }
767            32 => {
768                __reduce32(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
769            }
770            33 => {
771                __reduce33(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
772            }
773            34 => {
774                __reduce34(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
775            }
776            35 => {
777                __reduce35(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
778            }
779            36 => {
780                __reduce36(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
781            }
782            37 => {
783                __reduce37(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
784            }
785            38 => {
786                __reduce38(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
787            }
788            39 => {
789                __reduce39(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
790            }
791            40 => {
792                __reduce40(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
793            }
794            41 => {
795                __reduce41(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
796            }
797            42 => {
798                __reduce42(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
799            }
800            43 => {
801                __reduce43(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
802            }
803            44 => {
804                __reduce44(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
805            }
806            45 => {
807                __reduce45(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
808            }
809            46 => {
810                __reduce46(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
811            }
812            47 => {
813                __reduce47(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
814            }
815            48 => {
816                __reduce48(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
817            }
818            49 => {
819                __reduce49(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
820            }
821            50 => {
822                __reduce50(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
823            }
824            51 => {
825                __reduce51(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
826            }
827            52 => {
828                __reduce52(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
829            }
830            53 => {
831                __reduce53(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
832            }
833            54 => {
834                __reduce54(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
835            }
836            55 => {
837                __reduce55(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
838            }
839            56 => {
840                __reduce56(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
841            }
842            57 => {
843                __reduce57(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
844            }
845            58 => {
846                __reduce58(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
847            }
848            59 => {
849                __reduce59(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
850            }
851            60 => {
852                __reduce60(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>)
853            }
854            61 => {
855                // __Program = Program => ActionFn(0);
856                let __sym0 = __pop_Variant14(__symbols);
857                let __start = __sym0.0.clone();
858                let __end = __sym0.2.clone();
859                let __nt = super::__action0::<>(input, __sym0);
860                return Some(Ok(__nt));
861            }
862            _ => panic!("invalid action code {}", __action)
863        };
864        let __states_len = __states.len();
865        __states.truncate(__states_len - __pop_states);
866        let __state = *__states.last().unwrap();
867        let __next_state = __goto(__state, __nonterminal);
868        __states.push(__next_state);
869        None
870    }
871    #[inline(never)]
872    fn __symbol_type_mismatch() -> ! {
873        panic!("symbol type mismatch")
874    }
875    fn __pop_Variant1<
876      'input,
877    >(
878        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
879    ) -> (usize, (ast::Expr, ast::Expr), usize)
880     {
881        match __symbols.pop() {
882            Some((__l, __Symbol::Variant1(__v), __r)) => (__l, __v, __r),
883            _ => __symbol_type_mismatch()
884        }
885    }
886    fn __pop_Variant10<
887      'input,
888    >(
889        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
890    ) -> (usize, String, usize)
891     {
892        match __symbols.pop() {
893            Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r),
894            _ => __symbol_type_mismatch()
895        }
896    }
897    fn __pop_Variant7<
898      'input,
899    >(
900        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
901    ) -> (usize, Vec<(ast::Expr, ast::Expr)>, usize)
902     {
903        match __symbols.pop() {
904            Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r),
905            _ => __symbol_type_mismatch()
906        }
907    }
908    fn __pop_Variant8<
909      'input,
910    >(
911        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
912    ) -> (usize, Vec<ast::Expr>, usize)
913     {
914        match __symbols.pop() {
915            Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r),
916            _ => __symbol_type_mismatch()
917        }
918    }
919    fn __pop_Variant2<
920      'input,
921    >(
922        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
923    ) -> (usize, alloc::vec::Vec<(ast::Expr, ast::Expr)>, usize)
924     {
925        match __symbols.pop() {
926            Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r),
927            _ => __symbol_type_mismatch()
928        }
929    }
930    fn __pop_Variant4<
931      'input,
932    >(
933        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
934    ) -> (usize, alloc::vec::Vec<ast::Expr>, usize)
935     {
936        match __symbols.pop() {
937            Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r),
938            _ => __symbol_type_mismatch()
939        }
940    }
941    fn __pop_Variant13<
942      'input,
943    >(
944        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
945    ) -> (usize, alloc::vec::Vec<ast::Pattern>, usize)
946     {
947        match __symbols.pop() {
948            Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r),
949            _ => __symbol_type_mismatch()
950        }
951    }
952    fn __pop_Variant16<
953      'input,
954    >(
955        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
956    ) -> (usize, alloc::vec::Vec<ast::Statement>, usize)
957     {
958        match __symbols.pop() {
959            Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r),
960            _ => __symbol_type_mismatch()
961        }
962    }
963    fn __pop_Variant6<
964      'input,
965    >(
966        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
967    ) -> (usize, ast::Block, usize)
968     {
969        match __symbols.pop() {
970            Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r),
971            _ => __symbol_type_mismatch()
972        }
973    }
974    fn __pop_Variant3<
975      'input,
976    >(
977        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
978    ) -> (usize, ast::Expr, usize)
979     {
980        match __symbols.pop() {
981            Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r),
982            _ => __symbol_type_mismatch()
983        }
984    }
985    fn __pop_Variant12<
986      'input,
987    >(
988        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
989    ) -> (usize, ast::Pattern, usize)
990     {
991        match __symbols.pop() {
992            Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r),
993            _ => __symbol_type_mismatch()
994        }
995    }
996    fn __pop_Variant14<
997      'input,
998    >(
999        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
1000    ) -> (usize, ast::Program, usize)
1001     {
1002        match __symbols.pop() {
1003            Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r),
1004            _ => __symbol_type_mismatch()
1005        }
1006    }
1007    fn __pop_Variant15<
1008      'input,
1009    >(
1010        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
1011    ) -> (usize, ast::Statement, usize)
1012     {
1013        match __symbols.pop() {
1014            Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r),
1015            _ => __symbol_type_mismatch()
1016        }
1017    }
1018    fn __pop_Variant5<
1019      'input,
1020    >(
1021        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
1022    ) -> (usize, core::option::Option<(ast::Expr, ast::Expr)>, usize)
1023     {
1024        match __symbols.pop() {
1025            Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r),
1026            _ => __symbol_type_mismatch()
1027        }
1028    }
1029    fn __pop_Variant9<
1030      'input,
1031    >(
1032        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
1033    ) -> (usize, core::option::Option<ast::Expr>, usize)
1034     {
1035        match __symbols.pop() {
1036            Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r),
1037            _ => __symbol_type_mismatch()
1038        }
1039    }
1040    fn __pop_Variant11<
1041      'input,
1042    >(
1043        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
1044    ) -> (usize, f64, usize)
1045     {
1046        match __symbols.pop() {
1047            Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r),
1048            _ => __symbol_type_mismatch()
1049        }
1050    }
1051    fn __pop_Variant0<
1052      'input,
1053    >(
1054        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>
1055    ) -> (usize, &'input str, usize)
1056     {
1057        match __symbols.pop() {
1058            Some((__l, __Symbol::Variant0(__v), __r)) => (__l, __v, __r),
1059            _ => __symbol_type_mismatch()
1060        }
1061    }
1062    pub(crate) fn __reduce0<
1063        'input,
1064    >(
1065        input: &'input str,
1066        __lookahead_start: Option<&usize>,
1067        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1068        _: core::marker::PhantomData<(&'input ())>,
1069    ) -> (usize, usize)
1070    {
1071        // (<<(<Expr> ":" <Expr>)>> ",") = Expr, ":", Expr, "," => ActionFn(54);
1072        assert!(__symbols.len() >= 4);
1073        let __sym3 = __pop_Variant0(__symbols);
1074        let __sym2 = __pop_Variant3(__symbols);
1075        let __sym1 = __pop_Variant0(__symbols);
1076        let __sym0 = __pop_Variant3(__symbols);
1077        let __start = __sym0.0.clone();
1078        let __end = __sym3.2.clone();
1079        let __nt = super::__action54::<>(input, __sym0, __sym1, __sym2, __sym3);
1080        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
1081        (4, 0)
1082    }
1083    pub(crate) fn __reduce1<
1084        'input,
1085    >(
1086        input: &'input str,
1087        __lookahead_start: Option<&usize>,
1088        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1089        _: core::marker::PhantomData<(&'input ())>,
1090    ) -> (usize, usize)
1091    {
1092        // (<<(<Expr> ":" <Expr>)>> ",")* =  => ActionFn(47);
1093        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
1094        let __end = __start.clone();
1095        let __nt = super::__action47::<>(input, &__start, &__end);
1096        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
1097        (0, 1)
1098    }
1099    pub(crate) fn __reduce2<
1100        'input,
1101    >(
1102        input: &'input str,
1103        __lookahead_start: Option<&usize>,
1104        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1105        _: core::marker::PhantomData<(&'input ())>,
1106    ) -> (usize, usize)
1107    {
1108        // (<<(<Expr> ":" <Expr>)>> ",")* = (<<(<Expr> ":" <Expr>)>> ",")+ => ActionFn(48);
1109        let __sym0 = __pop_Variant2(__symbols);
1110        let __start = __sym0.0.clone();
1111        let __end = __sym0.2.clone();
1112        let __nt = super::__action48::<>(input, __sym0);
1113        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
1114        (1, 1)
1115    }
1116    pub(crate) fn __reduce3<
1117        'input,
1118    >(
1119        input: &'input str,
1120        __lookahead_start: Option<&usize>,
1121        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1122        _: core::marker::PhantomData<(&'input ())>,
1123    ) -> (usize, usize)
1124    {
1125        // (<<(<Expr> ":" <Expr>)>> ",")+ = Expr, ":", Expr, "," => ActionFn(56);
1126        assert!(__symbols.len() >= 4);
1127        let __sym3 = __pop_Variant0(__symbols);
1128        let __sym2 = __pop_Variant3(__symbols);
1129        let __sym1 = __pop_Variant0(__symbols);
1130        let __sym0 = __pop_Variant3(__symbols);
1131        let __start = __sym0.0.clone();
1132        let __end = __sym3.2.clone();
1133        let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2, __sym3);
1134        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
1135        (4, 2)
1136    }
1137    pub(crate) fn __reduce4<
1138        'input,
1139    >(
1140        input: &'input str,
1141        __lookahead_start: Option<&usize>,
1142        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1143        _: core::marker::PhantomData<(&'input ())>,
1144    ) -> (usize, usize)
1145    {
1146        // (<<(<Expr> ":" <Expr>)>> ",")+ = (<<(<Expr> ":" <Expr>)>> ",")+, Expr, ":", Expr, "," => ActionFn(57);
1147        assert!(__symbols.len() >= 5);
1148        let __sym4 = __pop_Variant0(__symbols);
1149        let __sym3 = __pop_Variant3(__symbols);
1150        let __sym2 = __pop_Variant0(__symbols);
1151        let __sym1 = __pop_Variant3(__symbols);
1152        let __sym0 = __pop_Variant2(__symbols);
1153        let __start = __sym0.0.clone();
1154        let __end = __sym4.2.clone();
1155        let __nt = super::__action57::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4);
1156        __symbols.push((__start, __Symbol::Variant2(__nt), __end));
1157        (5, 2)
1158    }
1159    pub(crate) fn __reduce5<
1160        'input,
1161    >(
1162        input: &'input str,
1163        __lookahead_start: Option<&usize>,
1164        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1165        _: core::marker::PhantomData<(&'input ())>,
1166    ) -> (usize, usize)
1167    {
1168        // (<Expr> ",") = Expr, "," => ActionFn(44);
1169        assert!(__symbols.len() >= 2);
1170        let __sym1 = __pop_Variant0(__symbols);
1171        let __sym0 = __pop_Variant3(__symbols);
1172        let __start = __sym0.0.clone();
1173        let __end = __sym1.2.clone();
1174        let __nt = super::__action44::<>(input, __sym0, __sym1);
1175        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1176        (2, 3)
1177    }
1178    pub(crate) fn __reduce6<
1179        'input,
1180    >(
1181        input: &'input str,
1182        __lookahead_start: Option<&usize>,
1183        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1184        _: core::marker::PhantomData<(&'input ())>,
1185    ) -> (usize, usize)
1186    {
1187        // (<Expr> ",")* =  => ActionFn(42);
1188        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
1189        let __end = __start.clone();
1190        let __nt = super::__action42::<>(input, &__start, &__end);
1191        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
1192        (0, 4)
1193    }
1194    pub(crate) fn __reduce7<
1195        'input,
1196    >(
1197        input: &'input str,
1198        __lookahead_start: Option<&usize>,
1199        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1200        _: core::marker::PhantomData<(&'input ())>,
1201    ) -> (usize, usize)
1202    {
1203        // (<Expr> ",")* = (<Expr> ",")+ => ActionFn(43);
1204        let __sym0 = __pop_Variant4(__symbols);
1205        let __start = __sym0.0.clone();
1206        let __end = __sym0.2.clone();
1207        let __nt = super::__action43::<>(input, __sym0);
1208        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
1209        (1, 4)
1210    }
1211    pub(crate) fn __reduce8<
1212        'input,
1213    >(
1214        input: &'input str,
1215        __lookahead_start: Option<&usize>,
1216        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1217        _: core::marker::PhantomData<(&'input ())>,
1218    ) -> (usize, usize)
1219    {
1220        // (<Expr> ",")+ = Expr, "," => ActionFn(60);
1221        assert!(__symbols.len() >= 2);
1222        let __sym1 = __pop_Variant0(__symbols);
1223        let __sym0 = __pop_Variant3(__symbols);
1224        let __start = __sym0.0.clone();
1225        let __end = __sym1.2.clone();
1226        let __nt = super::__action60::<>(input, __sym0, __sym1);
1227        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
1228        (2, 5)
1229    }
1230    pub(crate) fn __reduce9<
1231        'input,
1232    >(
1233        input: &'input str,
1234        __lookahead_start: Option<&usize>,
1235        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1236        _: core::marker::PhantomData<(&'input ())>,
1237    ) -> (usize, usize)
1238    {
1239        // (<Expr> ",")+ = (<Expr> ",")+, Expr, "," => ActionFn(61);
1240        assert!(__symbols.len() >= 3);
1241        let __sym2 = __pop_Variant0(__symbols);
1242        let __sym1 = __pop_Variant3(__symbols);
1243        let __sym0 = __pop_Variant4(__symbols);
1244        let __start = __sym0.0.clone();
1245        let __end = __sym2.2.clone();
1246        let __nt = super::__action61::<>(input, __sym0, __sym1, __sym2);
1247        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
1248        (3, 5)
1249    }
1250    pub(crate) fn __reduce10<
1251        'input,
1252    >(
1253        input: &'input str,
1254        __lookahead_start: Option<&usize>,
1255        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1256        _: core::marker::PhantomData<(&'input ())>,
1257    ) -> (usize, usize)
1258    {
1259        // (<Expr> ":" <Expr>) = Expr, ":", Expr => ActionFn(30);
1260        assert!(__symbols.len() >= 3);
1261        let __sym2 = __pop_Variant3(__symbols);
1262        let __sym1 = __pop_Variant0(__symbols);
1263        let __sym0 = __pop_Variant3(__symbols);
1264        let __start = __sym0.0.clone();
1265        let __end = __sym2.2.clone();
1266        let __nt = super::__action30::<>(input, __sym0, __sym1, __sym2);
1267        __symbols.push((__start, __Symbol::Variant1(__nt), __end));
1268        (3, 6)
1269    }
1270    pub(crate) fn __reduce11<
1271        'input,
1272    >(
1273        input: &'input str,
1274        __lookahead_start: Option<&usize>,
1275        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1276        _: core::marker::PhantomData<(&'input ())>,
1277    ) -> (usize, usize)
1278    {
1279        // <(<Expr> ":" <Expr>)>? = Expr, ":", Expr => ActionFn(55);
1280        assert!(__symbols.len() >= 3);
1281        let __sym2 = __pop_Variant3(__symbols);
1282        let __sym1 = __pop_Variant0(__symbols);
1283        let __sym0 = __pop_Variant3(__symbols);
1284        let __start = __sym0.0.clone();
1285        let __end = __sym2.2.clone();
1286        let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2);
1287        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
1288        (3, 7)
1289    }
1290    pub(crate) fn __reduce12<
1291        'input,
1292    >(
1293        input: &'input str,
1294        __lookahead_start: Option<&usize>,
1295        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1296        _: core::marker::PhantomData<(&'input ())>,
1297    ) -> (usize, usize)
1298    {
1299        // <(<Expr> ":" <Expr>)>? =  => ActionFn(46);
1300        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
1301        let __end = __start.clone();
1302        let __nt = super::__action46::<>(input, &__start, &__end);
1303        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
1304        (0, 7)
1305    }
1306    pub(crate) fn __reduce13<
1307        'input,
1308    >(
1309        input: &'input str,
1310        __lookahead_start: Option<&usize>,
1311        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1312        _: core::marker::PhantomData<(&'input ())>,
1313    ) -> (usize, usize)
1314    {
1315        // Block = Expr => ActionFn(68);
1316        let __sym0 = __pop_Variant3(__symbols);
1317        let __start = __sym0.0.clone();
1318        let __end = __sym0.2.clone();
1319        let __nt = super::__action68::<>(input, __sym0);
1320        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
1321        (1, 8)
1322    }
1323    pub(crate) fn __reduce14<
1324        'input,
1325    >(
1326        input: &'input str,
1327        __lookahead_start: Option<&usize>,
1328        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1329        _: core::marker::PhantomData<(&'input ())>,
1330    ) -> (usize, usize)
1331    {
1332        // Block =  => ActionFn(69);
1333        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
1334        let __end = __start.clone();
1335        let __nt = super::__action69::<>(input, &__start, &__end);
1336        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
1337        (0, 8)
1338    }
1339    pub(crate) fn __reduce15<
1340        'input,
1341    >(
1342        input: &'input str,
1343        __lookahead_start: Option<&usize>,
1344        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1345        _: core::marker::PhantomData<(&'input ())>,
1346    ) -> (usize, usize)
1347    {
1348        // Block = Statement, Block => ActionFn(3);
1349        assert!(__symbols.len() >= 2);
1350        let __sym1 = __pop_Variant6(__symbols);
1351        let __sym0 = __pop_Variant15(__symbols);
1352        let __start = __sym0.0.clone();
1353        let __end = __sym1.2.clone();
1354        let __nt = super::__action3::<>(input, __sym0, __sym1);
1355        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
1356        (2, 8)
1357    }
1358    pub(crate) fn __reduce16<
1359        'input,
1360    >(
1361        input: &'input str,
1362        __lookahead_start: Option<&usize>,
1363        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1364        _: core::marker::PhantomData<(&'input ())>,
1365    ) -> (usize, usize)
1366    {
1367        // Comma<<(<Expr> ":" <Expr>)>> = Expr, ":", Expr => ActionFn(64);
1368        assert!(__symbols.len() >= 3);
1369        let __sym2 = __pop_Variant3(__symbols);
1370        let __sym1 = __pop_Variant0(__symbols);
1371        let __sym0 = __pop_Variant3(__symbols);
1372        let __start = __sym0.0.clone();
1373        let __end = __sym2.2.clone();
1374        let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2);
1375        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
1376        (3, 9)
1377    }
1378    pub(crate) fn __reduce17<
1379        'input,
1380    >(
1381        input: &'input str,
1382        __lookahead_start: Option<&usize>,
1383        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1384        _: core::marker::PhantomData<(&'input ())>,
1385    ) -> (usize, usize)
1386    {
1387        // Comma<<(<Expr> ":" <Expr>)>> =  => ActionFn(65);
1388        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
1389        let __end = __start.clone();
1390        let __nt = super::__action65::<>(input, &__start, &__end);
1391        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
1392        (0, 9)
1393    }
1394    pub(crate) fn __reduce18<
1395        'input,
1396    >(
1397        input: &'input str,
1398        __lookahead_start: Option<&usize>,
1399        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1400        _: core::marker::PhantomData<(&'input ())>,
1401    ) -> (usize, usize)
1402    {
1403        // Comma<<(<Expr> ":" <Expr>)>> = (<<(<Expr> ":" <Expr>)>> ",")+, Expr, ":", Expr => ActionFn(66);
1404        assert!(__symbols.len() >= 4);
1405        let __sym3 = __pop_Variant3(__symbols);
1406        let __sym2 = __pop_Variant0(__symbols);
1407        let __sym1 = __pop_Variant3(__symbols);
1408        let __sym0 = __pop_Variant2(__symbols);
1409        let __start = __sym0.0.clone();
1410        let __end = __sym3.2.clone();
1411        let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3);
1412        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
1413        (4, 9)
1414    }
1415    pub(crate) fn __reduce19<
1416        'input,
1417    >(
1418        input: &'input str,
1419        __lookahead_start: Option<&usize>,
1420        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1421        _: core::marker::PhantomData<(&'input ())>,
1422    ) -> (usize, usize)
1423    {
1424        // Comma<<(<Expr> ":" <Expr>)>> = (<<(<Expr> ":" <Expr>)>> ",")+ => ActionFn(67);
1425        let __sym0 = __pop_Variant2(__symbols);
1426        let __start = __sym0.0.clone();
1427        let __end = __sym0.2.clone();
1428        let __nt = super::__action67::<>(input, __sym0);
1429        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
1430        (1, 9)
1431    }
1432    pub(crate) fn __reduce20<
1433        'input,
1434    >(
1435        input: &'input str,
1436        __lookahead_start: Option<&usize>,
1437        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1438        _: core::marker::PhantomData<(&'input ())>,
1439    ) -> (usize, usize)
1440    {
1441        // Comma<Expr> = Expr => ActionFn(70);
1442        let __sym0 = __pop_Variant3(__symbols);
1443        let __start = __sym0.0.clone();
1444        let __end = __sym0.2.clone();
1445        let __nt = super::__action70::<>(input, __sym0);
1446        __symbols.push((__start, __Symbol::Variant8(__nt), __end));
1447        (1, 10)
1448    }
1449    pub(crate) fn __reduce21<
1450        'input,
1451    >(
1452        input: &'input str,
1453        __lookahead_start: Option<&usize>,
1454        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1455        _: core::marker::PhantomData<(&'input ())>,
1456    ) -> (usize, usize)
1457    {
1458        // Comma<Expr> =  => ActionFn(71);
1459        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
1460        let __end = __start.clone();
1461        let __nt = super::__action71::<>(input, &__start, &__end);
1462        __symbols.push((__start, __Symbol::Variant8(__nt), __end));
1463        (0, 10)
1464    }
1465    pub(crate) fn __reduce22<
1466        'input,
1467    >(
1468        input: &'input str,
1469        __lookahead_start: Option<&usize>,
1470        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1471        _: core::marker::PhantomData<(&'input ())>,
1472    ) -> (usize, usize)
1473    {
1474        // Comma<Expr> = (<Expr> ",")+, Expr => ActionFn(72);
1475        assert!(__symbols.len() >= 2);
1476        let __sym1 = __pop_Variant3(__symbols);
1477        let __sym0 = __pop_Variant4(__symbols);
1478        let __start = __sym0.0.clone();
1479        let __end = __sym1.2.clone();
1480        let __nt = super::__action72::<>(input, __sym0, __sym1);
1481        __symbols.push((__start, __Symbol::Variant8(__nt), __end));
1482        (2, 10)
1483    }
1484    pub(crate) fn __reduce23<
1485        'input,
1486    >(
1487        input: &'input str,
1488        __lookahead_start: Option<&usize>,
1489        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1490        _: core::marker::PhantomData<(&'input ())>,
1491    ) -> (usize, usize)
1492    {
1493        // Comma<Expr> = (<Expr> ",")+ => ActionFn(73);
1494        let __sym0 = __pop_Variant4(__symbols);
1495        let __start = __sym0.0.clone();
1496        let __end = __sym0.2.clone();
1497        let __nt = super::__action73::<>(input, __sym0);
1498        __symbols.push((__start, __Symbol::Variant8(__nt), __end));
1499        (1, 10)
1500    }
1501    pub(crate) fn __reduce24<
1502        'input,
1503    >(
1504        input: &'input str,
1505        __lookahead_start: Option<&usize>,
1506        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1507        _: core::marker::PhantomData<(&'input ())>,
1508    ) -> (usize, usize)
1509    {
1510        // Expr = "fun", Pattern+, "->", Expr => ActionFn(8);
1511        assert!(__symbols.len() >= 4);
1512        let __sym3 = __pop_Variant3(__symbols);
1513        let __sym2 = __pop_Variant0(__symbols);
1514        let __sym1 = __pop_Variant13(__symbols);
1515        let __sym0 = __pop_Variant0(__symbols);
1516        let __start = __sym0.0.clone();
1517        let __end = __sym3.2.clone();
1518        let __nt = super::__action8::<>(input, __sym0, __sym1, __sym2, __sym3);
1519        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1520        (4, 11)
1521    }
1522    pub(crate) fn __reduce25<
1523        'input,
1524    >(
1525        input: &'input str,
1526        __lookahead_start: Option<&usize>,
1527        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1528        _: core::marker::PhantomData<(&'input ())>,
1529    ) -> (usize, usize)
1530    {
1531        // Expr = SimpleExpr, SimpleExpr+ => ActionFn(9);
1532        assert!(__symbols.len() >= 2);
1533        let __sym1 = __pop_Variant4(__symbols);
1534        let __sym0 = __pop_Variant3(__symbols);
1535        let __start = __sym0.0.clone();
1536        let __end = __sym1.2.clone();
1537        let __nt = super::__action9::<>(input, __sym0, __sym1);
1538        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1539        (2, 11)
1540    }
1541    pub(crate) fn __reduce26<
1542        'input,
1543    >(
1544        input: &'input str,
1545        __lookahead_start: Option<&usize>,
1546        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1547        _: core::marker::PhantomData<(&'input ())>,
1548    ) -> (usize, usize)
1549    {
1550        // Expr = "if", Expr, "then", Expr, "else", Expr => ActionFn(10);
1551        assert!(__symbols.len() >= 6);
1552        let __sym5 = __pop_Variant3(__symbols);
1553        let __sym4 = __pop_Variant0(__symbols);
1554        let __sym3 = __pop_Variant3(__symbols);
1555        let __sym2 = __pop_Variant0(__symbols);
1556        let __sym1 = __pop_Variant3(__symbols);
1557        let __sym0 = __pop_Variant0(__symbols);
1558        let __start = __sym0.0.clone();
1559        let __end = __sym5.2.clone();
1560        let __nt = super::__action10::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
1561        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1562        (6, 11)
1563    }
1564    pub(crate) fn __reduce27<
1565        'input,
1566    >(
1567        input: &'input str,
1568        __lookahead_start: Option<&usize>,
1569        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1570        _: core::marker::PhantomData<(&'input ())>,
1571    ) -> (usize, usize)
1572    {
1573        // Expr = SimpleExpr => ActionFn(11);
1574        let __sym0 = __pop_Variant3(__symbols);
1575        let __start = __sym0.0.clone();
1576        let __end = __sym0.2.clone();
1577        let __nt = super::__action11::<>(input, __sym0);
1578        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1579        (1, 11)
1580    }
1581    pub(crate) fn __reduce28<
1582        'input,
1583    >(
1584        input: &'input str,
1585        __lookahead_start: Option<&usize>,
1586        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1587        _: core::marker::PhantomData<(&'input ())>,
1588    ) -> (usize, usize)
1589    {
1590        // Expr? = Expr => ActionFn(36);
1591        let __sym0 = __pop_Variant3(__symbols);
1592        let __start = __sym0.0.clone();
1593        let __end = __sym0.2.clone();
1594        let __nt = super::__action36::<>(input, __sym0);
1595        __symbols.push((__start, __Symbol::Variant9(__nt), __end));
1596        (1, 12)
1597    }
1598    pub(crate) fn __reduce29<
1599        'input,
1600    >(
1601        input: &'input str,
1602        __lookahead_start: Option<&usize>,
1603        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1604        _: core::marker::PhantomData<(&'input ())>,
1605    ) -> (usize, usize)
1606    {
1607        // Expr? =  => ActionFn(37);
1608        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
1609        let __end = __start.clone();
1610        let __nt = super::__action37::<>(input, &__start, &__end);
1611        __symbols.push((__start, __Symbol::Variant9(__nt), __end));
1612        (0, 12)
1613    }
1614    pub(crate) fn __reduce30<
1615        'input,
1616    >(
1617        input: &'input str,
1618        __lookahead_start: Option<&usize>,
1619        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1620        _: core::marker::PhantomData<(&'input ())>,
1621    ) -> (usize, usize)
1622    {
1623        // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(27);
1624        let __sym0 = __pop_Variant0(__symbols);
1625        let __start = __sym0.0.clone();
1626        let __end = __sym0.2.clone();
1627        let __nt = super::__action27::<>(input, __sym0);
1628        __symbols.push((__start, __Symbol::Variant10(__nt), __end));
1629        (1, 13)
1630    }
1631    pub(crate) fn __reduce31<
1632        'input,
1633    >(
1634        input: &'input str,
1635        __lookahead_start: Option<&usize>,
1636        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1637        _: core::marker::PhantomData<(&'input ())>,
1638    ) -> (usize, usize)
1639    {
1640        // Number = r#"[0-9]+(\\.[0-9]+)?"# => ActionFn(28);
1641        let __sym0 = __pop_Variant0(__symbols);
1642        let __start = __sym0.0.clone();
1643        let __end = __sym0.2.clone();
1644        let __nt = super::__action28::<>(input, __sym0);
1645        __symbols.push((__start, __Symbol::Variant11(__nt), __end));
1646        (1, 14)
1647    }
1648    pub(crate) fn __reduce32<
1649        'input,
1650    >(
1651        input: &'input str,
1652        __lookahead_start: Option<&usize>,
1653        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1654        _: core::marker::PhantomData<(&'input ())>,
1655    ) -> (usize, usize)
1656    {
1657        // Pattern = "()" => ActionFn(25);
1658        let __sym0 = __pop_Variant0(__symbols);
1659        let __start = __sym0.0.clone();
1660        let __end = __sym0.2.clone();
1661        let __nt = super::__action25::<>(input, __sym0);
1662        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
1663        (1, 15)
1664    }
1665    pub(crate) fn __reduce33<
1666        'input,
1667    >(
1668        input: &'input str,
1669        __lookahead_start: Option<&usize>,
1670        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1671        _: core::marker::PhantomData<(&'input ())>,
1672    ) -> (usize, usize)
1673    {
1674        // Pattern = Identifier => ActionFn(26);
1675        let __sym0 = __pop_Variant10(__symbols);
1676        let __start = __sym0.0.clone();
1677        let __end = __sym0.2.clone();
1678        let __nt = super::__action26::<>(input, __sym0);
1679        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
1680        (1, 15)
1681    }
1682    pub(crate) fn __reduce34<
1683        'input,
1684    >(
1685        input: &'input str,
1686        __lookahead_start: Option<&usize>,
1687        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1688        _: core::marker::PhantomData<(&'input ())>,
1689    ) -> (usize, usize)
1690    {
1691        // Pattern+ = Pattern => ActionFn(34);
1692        let __sym0 = __pop_Variant12(__symbols);
1693        let __start = __sym0.0.clone();
1694        let __end = __sym0.2.clone();
1695        let __nt = super::__action34::<>(input, __sym0);
1696        __symbols.push((__start, __Symbol::Variant13(__nt), __end));
1697        (1, 16)
1698    }
1699    pub(crate) fn __reduce35<
1700        'input,
1701    >(
1702        input: &'input str,
1703        __lookahead_start: Option<&usize>,
1704        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1705        _: core::marker::PhantomData<(&'input ())>,
1706    ) -> (usize, usize)
1707    {
1708        // Pattern+ = Pattern+, Pattern => ActionFn(35);
1709        assert!(__symbols.len() >= 2);
1710        let __sym1 = __pop_Variant12(__symbols);
1711        let __sym0 = __pop_Variant13(__symbols);
1712        let __start = __sym0.0.clone();
1713        let __end = __sym1.2.clone();
1714        let __nt = super::__action35::<>(input, __sym0, __sym1);
1715        __symbols.push((__start, __Symbol::Variant13(__nt), __end));
1716        (2, 16)
1717    }
1718    pub(crate) fn __reduce36<
1719        'input,
1720    >(
1721        input: &'input str,
1722        __lookahead_start: Option<&usize>,
1723        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1724        _: core::marker::PhantomData<(&'input ())>,
1725    ) -> (usize, usize)
1726    {
1727        // Program =  => ActionFn(74);
1728        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
1729        let __end = __start.clone();
1730        let __nt = super::__action74::<>(input, &__start, &__end);
1731        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
1732        (0, 17)
1733    }
1734    pub(crate) fn __reduce37<
1735        'input,
1736    >(
1737        input: &'input str,
1738        __lookahead_start: Option<&usize>,
1739        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1740        _: core::marker::PhantomData<(&'input ())>,
1741    ) -> (usize, usize)
1742    {
1743        // Program = Statement+ => ActionFn(75);
1744        let __sym0 = __pop_Variant16(__symbols);
1745        let __start = __sym0.0.clone();
1746        let __end = __sym0.2.clone();
1747        let __nt = super::__action75::<>(input, __sym0);
1748        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
1749        (1, 17)
1750    }
1751    pub(crate) fn __reduce38<
1752        'input,
1753    >(
1754        input: &'input str,
1755        __lookahead_start: Option<&usize>,
1756        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1757        _: core::marker::PhantomData<(&'input ())>,
1758    ) -> (usize, usize)
1759    {
1760        // SimpleExpr = "(", Expr, ")" => ActionFn(12);
1761        assert!(__symbols.len() >= 3);
1762        let __sym2 = __pop_Variant0(__symbols);
1763        let __sym1 = __pop_Variant3(__symbols);
1764        let __sym0 = __pop_Variant0(__symbols);
1765        let __start = __sym0.0.clone();
1766        let __end = __sym2.2.clone();
1767        let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2);
1768        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1769        (3, 18)
1770    }
1771    pub(crate) fn __reduce39<
1772        'input,
1773    >(
1774        input: &'input str,
1775        __lookahead_start: Option<&usize>,
1776        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1777        _: core::marker::PhantomData<(&'input ())>,
1778    ) -> (usize, usize)
1779    {
1780        // SimpleExpr = "()" => ActionFn(13);
1781        let __sym0 = __pop_Variant0(__symbols);
1782        let __start = __sym0.0.clone();
1783        let __end = __sym0.2.clone();
1784        let __nt = super::__action13::<>(input, __sym0);
1785        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1786        (1, 18)
1787    }
1788    pub(crate) fn __reduce40<
1789        'input,
1790    >(
1791        input: &'input str,
1792        __lookahead_start: Option<&usize>,
1793        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1794        _: core::marker::PhantomData<(&'input ())>,
1795    ) -> (usize, usize)
1796    {
1797        // SimpleExpr = "true" => ActionFn(14);
1798        let __sym0 = __pop_Variant0(__symbols);
1799        let __start = __sym0.0.clone();
1800        let __end = __sym0.2.clone();
1801        let __nt = super::__action14::<>(input, __sym0);
1802        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1803        (1, 18)
1804    }
1805    pub(crate) fn __reduce41<
1806        'input,
1807    >(
1808        input: &'input str,
1809        __lookahead_start: Option<&usize>,
1810        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1811        _: core::marker::PhantomData<(&'input ())>,
1812    ) -> (usize, usize)
1813    {
1814        // SimpleExpr = "false" => ActionFn(15);
1815        let __sym0 = __pop_Variant0(__symbols);
1816        let __start = __sym0.0.clone();
1817        let __end = __sym0.2.clone();
1818        let __nt = super::__action15::<>(input, __sym0);
1819        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1820        (1, 18)
1821    }
1822    pub(crate) fn __reduce42<
1823        'input,
1824    >(
1825        input: &'input str,
1826        __lookahead_start: Option<&usize>,
1827        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1828        _: core::marker::PhantomData<(&'input ())>,
1829    ) -> (usize, usize)
1830    {
1831        // SimpleExpr = Number => ActionFn(16);
1832        let __sym0 = __pop_Variant11(__symbols);
1833        let __start = __sym0.0.clone();
1834        let __end = __sym0.2.clone();
1835        let __nt = super::__action16::<>(input, __sym0);
1836        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1837        (1, 18)
1838    }
1839    pub(crate) fn __reduce43<
1840        'input,
1841    >(
1842        input: &'input str,
1843        __lookahead_start: Option<&usize>,
1844        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1845        _: core::marker::PhantomData<(&'input ())>,
1846    ) -> (usize, usize)
1847    {
1848        // SimpleExpr = r#"\"[^\"]*\""# => ActionFn(17);
1849        let __sym0 = __pop_Variant0(__symbols);
1850        let __start = __sym0.0.clone();
1851        let __end = __sym0.2.clone();
1852        let __nt = super::__action17::<>(input, __sym0);
1853        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1854        (1, 18)
1855    }
1856    pub(crate) fn __reduce44<
1857        'input,
1858    >(
1859        input: &'input str,
1860        __lookahead_start: Option<&usize>,
1861        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1862        _: core::marker::PhantomData<(&'input ())>,
1863    ) -> (usize, usize)
1864    {
1865        // SimpleExpr = Identifier => ActionFn(18);
1866        let __sym0 = __pop_Variant10(__symbols);
1867        let __start = __sym0.0.clone();
1868        let __end = __sym0.2.clone();
1869        let __nt = super::__action18::<>(input, __sym0);
1870        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1871        (1, 18)
1872    }
1873    pub(crate) fn __reduce45<
1874        'input,
1875    >(
1876        input: &'input str,
1877        __lookahead_start: Option<&usize>,
1878        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1879        _: core::marker::PhantomData<(&'input ())>,
1880    ) -> (usize, usize)
1881    {
1882        // SimpleExpr = "{", Block, "}" => ActionFn(19);
1883        assert!(__symbols.len() >= 3);
1884        let __sym2 = __pop_Variant0(__symbols);
1885        let __sym1 = __pop_Variant6(__symbols);
1886        let __sym0 = __pop_Variant0(__symbols);
1887        let __start = __sym0.0.clone();
1888        let __end = __sym2.2.clone();
1889        let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2);
1890        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1891        (3, 18)
1892    }
1893    pub(crate) fn __reduce46<
1894        'input,
1895    >(
1896        input: &'input str,
1897        __lookahead_start: Option<&usize>,
1898        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1899        _: core::marker::PhantomData<(&'input ())>,
1900    ) -> (usize, usize)
1901    {
1902        // SimpleExpr = "[", Comma<Expr>, "]" => ActionFn(20);
1903        assert!(__symbols.len() >= 3);
1904        let __sym2 = __pop_Variant0(__symbols);
1905        let __sym1 = __pop_Variant8(__symbols);
1906        let __sym0 = __pop_Variant0(__symbols);
1907        let __start = __sym0.0.clone();
1908        let __end = __sym2.2.clone();
1909        let __nt = super::__action20::<>(input, __sym0, __sym1, __sym2);
1910        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1911        (3, 18)
1912    }
1913    pub(crate) fn __reduce47<
1914        'input,
1915    >(
1916        input: &'input str,
1917        __lookahead_start: Option<&usize>,
1918        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1919        _: core::marker::PhantomData<(&'input ())>,
1920    ) -> (usize, usize)
1921    {
1922        // SimpleExpr = "%{", Comma<<(<Expr> ":" <Expr>)>>, "}" => ActionFn(21);
1923        assert!(__symbols.len() >= 3);
1924        let __sym2 = __pop_Variant0(__symbols);
1925        let __sym1 = __pop_Variant7(__symbols);
1926        let __sym0 = __pop_Variant0(__symbols);
1927        let __start = __sym0.0.clone();
1928        let __end = __sym2.2.clone();
1929        let __nt = super::__action21::<>(input, __sym0, __sym1, __sym2);
1930        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1931        (3, 18)
1932    }
1933    pub(crate) fn __reduce48<
1934        'input,
1935    >(
1936        input: &'input str,
1937        __lookahead_start: Option<&usize>,
1938        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1939        _: core::marker::PhantomData<(&'input ())>,
1940    ) -> (usize, usize)
1941    {
1942        // SimpleExpr = SimpleExpr, ".[", Expr, "]" => ActionFn(22);
1943        assert!(__symbols.len() >= 4);
1944        let __sym3 = __pop_Variant0(__symbols);
1945        let __sym2 = __pop_Variant3(__symbols);
1946        let __sym1 = __pop_Variant0(__symbols);
1947        let __sym0 = __pop_Variant3(__symbols);
1948        let __start = __sym0.0.clone();
1949        let __end = __sym3.2.clone();
1950        let __nt = super::__action22::<>(input, __sym0, __sym1, __sym2, __sym3);
1951        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1952        (4, 18)
1953    }
1954    pub(crate) fn __reduce49<
1955        'input,
1956    >(
1957        input: &'input str,
1958        __lookahead_start: Option<&usize>,
1959        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1960        _: core::marker::PhantomData<(&'input ())>,
1961    ) -> (usize, usize)
1962    {
1963        // SimpleExpr = SimpleExpr, ".", Identifier => ActionFn(23);
1964        assert!(__symbols.len() >= 3);
1965        let __sym2 = __pop_Variant10(__symbols);
1966        let __sym1 = __pop_Variant0(__symbols);
1967        let __sym0 = __pop_Variant3(__symbols);
1968        let __start = __sym0.0.clone();
1969        let __end = __sym2.2.clone();
1970        let __nt = super::__action23::<>(input, __sym0, __sym1, __sym2);
1971        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1972        (3, 18)
1973    }
1974    pub(crate) fn __reduce50<
1975        'input,
1976    >(
1977        input: &'input str,
1978        __lookahead_start: Option<&usize>,
1979        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1980        _: core::marker::PhantomData<(&'input ())>,
1981    ) -> (usize, usize)
1982    {
1983        // SimpleExpr = r#"raw`[^`]*`"# => ActionFn(24);
1984        let __sym0 = __pop_Variant0(__symbols);
1985        let __start = __sym0.0.clone();
1986        let __end = __sym0.2.clone();
1987        let __nt = super::__action24::<>(input, __sym0);
1988        __symbols.push((__start, __Symbol::Variant3(__nt), __end));
1989        (1, 18)
1990    }
1991    pub(crate) fn __reduce51<
1992        'input,
1993    >(
1994        input: &'input str,
1995        __lookahead_start: Option<&usize>,
1996        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
1997        _: core::marker::PhantomData<(&'input ())>,
1998    ) -> (usize, usize)
1999    {
2000        // SimpleExpr+ = SimpleExpr => ActionFn(32);
2001        let __sym0 = __pop_Variant3(__symbols);
2002        let __start = __sym0.0.clone();
2003        let __end = __sym0.2.clone();
2004        let __nt = super::__action32::<>(input, __sym0);
2005        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
2006        (1, 19)
2007    }
2008    pub(crate) fn __reduce52<
2009        'input,
2010    >(
2011        input: &'input str,
2012        __lookahead_start: Option<&usize>,
2013        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
2014        _: core::marker::PhantomData<(&'input ())>,
2015    ) -> (usize, usize)
2016    {
2017        // SimpleExpr+ = SimpleExpr+, SimpleExpr => ActionFn(33);
2018        assert!(__symbols.len() >= 2);
2019        let __sym1 = __pop_Variant3(__symbols);
2020        let __sym0 = __pop_Variant4(__symbols);
2021        let __start = __sym0.0.clone();
2022        let __end = __sym1.2.clone();
2023        let __nt = super::__action33::<>(input, __sym0, __sym1);
2024        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
2025        (2, 19)
2026    }
2027    pub(crate) fn __reduce53<
2028        'input,
2029    >(
2030        input: &'input str,
2031        __lookahead_start: Option<&usize>,
2032        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
2033        _: core::marker::PhantomData<(&'input ())>,
2034    ) -> (usize, usize)
2035    {
2036        // Statement = "let", "rec", Pattern, "=", Expr, ";" => ActionFn(4);
2037        assert!(__symbols.len() >= 6);
2038        let __sym5 = __pop_Variant0(__symbols);
2039        let __sym4 = __pop_Variant3(__symbols);
2040        let __sym3 = __pop_Variant0(__symbols);
2041        let __sym2 = __pop_Variant12(__symbols);
2042        let __sym1 = __pop_Variant0(__symbols);
2043        let __sym0 = __pop_Variant0(__symbols);
2044        let __start = __sym0.0.clone();
2045        let __end = __sym5.2.clone();
2046        let __nt = super::__action4::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
2047        __symbols.push((__start, __Symbol::Variant15(__nt), __end));
2048        (6, 20)
2049    }
2050    pub(crate) fn __reduce54<
2051        'input,
2052    >(
2053        input: &'input str,
2054        __lookahead_start: Option<&usize>,
2055        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
2056        _: core::marker::PhantomData<(&'input ())>,
2057    ) -> (usize, usize)
2058    {
2059        // Statement = "let", Pattern, "=", Expr, ";" => ActionFn(5);
2060        assert!(__symbols.len() >= 5);
2061        let __sym4 = __pop_Variant0(__symbols);
2062        let __sym3 = __pop_Variant3(__symbols);
2063        let __sym2 = __pop_Variant0(__symbols);
2064        let __sym1 = __pop_Variant12(__symbols);
2065        let __sym0 = __pop_Variant0(__symbols);
2066        let __start = __sym0.0.clone();
2067        let __end = __sym4.2.clone();
2068        let __nt = super::__action5::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4);
2069        __symbols.push((__start, __Symbol::Variant15(__nt), __end));
2070        (5, 20)
2071    }
2072    pub(crate) fn __reduce55<
2073        'input,
2074    >(
2075        input: &'input str,
2076        __lookahead_start: Option<&usize>,
2077        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
2078        _: core::marker::PhantomData<(&'input ())>,
2079    ) -> (usize, usize)
2080    {
2081        // Statement = Expr, "<-", Expr, ";" => ActionFn(6);
2082        assert!(__symbols.len() >= 4);
2083        let __sym3 = __pop_Variant0(__symbols);
2084        let __sym2 = __pop_Variant3(__symbols);
2085        let __sym1 = __pop_Variant0(__symbols);
2086        let __sym0 = __pop_Variant3(__symbols);
2087        let __start = __sym0.0.clone();
2088        let __end = __sym3.2.clone();
2089        let __nt = super::__action6::<>(input, __sym0, __sym1, __sym2, __sym3);
2090        __symbols.push((__start, __Symbol::Variant15(__nt), __end));
2091        (4, 20)
2092    }
2093    pub(crate) fn __reduce56<
2094        'input,
2095    >(
2096        input: &'input str,
2097        __lookahead_start: Option<&usize>,
2098        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
2099        _: core::marker::PhantomData<(&'input ())>,
2100    ) -> (usize, usize)
2101    {
2102        // Statement = Expr, ";" => ActionFn(7);
2103        assert!(__symbols.len() >= 2);
2104        let __sym1 = __pop_Variant0(__symbols);
2105        let __sym0 = __pop_Variant3(__symbols);
2106        let __start = __sym0.0.clone();
2107        let __end = __sym1.2.clone();
2108        let __nt = super::__action7::<>(input, __sym0, __sym1);
2109        __symbols.push((__start, __Symbol::Variant15(__nt), __end));
2110        (2, 20)
2111    }
2112    pub(crate) fn __reduce57<
2113        'input,
2114    >(
2115        input: &'input str,
2116        __lookahead_start: Option<&usize>,
2117        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
2118        _: core::marker::PhantomData<(&'input ())>,
2119    ) -> (usize, usize)
2120    {
2121        // Statement* =  => ActionFn(38);
2122        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
2123        let __end = __start.clone();
2124        let __nt = super::__action38::<>(input, &__start, &__end);
2125        __symbols.push((__start, __Symbol::Variant16(__nt), __end));
2126        (0, 21)
2127    }
2128    pub(crate) fn __reduce58<
2129        'input,
2130    >(
2131        input: &'input str,
2132        __lookahead_start: Option<&usize>,
2133        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
2134        _: core::marker::PhantomData<(&'input ())>,
2135    ) -> (usize, usize)
2136    {
2137        // Statement* = Statement+ => ActionFn(39);
2138        let __sym0 = __pop_Variant16(__symbols);
2139        let __start = __sym0.0.clone();
2140        let __end = __sym0.2.clone();
2141        let __nt = super::__action39::<>(input, __sym0);
2142        __symbols.push((__start, __Symbol::Variant16(__nt), __end));
2143        (1, 21)
2144    }
2145    pub(crate) fn __reduce59<
2146        'input,
2147    >(
2148        input: &'input str,
2149        __lookahead_start: Option<&usize>,
2150        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
2151        _: core::marker::PhantomData<(&'input ())>,
2152    ) -> (usize, usize)
2153    {
2154        // Statement+ = Statement => ActionFn(40);
2155        let __sym0 = __pop_Variant15(__symbols);
2156        let __start = __sym0.0.clone();
2157        let __end = __sym0.2.clone();
2158        let __nt = super::__action40::<>(input, __sym0);
2159        __symbols.push((__start, __Symbol::Variant16(__nt), __end));
2160        (1, 22)
2161    }
2162    pub(crate) fn __reduce60<
2163        'input,
2164    >(
2165        input: &'input str,
2166        __lookahead_start: Option<&usize>,
2167        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>,
2168        _: core::marker::PhantomData<(&'input ())>,
2169    ) -> (usize, usize)
2170    {
2171        // Statement+ = Statement+, Statement => ActionFn(41);
2172        assert!(__symbols.len() >= 2);
2173        let __sym1 = __pop_Variant15(__symbols);
2174        let __sym0 = __pop_Variant16(__symbols);
2175        let __start = __sym0.0.clone();
2176        let __end = __sym1.2.clone();
2177        let __nt = super::__action41::<>(input, __sym0, __sym1);
2178        __symbols.push((__start, __Symbol::Variant16(__nt), __end));
2179        (2, 22)
2180    }
2181}
2182pub use self::__parse__Program::ProgramParser;
2183#[cfg_attr(rustfmt, rustfmt_skip)]
2184mod __intern_token {
2185    #![allow(unused_imports)]
2186    use std::str::FromStr;
2187    use crate::ast;
2188    #[allow(unused_extern_crates)]
2189    extern crate lalrpop_util as __lalrpop_util;
2190    #[allow(unused_imports)]
2191    use self::__lalrpop_util::state_machine as __state_machine;
2192    extern crate core;
2193    extern crate alloc;
2194    pub fn new_builder() -> __lalrpop_util::lexer::MatcherBuilder {
2195        let __strs: &[(&str, bool)] = &[
2196            ("^(\"[\0-!\\#-\u{10ffff}]*\")", false),
2197            ("^([0-9]+(\\.[0-9]+)?)", false),
2198            ("^([A-Z_a-z][0-9A-Z_a-z]*)", false),
2199            ("^(raw`[\0-_a-\u{10ffff}]*`)", false),
2200            ("^(%\\{)", false),
2201            ("^(\\()", false),
2202            ("^(\\(\\))", false),
2203            ("^(\\))", false),
2204            ("^(,)", false),
2205            ("^(\\->)", false),
2206            ("^(\\.)", false),
2207            ("^(\\.\\[)", false),
2208            ("^(:)", false),
2209            ("^(;)", false),
2210            ("^(<\\-)", false),
2211            ("^(=)", false),
2212            ("^(\\[)", false),
2213            ("^(\\])", false),
2214            ("^(else)", false),
2215            ("^(false)", false),
2216            ("^(fun)", false),
2217            ("^(if)", false),
2218            ("^(let)", false),
2219            ("^(rec)", false),
2220            ("^(then)", false),
2221            ("^(true)", false),
2222            ("^(\\{)", false),
2223            ("^(\\})", false),
2224            (r"^(\s*)", true),
2225        ];
2226        __lalrpop_util::lexer::MatcherBuilder::new(__strs.iter().copied()).unwrap()
2227    }
2228}
2229pub(crate) use self::__lalrpop_util::lexer::Token;
2230
2231#[allow(unused_variables)]
2232fn __action0<
2233    'input,
2234>(
2235    input: &'input str,
2236    (_, __0, _): (usize, ast::Program, usize),
2237) -> ast::Program
2238{
2239    __0
2240}
2241
2242#[allow(unused_variables)]
2243fn __action1<
2244    'input,
2245>(
2246    input: &'input str,
2247    (_, s, _): (usize, alloc::vec::Vec<ast::Statement>, usize),
2248) -> ast::Program
2249{
2250    ast::Program(s)
2251}
2252
2253#[allow(unused_variables)]
2254fn __action2<
2255    'input,
2256>(
2257    input: &'input str,
2258    (_, e, _): (usize, core::option::Option<ast::Expr>, usize),
2259) -> ast::Block
2260{
2261    ast::Block {
2262            statements: vec![],
2263            expression: e,
2264        }
2265}
2266
2267#[allow(unused_variables)]
2268fn __action3<
2269    'input,
2270>(
2271    input: &'input str,
2272    (_, s, _): (usize, ast::Statement, usize),
2273    (_, mut b, _): (usize, ast::Block, usize),
2274) -> ast::Block
2275{
2276    {
2277            b.statements.push(s);
2278            b
2279        }
2280}
2281
2282#[allow(unused_variables)]
2283fn __action4<
2284    'input,
2285>(
2286    input: &'input str,
2287    (_, _, _): (usize, &'input str, usize),
2288    (_, _, _): (usize, &'input str, usize),
2289    (_, pattern, _): (usize, ast::Pattern, usize),
2290    (_, _, _): (usize, &'input str, usize),
2291    (_, value, _): (usize, ast::Expr, usize),
2292    (_, _, _): (usize, &'input str, usize),
2293) -> ast::Statement
2294{
2295    ast::Statement::Let {
2296            recursive: true,
2297            pattern,
2298            value,
2299        }
2300}
2301
2302#[allow(unused_variables)]
2303fn __action5<
2304    'input,
2305>(
2306    input: &'input str,
2307    (_, _, _): (usize, &'input str, usize),
2308    (_, pattern, _): (usize, ast::Pattern, usize),
2309    (_, _, _): (usize, &'input str, usize),
2310    (_, value, _): (usize, ast::Expr, usize),
2311    (_, _, _): (usize, &'input str, usize),
2312) -> ast::Statement
2313{
2314    ast::Statement::Let {
2315            recursive: false,
2316            pattern,
2317            value,
2318        }
2319}
2320
2321#[allow(unused_variables)]
2322fn __action6<
2323    'input,
2324>(
2325    input: &'input str,
2326    (_, e, _): (usize, ast::Expr, usize),
2327    (_, _, _): (usize, &'input str, usize),
2328    (_, v, _): (usize, ast::Expr, usize),
2329    (_, _, _): (usize, &'input str, usize),
2330) -> ast::Statement
2331{
2332    ast::Statement::Set {
2333            variable:  Box::new(e),
2334            new_value: Box::new(v),
2335        }
2336}
2337
2338#[allow(unused_variables)]
2339fn __action7<
2340    'input,
2341>(
2342    input: &'input str,
2343    (_, e, _): (usize, ast::Expr, usize),
2344    (_, _, _): (usize, &'input str, usize),
2345) -> ast::Statement
2346{
2347    ast::Statement::Expr(e)
2348}
2349
2350#[allow(unused_variables)]
2351fn __action8<
2352    'input,
2353>(
2354    input: &'input str,
2355    (_, _, _): (usize, &'input str, usize),
2356    (_, arguments, _): (usize, alloc::vec::Vec<ast::Pattern>, usize),
2357    (_, _, _): (usize, &'input str, usize),
2358    (_, e, _): (usize, ast::Expr, usize),
2359) -> ast::Expr
2360{
2361    ast::Expr::Lambda {
2362            arguments,
2363            body: Box::new(e),
2364        }
2365}
2366
2367#[allow(unused_variables)]
2368fn __action9<
2369    'input,
2370>(
2371    input: &'input str,
2372    (_, f, _): (usize, ast::Expr, usize),
2373    (_, es, _): (usize, alloc::vec::Vec<ast::Expr>, usize),
2374) -> ast::Expr
2375{
2376    ast::Expr::Application {
2377            function: Box::new(f),
2378            arguments: es,
2379        }
2380}
2381
2382#[allow(unused_variables)]
2383fn __action10<
2384    'input,
2385>(
2386    input: &'input str,
2387    (_, _, _): (usize, &'input str, usize),
2388    (_, c, _): (usize, ast::Expr, usize),
2389    (_, _, _): (usize, &'input str, usize),
2390    (_, b1, _): (usize, ast::Expr, usize),
2391    (_, _, _): (usize, &'input str, usize),
2392    (_, b2, _): (usize, ast::Expr, usize),
2393) -> ast::Expr
2394{
2395    ast::Expr::If {
2396            condition: Box::new(c),
2397            if_body:   Box::new(b1),
2398            else_body: Box::new(b2),
2399        }
2400}
2401
2402#[allow(unused_variables)]
2403fn __action11<
2404    'input,
2405>(
2406    input: &'input str,
2407    (_, __0, _): (usize, ast::Expr, usize),
2408) -> ast::Expr
2409{
2410    __0
2411}
2412
2413#[allow(unused_variables)]
2414fn __action12<
2415    'input,
2416>(
2417    input: &'input str,
2418    (_, _, _): (usize, &'input str, usize),
2419    (_, __0, _): (usize, ast::Expr, usize),
2420    (_, _, _): (usize, &'input str, usize),
2421) -> ast::Expr
2422{
2423    __0
2424}
2425
2426#[allow(unused_variables)]
2427fn __action13<
2428    'input,
2429>(
2430    input: &'input str,
2431    (_, __0, _): (usize, &'input str, usize),
2432) -> ast::Expr
2433{
2434    ast::Expr::Unit
2435}
2436
2437#[allow(unused_variables)]
2438fn __action14<
2439    'input,
2440>(
2441    input: &'input str,
2442    (_, __0, _): (usize, &'input str, usize),
2443) -> ast::Expr
2444{
2445    ast::Expr::Boolean(true)
2446}
2447
2448#[allow(unused_variables)]
2449fn __action15<
2450    'input,
2451>(
2452    input: &'input str,
2453    (_, __0, _): (usize, &'input str, usize),
2454) -> ast::Expr
2455{
2456    ast::Expr::Boolean(false)
2457}
2458
2459#[allow(unused_variables)]
2460fn __action16<
2461    'input,
2462>(
2463    input: &'input str,
2464    (_, n, _): (usize, f64, usize),
2465) -> ast::Expr
2466{
2467    ast::Expr::Number(n)
2468}
2469
2470#[allow(unused_variables)]
2471fn __action17<
2472    'input,
2473>(
2474    input: &'input str,
2475    (_, s, _): (usize, &'input str, usize),
2476) -> ast::Expr
2477{
2478    ast::Expr::String(
2479            s[1..s.len()-1].to_string()
2480        )
2481}
2482
2483#[allow(unused_variables)]
2484fn __action18<
2485    'input,
2486>(
2487    input: &'input str,
2488    (_, __0, _): (usize, String, usize),
2489) -> ast::Expr
2490{
2491    ast::Expr::Variable(__0)
2492}
2493
2494#[allow(unused_variables)]
2495fn __action19<
2496    'input,
2497>(
2498    input: &'input str,
2499    (_, _, _): (usize, &'input str, usize),
2500    (_, mut b, _): (usize, ast::Block, usize),
2501    (_, _, _): (usize, &'input str, usize),
2502) -> ast::Expr
2503{
2504    {
2505            b.statements.reverse();
2506            ast::Expr::Block(Box::new(b))
2507        }
2508}
2509
2510#[allow(unused_variables)]
2511fn __action20<
2512    'input,
2513>(
2514    input: &'input str,
2515    (_, _, _): (usize, &'input str, usize),
2516    (_, __0, _): (usize, Vec<ast::Expr>, usize),
2517    (_, _, _): (usize, &'input str, usize),
2518) -> ast::Expr
2519{
2520    ast::Expr::Array(__0)
2521}
2522
2523#[allow(unused_variables)]
2524fn __action21<
2525    'input,
2526>(
2527    input: &'input str,
2528    (_, _, _): (usize, &'input str, usize),
2529    (_, __0, _): (usize, Vec<(ast::Expr, ast::Expr)>, usize),
2530    (_, _, _): (usize, &'input str, usize),
2531) -> ast::Expr
2532{
2533    ast::Expr::Map(__0)
2534}
2535
2536#[allow(unused_variables)]
2537fn __action22<
2538    'input,
2539>(
2540    input: &'input str,
2541    (_, e, _): (usize, ast::Expr, usize),
2542    (_, _, _): (usize, &'input str, usize),
2543    (_, i, _): (usize, ast::Expr, usize),
2544    (_, _, _): (usize, &'input str, usize),
2545) -> ast::Expr
2546{
2547    ast::Expr::Index {
2548            variable: Box::new(e),
2549            index:    Box::new(i),
2550        }
2551}
2552
2553#[allow(unused_variables)]
2554fn __action23<
2555    'input,
2556>(
2557    input: &'input str,
2558    (_, e, _): (usize, ast::Expr, usize),
2559    (_, _, _): (usize, &'input str, usize),
2560    (_, field, _): (usize, String, usize),
2561) -> ast::Expr
2562{
2563    ast::Expr::Dot {
2564            variable: Box::new(e),
2565            field,
2566        }
2567}
2568
2569#[allow(unused_variables)]
2570fn __action24<
2571    'input,
2572>(
2573    input: &'input str,
2574    (_, s, _): (usize, &'input str, usize),
2575) -> ast::Expr
2576{
2577    ast::Expr::Raw(
2578        s[4..s.len()-1].to_string()
2579    )
2580}
2581
2582#[allow(unused_variables)]
2583fn __action25<
2584    'input,
2585>(
2586    input: &'input str,
2587    (_, __0, _): (usize, &'input str, usize),
2588) -> ast::Pattern
2589{
2590    ast::Pattern::Unit
2591}
2592
2593#[allow(unused_variables)]
2594fn __action26<
2595    'input,
2596>(
2597    input: &'input str,
2598    (_, __0, _): (usize, String, usize),
2599) -> ast::Pattern
2600{
2601    ast::Pattern::Binding(__0.to_string())
2602}
2603
2604#[allow(unused_variables)]
2605fn __action27<
2606    'input,
2607>(
2608    input: &'input str,
2609    (_, __0, _): (usize, &'input str, usize),
2610) -> String
2611{
2612    __0.to_string()
2613}
2614
2615#[allow(unused_variables)]
2616fn __action28<
2617    'input,
2618>(
2619    input: &'input str,
2620    (_, __0, _): (usize, &'input str, usize),
2621) -> f64
2622{
2623    f64::from_str(__0).unwrap()
2624}
2625
2626#[allow(unused_variables)]
2627fn __action29<
2628    'input,
2629>(
2630    input: &'input str,
2631    (_, mut v, _): (usize, alloc::vec::Vec<(ast::Expr, ast::Expr)>, usize),
2632    (_, e, _): (usize, core::option::Option<(ast::Expr, ast::Expr)>, usize),
2633) -> Vec<(ast::Expr, ast::Expr)>
2634{
2635    match e {
2636        None => v,
2637        Some(e) => {
2638            v.push(e);
2639            v
2640        }
2641    }
2642}
2643
2644#[allow(unused_variables)]
2645fn __action30<
2646    'input,
2647>(
2648    input: &'input str,
2649    (_, __0, _): (usize, ast::Expr, usize),
2650    (_, _, _): (usize, &'input str, usize),
2651    (_, __1, _): (usize, ast::Expr, usize),
2652) -> (ast::Expr, ast::Expr)
2653{
2654    (__0, __1)
2655}
2656
2657#[allow(unused_variables)]
2658fn __action31<
2659    'input,
2660>(
2661    input: &'input str,
2662    (_, mut v, _): (usize, alloc::vec::Vec<ast::Expr>, usize),
2663    (_, e, _): (usize, core::option::Option<ast::Expr>, usize),
2664) -> Vec<ast::Expr>
2665{
2666    match e {
2667        None => v,
2668        Some(e) => {
2669            v.push(e);
2670            v
2671        }
2672    }
2673}
2674
2675#[allow(unused_variables)]
2676fn __action32<
2677    'input,
2678>(
2679    input: &'input str,
2680    (_, __0, _): (usize, ast::Expr, usize),
2681) -> alloc::vec::Vec<ast::Expr>
2682{
2683    alloc::vec![__0]
2684}
2685
2686#[allow(unused_variables)]
2687fn __action33<
2688    'input,
2689>(
2690    input: &'input str,
2691    (_, v, _): (usize, alloc::vec::Vec<ast::Expr>, usize),
2692    (_, e, _): (usize, ast::Expr, usize),
2693) -> alloc::vec::Vec<ast::Expr>
2694{
2695    { let mut v = v; v.push(e); v }
2696}
2697
2698#[allow(unused_variables)]
2699fn __action34<
2700    'input,
2701>(
2702    input: &'input str,
2703    (_, __0, _): (usize, ast::Pattern, usize),
2704) -> alloc::vec::Vec<ast::Pattern>
2705{
2706    alloc::vec![__0]
2707}
2708
2709#[allow(unused_variables)]
2710fn __action35<
2711    'input,
2712>(
2713    input: &'input str,
2714    (_, v, _): (usize, alloc::vec::Vec<ast::Pattern>, usize),
2715    (_, e, _): (usize, ast::Pattern, usize),
2716) -> alloc::vec::Vec<ast::Pattern>
2717{
2718    { let mut v = v; v.push(e); v }
2719}
2720
2721#[allow(unused_variables)]
2722fn __action36<
2723    'input,
2724>(
2725    input: &'input str,
2726    (_, __0, _): (usize, ast::Expr, usize),
2727) -> core::option::Option<ast::Expr>
2728{
2729    Some(__0)
2730}
2731
2732#[allow(unused_variables)]
2733fn __action37<
2734    'input,
2735>(
2736    input: &'input str,
2737    __lookbehind: &usize,
2738    __lookahead: &usize,
2739) -> core::option::Option<ast::Expr>
2740{
2741    None
2742}
2743
2744#[allow(unused_variables)]
2745fn __action38<
2746    'input,
2747>(
2748    input: &'input str,
2749    __lookbehind: &usize,
2750    __lookahead: &usize,
2751) -> alloc::vec::Vec<ast::Statement>
2752{
2753    alloc::vec![]
2754}
2755
2756#[allow(unused_variables)]
2757fn __action39<
2758    'input,
2759>(
2760    input: &'input str,
2761    (_, v, _): (usize, alloc::vec::Vec<ast::Statement>, usize),
2762) -> alloc::vec::Vec<ast::Statement>
2763{
2764    v
2765}
2766
2767#[allow(unused_variables)]
2768fn __action40<
2769    'input,
2770>(
2771    input: &'input str,
2772    (_, __0, _): (usize, ast::Statement, usize),
2773) -> alloc::vec::Vec<ast::Statement>
2774{
2775    alloc::vec![__0]
2776}
2777
2778#[allow(unused_variables)]
2779fn __action41<
2780    'input,
2781>(
2782    input: &'input str,
2783    (_, v, _): (usize, alloc::vec::Vec<ast::Statement>, usize),
2784    (_, e, _): (usize, ast::Statement, usize),
2785) -> alloc::vec::Vec<ast::Statement>
2786{
2787    { let mut v = v; v.push(e); v }
2788}
2789
2790#[allow(unused_variables)]
2791fn __action42<
2792    'input,
2793>(
2794    input: &'input str,
2795    __lookbehind: &usize,
2796    __lookahead: &usize,
2797) -> alloc::vec::Vec<ast::Expr>
2798{
2799    alloc::vec![]
2800}
2801
2802#[allow(unused_variables)]
2803fn __action43<
2804    'input,
2805>(
2806    input: &'input str,
2807    (_, v, _): (usize, alloc::vec::Vec<ast::Expr>, usize),
2808) -> alloc::vec::Vec<ast::Expr>
2809{
2810    v
2811}
2812
2813#[allow(unused_variables)]
2814fn __action44<
2815    'input,
2816>(
2817    input: &'input str,
2818    (_, __0, _): (usize, ast::Expr, usize),
2819    (_, _, _): (usize, &'input str, usize),
2820) -> ast::Expr
2821{
2822    __0
2823}
2824
2825#[allow(unused_variables)]
2826fn __action45<
2827    'input,
2828>(
2829    input: &'input str,
2830    (_, __0, _): (usize, (ast::Expr, ast::Expr), usize),
2831) -> core::option::Option<(ast::Expr, ast::Expr)>
2832{
2833    Some(__0)
2834}
2835
2836#[allow(unused_variables)]
2837fn __action46<
2838    'input,
2839>(
2840    input: &'input str,
2841    __lookbehind: &usize,
2842    __lookahead: &usize,
2843) -> core::option::Option<(ast::Expr, ast::Expr)>
2844{
2845    None
2846}
2847
2848#[allow(unused_variables)]
2849fn __action47<
2850    'input,
2851>(
2852    input: &'input str,
2853    __lookbehind: &usize,
2854    __lookahead: &usize,
2855) -> alloc::vec::Vec<(ast::Expr, ast::Expr)>
2856{
2857    alloc::vec![]
2858}
2859
2860#[allow(unused_variables)]
2861fn __action48<
2862    'input,
2863>(
2864    input: &'input str,
2865    (_, v, _): (usize, alloc::vec::Vec<(ast::Expr, ast::Expr)>, usize),
2866) -> alloc::vec::Vec<(ast::Expr, ast::Expr)>
2867{
2868    v
2869}
2870
2871#[allow(unused_variables)]
2872fn __action49<
2873    'input,
2874>(
2875    input: &'input str,
2876    (_, __0, _): (usize, (ast::Expr, ast::Expr), usize),
2877    (_, _, _): (usize, &'input str, usize),
2878) -> (ast::Expr, ast::Expr)
2879{
2880    __0
2881}
2882
2883#[allow(unused_variables)]
2884fn __action50<
2885    'input,
2886>(
2887    input: &'input str,
2888    (_, __0, _): (usize, (ast::Expr, ast::Expr), usize),
2889) -> alloc::vec::Vec<(ast::Expr, ast::Expr)>
2890{
2891    alloc::vec![__0]
2892}
2893
2894#[allow(unused_variables)]
2895fn __action51<
2896    'input,
2897>(
2898    input: &'input str,
2899    (_, v, _): (usize, alloc::vec::Vec<(ast::Expr, ast::Expr)>, usize),
2900    (_, e, _): (usize, (ast::Expr, ast::Expr), usize),
2901) -> alloc::vec::Vec<(ast::Expr, ast::Expr)>
2902{
2903    { let mut v = v; v.push(e); v }
2904}
2905
2906#[allow(unused_variables)]
2907fn __action52<
2908    'input,
2909>(
2910    input: &'input str,
2911    (_, __0, _): (usize, ast::Expr, usize),
2912) -> alloc::vec::Vec<ast::Expr>
2913{
2914    alloc::vec![__0]
2915}
2916
2917#[allow(unused_variables)]
2918fn __action53<
2919    'input,
2920>(
2921    input: &'input str,
2922    (_, v, _): (usize, alloc::vec::Vec<ast::Expr>, usize),
2923    (_, e, _): (usize, ast::Expr, usize),
2924) -> alloc::vec::Vec<ast::Expr>
2925{
2926    { let mut v = v; v.push(e); v }
2927}
2928
2929#[allow(unused_variables)]
2930fn __action54<
2931    'input,
2932>(
2933    input: &'input str,
2934    __0: (usize, ast::Expr, usize),
2935    __1: (usize, &'input str, usize),
2936    __2: (usize, ast::Expr, usize),
2937    __3: (usize, &'input str, usize),
2938) -> (ast::Expr, ast::Expr)
2939{
2940    let __start0 = __0.0.clone();
2941    let __end0 = __2.2.clone();
2942    let __temp0 = __action30(
2943        input,
2944        __0,
2945        __1,
2946        __2,
2947    );
2948    let __temp0 = (__start0, __temp0, __end0);
2949    __action49(
2950        input,
2951        __temp0,
2952        __3,
2953    )
2954}
2955
2956#[allow(unused_variables)]
2957fn __action55<
2958    'input,
2959>(
2960    input: &'input str,
2961    __0: (usize, ast::Expr, usize),
2962    __1: (usize, &'input str, usize),
2963    __2: (usize, ast::Expr, usize),
2964) -> core::option::Option<(ast::Expr, ast::Expr)>
2965{
2966    let __start0 = __0.0.clone();
2967    let __end0 = __2.2.clone();
2968    let __temp0 = __action30(
2969        input,
2970        __0,
2971        __1,
2972        __2,
2973    );
2974    let __temp0 = (__start0, __temp0, __end0);
2975    __action45(
2976        input,
2977        __temp0,
2978    )
2979}
2980
2981#[allow(unused_variables)]
2982fn __action56<
2983    'input,
2984>(
2985    input: &'input str,
2986    __0: (usize, ast::Expr, usize),
2987    __1: (usize, &'input str, usize),
2988    __2: (usize, ast::Expr, usize),
2989    __3: (usize, &'input str, usize),
2990) -> alloc::vec::Vec<(ast::Expr, ast::Expr)>
2991{
2992    let __start0 = __0.0.clone();
2993    let __end0 = __3.2.clone();
2994    let __temp0 = __action54(
2995        input,
2996        __0,
2997        __1,
2998        __2,
2999        __3,
3000    );
3001    let __temp0 = (__start0, __temp0, __end0);
3002    __action50(
3003        input,
3004        __temp0,
3005    )
3006}
3007
3008#[allow(unused_variables)]
3009fn __action57<
3010    'input,
3011>(
3012    input: &'input str,
3013    __0: (usize, alloc::vec::Vec<(ast::Expr, ast::Expr)>, usize),
3014    __1: (usize, ast::Expr, usize),
3015    __2: (usize, &'input str, usize),
3016    __3: (usize, ast::Expr, usize),
3017    __4: (usize, &'input str, usize),
3018) -> alloc::vec::Vec<(ast::Expr, ast::Expr)>
3019{
3020    let __start0 = __1.0.clone();
3021    let __end0 = __4.2.clone();
3022    let __temp0 = __action54(
3023        input,
3024        __1,
3025        __2,
3026        __3,
3027        __4,
3028    );
3029    let __temp0 = (__start0, __temp0, __end0);
3030    __action51(
3031        input,
3032        __0,
3033        __temp0,
3034    )
3035}
3036
3037#[allow(unused_variables)]
3038fn __action58<
3039    'input,
3040>(
3041    input: &'input str,
3042    __0: (usize, core::option::Option<(ast::Expr, ast::Expr)>, usize),
3043) -> Vec<(ast::Expr, ast::Expr)>
3044{
3045    let __start0 = __0.0.clone();
3046    let __end0 = __0.0.clone();
3047    let __temp0 = __action47(
3048        input,
3049        &__start0,
3050        &__end0,
3051    );
3052    let __temp0 = (__start0, __temp0, __end0);
3053    __action29(
3054        input,
3055        __temp0,
3056        __0,
3057    )
3058}
3059
3060#[allow(unused_variables)]
3061fn __action59<
3062    'input,
3063>(
3064    input: &'input str,
3065    __0: (usize, alloc::vec::Vec<(ast::Expr, ast::Expr)>, usize),
3066    __1: (usize, core::option::Option<(ast::Expr, ast::Expr)>, usize),
3067) -> Vec<(ast::Expr, ast::Expr)>
3068{
3069    let __start0 = __0.0.clone();
3070    let __end0 = __0.2.clone();
3071    let __temp0 = __action48(
3072        input,
3073        __0,
3074    );
3075    let __temp0 = (__start0, __temp0, __end0);
3076    __action29(
3077        input,
3078        __temp0,
3079        __1,
3080    )
3081}
3082
3083#[allow(unused_variables)]
3084fn __action60<
3085    'input,
3086>(
3087    input: &'input str,
3088    __0: (usize, ast::Expr, usize),
3089    __1: (usize, &'input str, usize),
3090) -> alloc::vec::Vec<ast::Expr>
3091{
3092    let __start0 = __0.0.clone();
3093    let __end0 = __1.2.clone();
3094    let __temp0 = __action44(
3095        input,
3096        __0,
3097        __1,
3098    );
3099    let __temp0 = (__start0, __temp0, __end0);
3100    __action52(
3101        input,
3102        __temp0,
3103    )
3104}
3105
3106#[allow(unused_variables)]
3107fn __action61<
3108    'input,
3109>(
3110    input: &'input str,
3111    __0: (usize, alloc::vec::Vec<ast::Expr>, usize),
3112    __1: (usize, ast::Expr, usize),
3113    __2: (usize, &'input str, usize),
3114) -> alloc::vec::Vec<ast::Expr>
3115{
3116    let __start0 = __1.0.clone();
3117    let __end0 = __2.2.clone();
3118    let __temp0 = __action44(
3119        input,
3120        __1,
3121        __2,
3122    );
3123    let __temp0 = (__start0, __temp0, __end0);
3124    __action53(
3125        input,
3126        __0,
3127        __temp0,
3128    )
3129}
3130
3131#[allow(unused_variables)]
3132fn __action62<
3133    'input,
3134>(
3135    input: &'input str,
3136    __0: (usize, core::option::Option<ast::Expr>, usize),
3137) -> Vec<ast::Expr>
3138{
3139    let __start0 = __0.0.clone();
3140    let __end0 = __0.0.clone();
3141    let __temp0 = __action42(
3142        input,
3143        &__start0,
3144        &__end0,
3145    );
3146    let __temp0 = (__start0, __temp0, __end0);
3147    __action31(
3148        input,
3149        __temp0,
3150        __0,
3151    )
3152}
3153
3154#[allow(unused_variables)]
3155fn __action63<
3156    'input,
3157>(
3158    input: &'input str,
3159    __0: (usize, alloc::vec::Vec<ast::Expr>, usize),
3160    __1: (usize, core::option::Option<ast::Expr>, usize),
3161) -> Vec<ast::Expr>
3162{
3163    let __start0 = __0.0.clone();
3164    let __end0 = __0.2.clone();
3165    let __temp0 = __action43(
3166        input,
3167        __0,
3168    );
3169    let __temp0 = (__start0, __temp0, __end0);
3170    __action31(
3171        input,
3172        __temp0,
3173        __1,
3174    )
3175}
3176
3177#[allow(unused_variables)]
3178fn __action64<
3179    'input,
3180>(
3181    input: &'input str,
3182    __0: (usize, ast::Expr, usize),
3183    __1: (usize, &'input str, usize),
3184    __2: (usize, ast::Expr, usize),
3185) -> Vec<(ast::Expr, ast::Expr)>
3186{
3187    let __start0 = __0.0.clone();
3188    let __end0 = __2.2.clone();
3189    let __temp0 = __action55(
3190        input,
3191        __0,
3192        __1,
3193        __2,
3194    );
3195    let __temp0 = (__start0, __temp0, __end0);
3196    __action58(
3197        input,
3198        __temp0,
3199    )
3200}
3201
3202#[allow(unused_variables)]
3203fn __action65<
3204    'input,
3205>(
3206    input: &'input str,
3207    __lookbehind: &usize,
3208    __lookahead: &usize,
3209) -> Vec<(ast::Expr, ast::Expr)>
3210{
3211    let __start0 = __lookbehind.clone();
3212    let __end0 = __lookahead.clone();
3213    let __temp0 = __action46(
3214        input,
3215        &__start0,
3216        &__end0,
3217    );
3218    let __temp0 = (__start0, __temp0, __end0);
3219    __action58(
3220        input,
3221        __temp0,
3222    )
3223}
3224
3225#[allow(unused_variables)]
3226fn __action66<
3227    'input,
3228>(
3229    input: &'input str,
3230    __0: (usize, alloc::vec::Vec<(ast::Expr, ast::Expr)>, usize),
3231    __1: (usize, ast::Expr, usize),
3232    __2: (usize, &'input str, usize),
3233    __3: (usize, ast::Expr, usize),
3234) -> Vec<(ast::Expr, ast::Expr)>
3235{
3236    let __start0 = __1.0.clone();
3237    let __end0 = __3.2.clone();
3238    let __temp0 = __action55(
3239        input,
3240        __1,
3241        __2,
3242        __3,
3243    );
3244    let __temp0 = (__start0, __temp0, __end0);
3245    __action59(
3246        input,
3247        __0,
3248        __temp0,
3249    )
3250}
3251
3252#[allow(unused_variables)]
3253fn __action67<
3254    'input,
3255>(
3256    input: &'input str,
3257    __0: (usize, alloc::vec::Vec<(ast::Expr, ast::Expr)>, usize),
3258) -> Vec<(ast::Expr, ast::Expr)>
3259{
3260    let __start0 = __0.2.clone();
3261    let __end0 = __0.2.clone();
3262    let __temp0 = __action46(
3263        input,
3264        &__start0,
3265        &__end0,
3266    );
3267    let __temp0 = (__start0, __temp0, __end0);
3268    __action59(
3269        input,
3270        __0,
3271        __temp0,
3272    )
3273}
3274
3275#[allow(unused_variables)]
3276fn __action68<
3277    'input,
3278>(
3279    input: &'input str,
3280    __0: (usize, ast::Expr, usize),
3281) -> ast::Block
3282{
3283    let __start0 = __0.0.clone();
3284    let __end0 = __0.2.clone();
3285    let __temp0 = __action36(
3286        input,
3287        __0,
3288    );
3289    let __temp0 = (__start0, __temp0, __end0);
3290    __action2(
3291        input,
3292        __temp0,
3293    )
3294}
3295
3296#[allow(unused_variables)]
3297fn __action69<
3298    'input,
3299>(
3300    input: &'input str,
3301    __lookbehind: &usize,
3302    __lookahead: &usize,
3303) -> ast::Block
3304{
3305    let __start0 = __lookbehind.clone();
3306    let __end0 = __lookahead.clone();
3307    let __temp0 = __action37(
3308        input,
3309        &__start0,
3310        &__end0,
3311    );
3312    let __temp0 = (__start0, __temp0, __end0);
3313    __action2(
3314        input,
3315        __temp0,
3316    )
3317}
3318
3319#[allow(unused_variables)]
3320fn __action70<
3321    'input,
3322>(
3323    input: &'input str,
3324    __0: (usize, ast::Expr, usize),
3325) -> Vec<ast::Expr>
3326{
3327    let __start0 = __0.0.clone();
3328    let __end0 = __0.2.clone();
3329    let __temp0 = __action36(
3330        input,
3331        __0,
3332    );
3333    let __temp0 = (__start0, __temp0, __end0);
3334    __action62(
3335        input,
3336        __temp0,
3337    )
3338}
3339
3340#[allow(unused_variables)]
3341fn __action71<
3342    'input,
3343>(
3344    input: &'input str,
3345    __lookbehind: &usize,
3346    __lookahead: &usize,
3347) -> Vec<ast::Expr>
3348{
3349    let __start0 = __lookbehind.clone();
3350    let __end0 = __lookahead.clone();
3351    let __temp0 = __action37(
3352        input,
3353        &__start0,
3354        &__end0,
3355    );
3356    let __temp0 = (__start0, __temp0, __end0);
3357    __action62(
3358        input,
3359        __temp0,
3360    )
3361}
3362
3363#[allow(unused_variables)]
3364fn __action72<
3365    'input,
3366>(
3367    input: &'input str,
3368    __0: (usize, alloc::vec::Vec<ast::Expr>, usize),
3369    __1: (usize, ast::Expr, usize),
3370) -> Vec<ast::Expr>
3371{
3372    let __start0 = __1.0.clone();
3373    let __end0 = __1.2.clone();
3374    let __temp0 = __action36(
3375        input,
3376        __1,
3377    );
3378    let __temp0 = (__start0, __temp0, __end0);
3379    __action63(
3380        input,
3381        __0,
3382        __temp0,
3383    )
3384}
3385
3386#[allow(unused_variables)]
3387fn __action73<
3388    'input,
3389>(
3390    input: &'input str,
3391    __0: (usize, alloc::vec::Vec<ast::Expr>, usize),
3392) -> Vec<ast::Expr>
3393{
3394    let __start0 = __0.2.clone();
3395    let __end0 = __0.2.clone();
3396    let __temp0 = __action37(
3397        input,
3398        &__start0,
3399        &__end0,
3400    );
3401    let __temp0 = (__start0, __temp0, __end0);
3402    __action63(
3403        input,
3404        __0,
3405        __temp0,
3406    )
3407}
3408
3409#[allow(unused_variables)]
3410fn __action74<
3411    'input,
3412>(
3413    input: &'input str,
3414    __lookbehind: &usize,
3415    __lookahead: &usize,
3416) -> ast::Program
3417{
3418    let __start0 = __lookbehind.clone();
3419    let __end0 = __lookahead.clone();
3420    let __temp0 = __action38(
3421        input,
3422        &__start0,
3423        &__end0,
3424    );
3425    let __temp0 = (__start0, __temp0, __end0);
3426    __action1(
3427        input,
3428        __temp0,
3429    )
3430}
3431
3432#[allow(unused_variables)]
3433fn __action75<
3434    'input,
3435>(
3436    input: &'input str,
3437    __0: (usize, alloc::vec::Vec<ast::Statement>, usize),
3438) -> ast::Program
3439{
3440    let __start0 = __0.0.clone();
3441    let __end0 = __0.2.clone();
3442    let __temp0 = __action39(
3443        input,
3444        __0,
3445    );
3446    let __temp0 = (__start0, __temp0, __end0);
3447    __action1(
3448        input,
3449        __temp0,
3450    )
3451}
3452
3453pub trait __ToTriple<'input, > {
3454    fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError<usize, Token<'input>, &'static str>>;
3455}
3456
3457impl<'input, > __ToTriple<'input, > for (usize, Token<'input>, usize) {
3458    fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError<usize, Token<'input>, &'static str>> {
3459        Ok(value)
3460    }
3461}
3462impl<'input, > __ToTriple<'input, > for Result<(usize, Token<'input>, usize), &'static str> {
3463    fn to_triple(value: Self) -> Result<(usize,Token<'input>,usize), __lalrpop_util::ParseError<usize, Token<'input>, &'static str>> {
3464        match value {
3465            Ok(v) => Ok(v),
3466            Err(error) => Err(__lalrpop_util::ParseError::User { error }),
3467        }
3468    }
3469}