@fink/loxia
Version:
A fink to JavaScript compiler.
362 lines (313 loc) • 10.3 kB
JavaScript
import { _in_ } from "@fink/js-interop/runtime.js";
import { reverse as reverse_0 } from "@fink/std-lib/iter.js";
import { init_ctx as init_ctx_0 } from "../ir/context.js";
import { update_value as update_value_0 } from "../ir/context.js";
import { get_value as get_value_0 } from "../ir/context.js";
import { replace_idents as replace_idents_0 } from "./identifier/init.js";
import { add_module as add_module_0 } from "./module/init.js";
import { transfrom_module as transfrom_module_0 } from "./module/init.js";
import { add_import as add_import_0 } from "./module/import.js";
import { add_bool as add_bool_0 } from "./literals/keyword.js";
import { add_number as add_number_0 } from "./literals/number.js";
import { add_string as add_string_0 } from "./literals/string.js";
import { add_list as add_list_0 } from "./literals/list.js";
import { add_record as add_record_0 } from "./literals/record.js";
import { add_conditionals as add_conditionals_0 } from "./conditionals/init.js";
import { add_logical as add_logical_0 } from "./logical/init.js";
import { add_in as add_in_0 } from "./logical/in.js";
import { add_arithmitic as add_arithmitic_0 } from "./arithmitic/init.js";
import { add_comparison as add_comparison_0 } from "./comparison/init.js";
import { add_funcs as add_funcs_0 } from "./func/init.js";
import { add_calls as add_calls_0 } from "./call/call.js";
import { add_jsx as add_jsx_0 } from "./jsx/init.js";
import { add_async as add_async_0 } from "./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;
};
export const add_transformers = add_transformers_0,
prepare_rets = prepare_rets_0,
prepare_exports = prepare_exports_0,
prepare_imports = prepare_imports_0,
prepare_inlinable = prepare_inlinable_0,
transform_ir = transform_ir_0;