// Lean compiler output // Module: init.lean.parser.rec // Imports: init.lean.parser.parsec #include "runtime/object.h" #include "runtime/apply.h" #include "runtime/io.h" #include "kernel/builtin.h" typedef lean::object obj; #if defined(__clang__) #pragma clang diagnostic ignored "-Wunused-parameter" #pragma clang diagnostic ignored "-Wunused-label" #endif obj* l_lean_parser_monad__parsec_error___at_lean_parser_rec__t_run__parsec___spec__1(obj*, obj*, obj*); obj* l_lean_parser_rec__t_run__parsec___rarg(obj*, obj*, obj*, obj*, obj*); obj* l_lean_parser_rec__t_run__parsec___rarg___lambda__1___closed__1; obj* l___private_3693562977__run__aux(obj*, obj*, obj*, obj*); obj* l_lean_parser_monad__rec_base___rarg(obj*); obj* l_reader__t_alternative___rarg(obj*, obj*); obj* l_lean_parser_rec__t_lean_parser_monad__parsec(obj*, obj*, obj*); obj* l_lean_parser_rec__t_lean_parser_monad__parsec___rarg(obj*, obj*, obj*); obj* l_lean_parser_monad__rec_trans___rarg(obj*, obj*, obj*, obj*); obj* l_lean_parser_rec__t; obj* l_lean_parser_rec__t_run__parsec___rarg___lambda__2(obj*, obj*, obj*, obj*, obj*); obj* l_lean_parser_rec__t_alternative(obj*, obj*, obj*); obj* l_lean_parser_rec__t_monad__functor___rarg(obj*); extern obj* l_mjoin___rarg___closed__1; obj* l___private_3693562977__run__aux___main(obj*, obj*, obj*); obj* l_lean_parser_rec__t_monad___rarg(obj*); obj* l_lean_parser_rec__t_run__parsec(obj*, obj*, obj*, obj*); obj* l_lean_parser_rec__t_has__monad__lift___rarg(obj*); obj* l_reader__t_monad__functor(obj*, obj*, obj*, obj*, obj*, obj*); obj* l_reader__t_monad___rarg(obj*); obj* l_reader__t_lift(obj*, obj*, obj*, obj*); obj* l_lean_parser_rec__t_recurse___rarg___lambda__1(obj*, obj*); obj* l_lean_parser_monad__parsec__trans___rarg(obj*, obj*, obj*); obj* l_lean_parser_rec__t_monad(obj*, obj*, obj*); obj* l_lean_parser_rec__t_run__parsec___rarg___lambda__1(obj*, obj*, obj*); obj* l_lean_parser_rec__t_run___rarg(obj*, obj*, obj*, obj*); obj* l_lean_parser_rec__t_run(obj*, obj*, obj*, obj*, obj*); obj* l___private_3693562977__run__aux___main___rarg(obj*, obj*, obj*, obj*); obj* l_lean_parser_rec__t_recurse(obj*, obj*, obj*); obj* l___private_3693562977__run__aux___rarg(obj*, obj*, obj*, obj*); obj* l_lean_parser_monad__parsec_error___rarg___lambda__1(obj*, obj*, obj*, obj*, obj*); obj* l_reader__t_monad__except___rarg(obj*); obj* l_lean_parser_rec__t_monad__functor(obj*, obj*, obj*, obj*); obj* l_lean_parser_rec__t_monad__except(obj*, obj*, obj*, obj*, obj*); obj* l_lean_parser_monad__rec_trans(obj*, obj*, obj*, obj*); extern obj* l_lean_parser_monad__parsec_left__over___rarg___closed__1; obj* l_lean_parser_rec__t_recurse___rarg(obj*, obj*, obj*); obj* l_lean_parser_rec__t_alternative___rarg(obj*, obj*); obj* l_lean_parser_rec__t_monad__except___rarg(obj*); obj* l_lean_parser_rec__t_has__monad__lift(obj*, obj*, obj*); obj* l_lean_parser_rec__t_run___at_lean_parser_rec__t_run__parsec___spec__2(obj*, obj*, obj*, obj*, obj*); obj* l_lean_parser_rec__t_run___at_lean_parser_rec__t_run__parsec___spec__2___rarg(obj*, obj*, obj*, obj*); obj* l_lean_parser_monad__parsec_error___at_lean_parser_rec__t_run__parsec___spec__1___rarg(obj*, obj*, obj*, obj*, obj*, obj*); obj* l_lean_parser_monad__rec_base(obj*, obj*, obj*); obj* _init_l_lean_parser_rec__t() { _start: { obj* x_0; x_0 = lean::box(0); lean::inc(x_0); return x_0; } } obj* l_lean_parser_rec__t_recurse___rarg(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_3; obj* x_5; obj* x_8; obj* x_11; obj* x_12; obj* x_13; x_3 = lean::cnstr_get(x_0, 1); lean::inc(x_3); x_5 = lean::cnstr_get(x_0, 0); lean::inc(x_5); lean::dec(x_0); x_8 = lean::cnstr_get(x_5, 1); lean::inc(x_8); lean::dec(x_5); x_11 = lean::apply_2(x_8, lean::box(0), x_2); x_12 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_recurse___rarg___lambda__1), 2, 1); lean::closure_set(x_12, 0, x_1); x_13 = lean::apply_4(x_3, lean::box(0), lean::box(0), x_11, x_12); return x_13; } } obj* l_lean_parser_rec__t_recurse___rarg___lambda__1(obj* x_0, obj* x_1) { _start: { obj* x_2; x_2 = lean::apply_1(x_1, x_0); return x_2; } } obj* l_lean_parser_rec__t_recurse(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_6; lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_6 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_recurse___rarg), 3, 0); return x_6; } } obj* l___private_3693562977__run__aux___main___rarg(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { _start: { obj* x_4; obj* x_5; x_4 = lean::mk_nat_obj(0u); x_5 = lean::nat_dec_eq(x_2, x_4); lean::dec(x_4); if (lean::obj_tag(x_5) == 0) { obj* x_8; obj* x_9; obj* x_13; obj* x_14; lean::dec(x_5); x_8 = lean::mk_nat_obj(1u); x_9 = lean::nat_sub(x_2, x_8); lean::dec(x_8); lean::dec(x_2); lean::inc(x_1); x_13 = lean::alloc_closure(reinterpret_cast(l___private_3693562977__run__aux___main___rarg), 4, 3); lean::closure_set(x_13, 0, x_0); lean::closure_set(x_13, 1, x_1); lean::closure_set(x_13, 2, x_9); x_14 = lean::apply_2(x_1, x_3, x_13); return x_14; } else { obj* x_18; lean::dec(x_5); lean::dec(x_1); lean::dec(x_2); x_18 = lean::apply_1(x_0, x_3); return x_18; } } } obj* l___private_3693562977__run__aux___main(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_6; lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_6 = lean::alloc_closure(reinterpret_cast(l___private_3693562977__run__aux___main___rarg), 4, 0); return x_6; } } obj* l___private_3693562977__run__aux___rarg(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { _start: { obj* x_4; x_4 = l___private_3693562977__run__aux___main___rarg(x_0, x_1, x_2, x_3); return x_4; } } obj* l___private_3693562977__run__aux(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { _start: { obj* x_8; lean::dec(x_3); lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_8 = lean::alloc_closure(reinterpret_cast(l___private_3693562977__run__aux___rarg), 4, 0); return x_8; } } obj* l_lean_parser_rec__t_run___rarg(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { _start: { obj* x_4; obj* x_5; x_4 = lean::alloc_closure(reinterpret_cast(l___private_3693562977__run__aux___rarg), 4, 3); lean::closure_set(x_4, 0, x_1); lean::closure_set(x_4, 1, x_2); lean::closure_set(x_4, 2, x_3); x_5 = lean::apply_1(x_0, x_4); return x_5; } } obj* l_lean_parser_rec__t_run(obj* x_0, obj* x_1, obj* x_2, obj* x_3, obj* x_4) { _start: { obj* x_10; lean::dec(x_4); lean::dec(x_3); lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_10 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_run___rarg), 4, 0); return x_10; } } obj* l_lean_parser_rec__t_run__parsec___rarg(obj* x_0, obj* x_1, obj* x_2, obj* x_3, obj* x_4) { _start: { obj* x_6; obj* x_8; obj* x_10; obj* x_12; obj* x_13; obj* x_14; lean::dec(x_1); x_6 = lean::cnstr_get(x_0, 1); lean::inc(x_6); x_8 = lean::cnstr_get(x_2, 0); lean::inc(x_8); x_10 = l_lean_parser_monad__parsec_left__over___rarg___closed__1; lean::inc(x_10); x_12 = lean::apply_2(x_8, lean::box(0), x_10); x_13 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_run__parsec___rarg___lambda__2), 5, 4); lean::closure_set(x_13, 0, x_0); lean::closure_set(x_13, 1, x_2); lean::closure_set(x_13, 2, x_3); lean::closure_set(x_13, 3, x_4); x_14 = lean::apply_4(x_6, lean::box(0), lean::box(0), x_12, x_13); return x_14; } } obj* l_lean_parser_rec__t_run__parsec___rarg___lambda__1(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_5; obj* x_6; obj* x_7; obj* x_11; lean::dec(x_2); lean::dec(x_0); x_5 = lean::alloc_cnstr(0, 0, 0); ; x_6 = l_lean_parser_rec__t_run__parsec___rarg___lambda__1___closed__1; x_7 = l_mjoin___rarg___closed__1; lean::inc(x_5); lean::inc(x_7); lean::inc(x_6); x_11 = l_lean_parser_monad__parsec_error___at_lean_parser_rec__t_run__parsec___spec__1___rarg(x_1, lean::box(0), x_6, x_7, x_5, x_5); return x_11; } } obj* _init_l_lean_parser_rec__t_run__parsec___rarg___lambda__1___closed__1() { _start: { obj* x_0; x_0 = lean::mk_string("rec_t.run_parsec: no progress"); return x_0; } } obj* l_lean_parser_rec__t_run__parsec___rarg___lambda__2(obj* x_0, obj* x_1, obj* x_2, obj* x_3, obj* x_4) { _start: { obj* x_5; obj* x_6; obj* x_8; obj* x_9; obj* x_12; x_5 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_run__parsec___rarg___lambda__1), 3, 2); lean::closure_set(x_5, 0, x_0); lean::closure_set(x_5, 1, x_1); x_6 = lean::string_iterator_remaining(x_4); lean::dec(x_4); x_8 = lean::mk_nat_obj(1u); x_9 = lean::nat_add(x_6, x_8); lean::dec(x_8); lean::dec(x_6); x_12 = l_lean_parser_rec__t_run___at_lean_parser_rec__t_run__parsec___spec__2___rarg(x_2, x_5, x_3, x_9); return x_12; } } obj* l_lean_parser_rec__t_run__parsec(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { _start: { obj* x_8; lean::dec(x_3); lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_8 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_run__parsec___rarg), 5, 0); return x_8; } } obj* l_lean_parser_monad__parsec_error___at_lean_parser_rec__t_run__parsec___spec__1___rarg(obj* x_0, obj* x_1, obj* x_2, obj* x_3, obj* x_4, obj* x_5) { _start: { obj* x_7; obj* x_10; obj* x_11; lean::dec(x_1); x_7 = lean::cnstr_get(x_0, 0); lean::inc(x_7); lean::dec(x_0); x_10 = lean::alloc_closure(reinterpret_cast(l_lean_parser_monad__parsec_error___rarg___lambda__1), 5, 4); lean::closure_set(x_10, 0, x_4); lean::closure_set(x_10, 1, x_2); lean::closure_set(x_10, 2, x_3); lean::closure_set(x_10, 3, x_5); x_11 = lean::apply_2(x_7, lean::box(0), x_10); return x_11; } } obj* l_lean_parser_monad__parsec_error___at_lean_parser_rec__t_run__parsec___spec__1(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_6; lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_6 = lean::alloc_closure(reinterpret_cast(l_lean_parser_monad__parsec_error___at_lean_parser_rec__t_run__parsec___spec__1___rarg), 6, 0); return x_6; } } obj* l_lean_parser_rec__t_run___at_lean_parser_rec__t_run__parsec___spec__2___rarg(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { _start: { obj* x_4; obj* x_5; x_4 = lean::alloc_closure(reinterpret_cast(l___private_3693562977__run__aux___rarg), 4, 3); lean::closure_set(x_4, 0, x_1); lean::closure_set(x_4, 1, x_2); lean::closure_set(x_4, 2, x_3); x_5 = lean::apply_1(x_0, x_4); return x_5; } } obj* l_lean_parser_rec__t_run___at_lean_parser_rec__t_run__parsec___spec__2(obj* x_0, obj* x_1, obj* x_2, obj* x_3, obj* x_4) { _start: { obj* x_10; lean::dec(x_4); lean::dec(x_3); lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_10 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_run___at_lean_parser_rec__t_run__parsec___spec__2___rarg), 4, 0); return x_10; } } obj* l_lean_parser_rec__t_monad___rarg(obj* x_0) { _start: { obj* x_1; x_1 = l_reader__t_monad___rarg(x_0); return x_1; } } obj* l_lean_parser_rec__t_monad(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_6; lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_6 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_monad___rarg), 1, 0); return x_6; } } obj* l_lean_parser_rec__t_alternative___rarg(obj* x_0, obj* x_1) { _start: { obj* x_2; x_2 = l_reader__t_alternative___rarg(x_0, x_1); return x_2; } } obj* l_lean_parser_rec__t_alternative(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_6; lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_6 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_alternative___rarg), 2, 0); return x_6; } } obj* l_lean_parser_rec__t_has__monad__lift___rarg(obj* x_0) { _start: { obj* x_1; x_1 = lean::alloc_closure(reinterpret_cast(l_reader__t_lift), 4, 3); lean::closure_set(x_1, 0, lean::box(0)); lean::closure_set(x_1, 1, lean::box(0)); lean::closure_set(x_1, 2, x_0); return x_1; } } obj* l_lean_parser_rec__t_has__monad__lift(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_6; lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_6 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_has__monad__lift___rarg), 1, 0); return x_6; } } obj* l_lean_parser_rec__t_monad__except___rarg(obj* x_0) { _start: { obj* x_1; x_1 = l_reader__t_monad__except___rarg(x_0); return x_1; } } obj* l_lean_parser_rec__t_monad__except(obj* x_0, obj* x_1, obj* x_2, obj* x_3, obj* x_4) { _start: { obj* x_10; lean::dec(x_4); lean::dec(x_3); lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_10 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_monad__except___rarg), 1, 0); return x_10; } } obj* l_lean_parser_rec__t_lean_parser_monad__parsec___rarg(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_5; obj* x_7; obj* x_8; lean::dec(x_1); lean::inc(x_0); x_5 = lean::alloc_closure(reinterpret_cast(l_reader__t_lift), 4, 3); lean::closure_set(x_5, 0, lean::box(0)); lean::closure_set(x_5, 1, lean::box(0)); lean::closure_set(x_5, 2, x_0); lean::inc(x_0); x_7 = lean::alloc_closure(reinterpret_cast(l_reader__t_monad__functor), 6, 5); lean::closure_set(x_7, 0, lean::box(0)); lean::closure_set(x_7, 1, lean::box(0)); lean::closure_set(x_7, 2, lean::box(0)); lean::closure_set(x_7, 3, x_0); lean::closure_set(x_7, 4, x_0); x_8 = l_lean_parser_monad__parsec__trans___rarg(x_5, x_7, x_2); return x_8; } } obj* l_lean_parser_rec__t_lean_parser_monad__parsec(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_6; lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_6 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_lean_parser_monad__parsec___rarg), 3, 0); return x_6; } } obj* l_lean_parser_rec__t_monad__functor___rarg(obj* x_0) { _start: { obj* x_2; lean::inc(x_0); x_2 = lean::alloc_closure(reinterpret_cast(l_reader__t_monad__functor), 6, 5); lean::closure_set(x_2, 0, lean::box(0)); lean::closure_set(x_2, 1, lean::box(0)); lean::closure_set(x_2, 2, lean::box(0)); lean::closure_set(x_2, 3, x_0); lean::closure_set(x_2, 4, x_0); return x_2; } } obj* l_lean_parser_rec__t_monad__functor(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { _start: { obj* x_8; lean::dec(x_3); lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_8 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_monad__functor___rarg), 1, 0); return x_8; } } obj* l_lean_parser_monad__rec_trans___rarg(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { _start: { obj* x_5; obj* x_6; lean::dec(x_2); x_5 = lean::apply_1(x_1, x_3); x_6 = lean::apply_2(x_0, lean::box(0), x_5); return x_6; } } obj* l_lean_parser_monad__rec_trans(obj* x_0, obj* x_1, obj* x_2, obj* x_3) { _start: { obj* x_8; lean::dec(x_3); lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_8 = lean::alloc_closure(reinterpret_cast(l_lean_parser_monad__rec_trans___rarg), 4, 0); return x_8; } } obj* l_lean_parser_monad__rec_base___rarg(obj* x_0) { _start: { obj* x_1; x_1 = lean::alloc_closure(reinterpret_cast(l_lean_parser_rec__t_recurse___rarg), 3, 1); lean::closure_set(x_1, 0, x_0); return x_1; } } obj* l_lean_parser_monad__rec_base(obj* x_0, obj* x_1, obj* x_2) { _start: { obj* x_6; lean::dec(x_2); lean::dec(x_1); lean::dec(x_0); x_6 = lean::alloc_closure(reinterpret_cast(l_lean_parser_monad__rec_base___rarg), 1, 0); return x_6; } } void initialize_init_lean_parser_parsec(); static bool _G_initialized = false; void initialize_init_lean_parser_rec() { if (_G_initialized) return; _G_initialized = true; initialize_init_lean_parser_parsec(); l_lean_parser_rec__t = _init_l_lean_parser_rec__t(); l_lean_parser_rec__t_run__parsec___rarg___lambda__1___closed__1 = _init_l_lean_parser_rec__t_run__parsec___rarg___lambda__1___closed__1(); }