UNPKG

@fink/loxia

Version:

A fink to JavaScript compiler.

430 lines (359 loc) 10.4 kB
const { _in_ } = require("@fink/js-interop/runtime.js"); const { reverse: reverse_0 } = require("@fink/std-lib/iter.js"); const { init_ctx: init_ctx_0 } = require("../ir/context.js"); const { update_value: update_value_0 } = require("../ir/context.js"); const { get_value: get_value_0 } = require("../ir/context.js"); const { replace_idents: replace_idents_0 } = require("./identifier/init.js"); const { add_module: add_module_0 } = require("./module/init.js"); const { transfrom_module: transfrom_module_0 } = require("./module/init.js"); const { add_import: add_import_0 } = require("./module/import.js"); const { add_bool: add_bool_0 } = require("./literals/keyword.js"); const { add_number: add_number_0 } = require("./literals/number.js"); const { add_string: add_string_0 } = require("./literals/string.js"); const { add_list: add_list_0 } = require("./literals/list.js"); const { add_record: add_record_0 } = require("./literals/record.js"); const { add_conditionals: add_conditionals_0 } = require("./conditionals/init.js"); const { add_logical: add_logical_0 } = require("./logical/init.js"); const { add_in: add_in_0 } = require("./logical/in.js"); const { add_arithmitic: add_arithmitic_0 } = require("./arithmitic/init.js"); const { add_comparison: add_comparison_0 } = require("./comparison/init.js"); const { add_funcs: add_funcs_0 } = require("./func/init.js"); const { add_calls: add_calls_0 } = require("./call/call.js"); const { add_jsx: add_jsx_0 } = require("./jsx/init.js"); const { add_async: add_async_0 } = require("./async/init.js"); const add_transformers_0 = ctx_0 => { const ppr_0 = add_module_0(ctx_0); const ppr_1 = add_import_0(ppr_0); const ppr_2 = add_bool_0(ppr_1); const ppr_3 = add_number_0(ppr_2); const ppr_4 = add_string_0(ppr_3); const ppr_5 = add_list_0(ppr_4); const ppr_6 = add_record_0(ppr_5); const ppr_7 = add_in_0(ppr_6); const ppr_8 = add_logical_0(ppr_7); const ppr_9 = add_comparison_0(ppr_8); const ppr_10 = add_arithmitic_0(ppr_9); const ppr_11 = add_async_0(ppr_10); const ppr_12 = add_funcs_0(ppr_11); const ppr_13 = add_conditionals_0(ppr_12); const ppr_14 = add_calls_0(ppr_13); const ppr_15 = add_jsx_0(ppr_14); return ppr_15; }; const prepare_rets_0 = (...args_33) => { prepare_rets_0: do { const dlst_0 = args_33[0]; const hdm_0 = dlst_0[0]; const expr_0 = undefined === hdm_0 ? false : hdm_0; const tail_2 = dlst_0.slice(1); const ctx_1 = args_33[1]; /* istanbul ignore else */ if (expr_0 === false) { return ctx_1; } /* istanbul ignore else */ if (null != expr_0) { const itm_0 = expr_0[0]; /* istanbul ignore else */ if (null != itm_0) { /* istanbul ignore else */ if (itm_0.f === `ac`) { const next_ctx_0 = update_value_0(expr_0[0].args[0], { res_ids: expr_0[1] }, ctx_1); args_33 = [tail_2, next_ctx_0]; continue prepare_rets_0; } } } args_33 = [tail_2, ctx_1]; continue prepare_rets_0; } while (true); }; const prepare_exports_0 = (...args_34) => { prepare_exports_0: do { const dlst_2 = args_34[0]; const hdm_1 = dlst_2[0]; const expr_1 = undefined === hdm_1 ? false : hdm_1; const tail_9 = dlst_2.slice(1); const ctx_2 = args_34[1]; const rec_id_0 = args_34[2]; /* istanbul ignore else */ if (expr_1 === false) { return ctx_2; } /* istanbul ignore else */ if (null != expr_1) { const itm_7 = expr_1[0]; /* istanbul ignore else */ if (null != itm_7) { /* istanbul ignore else */ if (itm_7.f === `mod`) { args_34 = [tail_9, ctx_2, expr_1[0].args[0]]; continue prepare_exports_0; } } } /* istanbul ignore else */ if (null != expr_1) { const itm_2 = expr_1[0]; /* istanbul ignore else */ if (null != itm_2) { /* istanbul ignore else */ if (itm_2.f === `rec_s`) { const itm_4 = expr_1[1]; /* istanbul ignore else */ if (null != itm_4) { const itm_5 = itm_4[0]; /* istanbul ignore else */ if (null != itm_5) { /* istanbul ignore else */ if (itm_5.i === rec_id_0.i) { const val_6 = expr_1[0].args; const next_ctx_1 = update_value_0(val_6[2], { inline: false }, ctx_2); args_34 = [tail_9, next_ctx_1, val_6[0]]; continue prepare_exports_0; } } } } } } args_34 = [tail_9, ctx_2, rec_id_0]; continue prepare_exports_0; } while (true); }; const prepare_imports_0 = (...args_35) => { prepare_imports_0: do { const dlst_5 = args_35[0]; const hdm_2 = dlst_5[0]; const expr_2 = undefined === hdm_2 ? false : hdm_2; const tail_23 = dlst_5.slice(1); const ctx_3 = args_35[1]; /* istanbul ignore else */ if (expr_2 === false) { return ctx_3; } /* istanbul ignore else */ if (null != expr_2) { const itm_9 = expr_2[0]; /* istanbul ignore else */ if (null != itm_9) { /* istanbul ignore else */ if (itm_9.f === `imp`) { const next_ctx_2 = update_value_0(expr_2[0].args[0], { refs: 1 }, ctx_3); args_35 = [tail_23, next_ctx_2]; continue prepare_imports_0; } } } args_35 = [tail_23, ctx_3]; continue prepare_imports_0; } while (true); }; const prepare_inlinable_0 = (...args_36) => { prepare_inlinable_0: do { const dlst_7 = args_36[0]; const hdm_3 = dlst_7[0]; const expr_3 = undefined === hdm_3 ? false : hdm_3; const tail_29 = dlst_7.slice(1); const ctx_4 = args_36[1]; /* istanbul ignore else */ if (expr_3 === false) { return ctx_4; } /* istanbul ignore else */ if (null != expr_3) { const itm_22 = expr_3[0]; /* istanbul ignore else */ if (null != itm_22) { /* istanbul ignore else */ if (itm_22.f === `af`) { const next_ctx_7 = update_value_0(expr_3[1][0], { inline: false }, ctx_4); args_36 = [tail_29, next_ctx_7]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_20 = expr_3[0]; /* istanbul ignore else */ if (null != itm_20) { /* istanbul ignore else */ if (itm_20.f === `wt`) { const next_ctx_6 = update_value_0(expr_3[1][0], { inline: false }, ctx_4); args_36 = [tail_29, next_ctx_6]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_18 = expr_3[0]; /* istanbul ignore else */ if (null != itm_18) { /* istanbul ignore else */ if (itm_18.f === `str`) { const next_ctx_5 = update_value_0(expr_3[1][0], { tp: `str` }, ctx_4); args_36 = [tail_29, next_ctx_5]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_15 = expr_3[0]; /* istanbul ignore else */ if (null != itm_15) { /* istanbul ignore else */ if (itm_15.f === `jxe`) { const elem_id_0 = expr_3[0].args[0]; const value_4 = get_value_0(elem_id_0, ctx_4); let ret_8; ret_8: { /* istanbul ignore else */ if (null != value_4) { /* istanbul ignore else */ if (value_4.tp === `str`) { ret_8 = ctx_4; /* istanbul ignore next */ break ret_8; } } const result_30 = update_value_0(elem_id_0, { inline: false }, ctx_4); ret_8 = result_30; /* istanbul ignore next */ break ret_8; } const next_ctx_4 = ret_8; args_36 = [tail_29, next_ctx_4]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_13 = expr_3[0]; /* istanbul ignore else */ if (null != itm_13) { /* istanbul ignore else */ if (true === _in_(itm_13.f, [`int`, `float`, `bool`])) { const next_ctx_3 = update_value_0(expr_3[1][0], { inline: true }, ctx_4); args_36 = [tail_29, next_ctx_3]; continue prepare_inlinable_0; } } } /* istanbul ignore else */ if (null != expr_3) { const itm_11 = expr_3[0]; /* istanbul ignore else */ if (null != itm_11) { /* istanbul ignore else */ if (true === _in_(itm_11.f, [`fn`, `cn`])) { args_36 = [[...expr_3[0].args[1], ...tail_29], ctx_4]; continue prepare_inlinable_0; } } } args_36 = [tail_29, ctx_4]; continue prepare_inlinable_0; } while (true); }; const transform_ir_0 = (input_exprs_0, options_0) => { const exprs_4 = replace_idents_0(input_exprs_0); const rev_expr_0 = reverse_0(exprs_4); const ppr_16 = (prtl_0 => { const pfn_17 = init_ctx_0(exprs_4, prtl_0); return pfn_17; })(options_0); const ppr_17 = (prtl_1 => { const pfn_19 = prepare_rets_0(rev_expr_0, prtl_1); return pfn_19; })(ppr_16); const ppr_18 = (prtl_2 => { const pfn_21 = prepare_imports_0(rev_expr_0, prtl_2); return pfn_21; })(ppr_17); const ppr_19 = (prtl_3 => { const pfn_23 = prepare_exports_0(rev_expr_0, prtl_3); return pfn_23; })(ppr_18); const ppr_20 = (prtl_4 => { const pfn_25 = prepare_inlinable_0(exprs_4, prtl_4); return pfn_25; })(ppr_19); const ppr_21 = (prtl_5 => { const pfn_27 = add_transformers_0(prtl_5); return pfn_27; })(ppr_20); const result_46 = transfrom_module_0(exprs_4, ppr_21); return result_46; }; exports.add_transformers = add_transformers_0; exports.prepare_rets = prepare_rets_0; exports.prepare_exports = prepare_exports_0; exports.prepare_imports = prepare_imports_0; exports.prepare_inlinable = prepare_inlinable_0; exports.transform_ir = transform_ir_0;