UNPKG

@fink/loxia

Version:

A fink to JavaScript compiler.

182 lines (158 loc) 5.11 kB
const { _in_ } = require("@fink/js-interop/runtime.js"); const { length: length_0 } = require("@fink/std-lib/iter.js"); const { floor: floor_0 } = require("@fink/std-lib/math.js"); const alphabet_0 = `abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`; const base_0 = length_0(alphabet_0); const to_id_0 = (...args_0) => { to_id_0: do { const idx_0 = args_0[0]; const hdm_0 = args_0[1]; const out_0 = undefined === hdm_0 ? `` : hdm_0; const div_0 = floor_0(idx_0 / base_0); const rem_0 = idx_0 % base_0; /* istanbul ignore else */ if (div_0 === 0) { return `${alphabet_0[rem_0]}${out_0}`; } args_0 = [div_0 - 1, `${alphabet_0[rem_0]}${out_0}`]; continue to_id_0; } while (true); }; const get_new_id_0 = (id_0, renames_0) => { const hdm_1 = renames_0.id_cntr; const id_cntr_0 = undefined === hdm_1 ? 0 : hdm_1; const new_id_0 = to_id_0(id_cntr_0); return [{ ...id_0, i: new_id_0 }, { ...renames_0, id_cntr: id_cntr_0 + 1, [id_0.i]: new_id_0 }]; }; const replace_refs_0 = (...args_2) => { replace_refs_0: do { const dlst_0 = args_2[0]; const hdm_2 = dlst_0[0]; const id_1 = undefined === hdm_2 ? false : hdm_2; const renames_1 = args_2[1]; const hdm_3 = args_2[2]; const out_1 = undefined === hdm_3 ? [] : hdm_3; /* istanbul ignore else */ if (id_1 === false) { return out_1; } const hdm_4 = renames_1[id_1.i]; args_2 = [dlst_0.slice(1), renames_1, [...out_1, { ...id_1, i: undefined === hdm_4 ? id_1.i : hdm_4 }]]; continue replace_refs_0; } while (true); }; const rename_0 = (...args_3) => { rename_0: do { const dlst_1 = args_3[0]; const hdm_5 = dlst_1[0]; const id_2 = undefined === hdm_5 ? false : hdm_5; const renames_2 = args_3[1]; const hdm_6 = args_3[2]; const out_2 = undefined === hdm_6 ? [] : hdm_6; /* istanbul ignore else */ if (id_2 === false) { return [out_2, renames_2]; } const dlst_2 = get_new_id_0(id_2, renames_2); args_3 = [dlst_1.slice(1), dlst_2[1], [...out_2, dlst_2[0]]]; continue rename_0; } while (true); }; const shorten_names_0 = (...args_4) => { shorten_names_0: do { const dlst_3 = args_4[0]; const hdm_7 = dlst_3[0]; const curr_0 = undefined === hdm_7 ? false : hdm_7; const tail_15 = dlst_3.slice(1); const hdm_8 = args_4[1]; const renames_3 = undefined === hdm_8 ? {} : hdm_8; const hdm_9 = args_4[2]; const out_3 = undefined === hdm_9 ? [] : hdm_9; /* istanbul ignore else */ if (curr_0 === false) { return [out_3, renames_3]; } /* istanbul ignore else */ if (null != curr_0) { const itm_4 = curr_0[0]; /* istanbul ignore else */ if (null != itm_4) { /* istanbul ignore else */ if (true === _in_(itm_4.f, [`int`, `float`, `str`, `bool`])) { const dlst_15 = rename_0(curr_0[1], renames_3); args_4 = [tail_15, dlst_15[1], [...out_3, [curr_0[0], dlst_15[0]]]]; continue shorten_names_0; } } } /* istanbul ignore else */ if (null != curr_0) { const itm_2 = curr_0[0]; /* istanbul ignore else */ if (null != itm_2) { /* istanbul ignore else */ if (true === _in_(itm_2.f, [`tpl_i`, `tpl_s`])) { const expr_2 = curr_0[0]; const val_11 = expr_2.args; const dlst_12 = replace_refs_0([val_11[0]], renames_3); const dlst_13 = rename_0(curr_0[1], renames_3); args_4 = [tail_15, dlst_13[1], [...out_3, [{ ...expr_2, args: [dlst_12[0], ...val_11.slice(1)] }, dlst_13[0]]]]; continue shorten_names_0; } } } /* istanbul ignore else */ if (null != curr_0) { const itm_0 = curr_0[0]; /* istanbul ignore else */ if (null != itm_0) { /* istanbul ignore else */ if (true === _in_(itm_0.f, [`fn`, `cn`])) { const expr_1 = curr_0[0]; const dlst_7 = expr_1.args; const dlst_8 = rename_0(dlst_7[0], renames_3); const dlst_9 = shorten_names_0(dlst_7[1], dlst_8[1]); const dlst_10 = rename_0(curr_0[1], dlst_9[1]); args_4 = [tail_15, dlst_10[1], [...out_3, [{ ...expr_1, args: [dlst_8[0], dlst_9[0]] }, dlst_10[0]]]]; continue shorten_names_0; } } } const expr_0 = curr_0[0]; const nargs_0 = replace_refs_0(expr_0.args, renames_3); const dlst_5 = rename_0(curr_0[1], renames_3); args_4 = [tail_15, dlst_5[1], [...out_3, [{ ...expr_0, args: nargs_0 }, dlst_5[0]]]]; continue shorten_names_0; } while (true); }; const optimize_names_0 = (exprs_0, ctx_0) => { const dlst_16 = shorten_names_0(exprs_0); return [dlst_16[0], ctx_0]; }; exports.alphabet = alphabet_0; exports.base = base_0; exports.to_id = to_id_0; exports.get_new_id = get_new_id_0; exports.replace_refs = replace_refs_0; exports.rename = rename_0; exports.shorten_names = shorten_names_0; exports.optimize_names = optimize_names_0;