@fink/loxia
Version:
A fink to JavaScript compiler.
322 lines (281 loc) • 8.35 kB
JavaScript
const {
_in_
} = require("@fink/js-interop/runtime.js");
const {
replace_all: replace_all_0
} = require("@fink/std-lib/regex.js");
const {
rx: rx_0
} = require("@fink/std-lib/regex.js");
const {
join: join_0
} = require("@fink/std-lib/iter.js");
const {
map: map_0
} = require("@fink/std-lib/iter.js");
const t2s_0 = tpe_0 => {
/* istanbul ignore else */
if (null != tpe_0) {
/* istanbul ignore else */
if (undefined !== tpe_0.r) {
const sx_7 = t2s_0(tpe_0.r);
return `${tpe_0.t}: ${sx_7}`;
}
}
/* istanbul ignore else */
if (null != tpe_0) {
const itm_2 = tpe_0.i;
/* istanbul ignore else */
if (null != itm_2) {
/* istanbul ignore else */
if (undefined !== itm_2[0]) {
const pfn_3 = map_0(t2s_0);
const ppr_3 = pfn_3(tpe_0.i);
const pfn_4 = join_0(`, `);
const ppr_4 = pfn_4(ppr_3);
return `${tpe_0.t}[${ppr_4}]`;
}
}
}
/* istanbul ignore else */
if (null != tpe_0) {
/* istanbul ignore else */
if (undefined !== tpe_0.e) {
const pfn_0 = map_0(dlst_0 => {
const sx_1 = t2s_0(dlst_0[1]);
return `${dlst_0[0]}: ${sx_1}`;
});
const ppr_0 = pfn_0(tpe_0.e);
const pfn_1 = join_0(`, `);
const ppr_1 = pfn_1(ppr_0);
const ppr_2 = (kvs_0 => {
/* istanbul ignore else */
if (kvs_0 === ``) {
return tpe_0.t;
}
return `${tpe_0.t}{${kvs_0}}`;
})(ppr_1);
return ppr_2;
}
}
/* istanbul ignore else */
if (null != tpe_0) {
/* istanbul ignore else */
if (undefined !== tpe_0.t) {
return tpe_0.t;
}
}
/* istanbul ignore next */
return;
};
const a2s_0 = (...args_13) => {
a2s_0: do {
const dlst_1 = args_13[0];
const hdm_0 = dlst_1[0];
const arg_6 = undefined === hdm_0 ? false : hdm_0;
const tail_7 = dlst_1.slice(1);
const hdm_1 = args_13[1];
const out_0 = undefined === hdm_1 ? [] : hdm_1;
/* istanbul ignore else */
if (arg_6 === false) {
/* istanbul ignore else */
if (null != out_0) {
/* istanbul ignore else */
if (undefined !== out_0[0]) {
const callee_10 = join_0(`, `);
const sx_10 = callee_10(out_0);
return ` ${sx_10}`;
}
}
return ``;
}
/* istanbul ignore else */
if (null != arg_6) {
/* istanbul ignore else */
if (undefined !== arg_6.t) {
/* istanbul ignore else */
if (undefined !== arg_6.i) {
const sx_9 = t2s_0(arg_6.t);
args_13 = [tail_7, [...out_0, `${arg_6.i}(${sx_9})`]];
continue a2s_0;
}
}
}
/* istanbul ignore else */
if (null != arg_6) {
/* istanbul ignore else */
if (undefined !== arg_6.i) {
args_13 = [tail_7, [...out_0, arg_6.i]];
continue a2s_0;
}
}
args_13 = [tail_7, [...out_0, arg_6]];
continue a2s_0;
} while (true);
};
const raw_0 = s_0 => {
const result_17 = replace_all_0(s_0, rx_0`(\n)`, `\\n`);
return result_17;
};
const ops_0 = {
"==": `eq`,
"!=": `neq`,
">": `gt`,
"<": `lt`,
">=": `gte`,
"<=": `lte`,
"+": `add`,
"-": `sub`,
"*": `mul`,
"^": `pow`,
"/": `div`,
"%": `rem`
};
const serialize_0 = (...args_16) => {
serialize_0: do {
const dlst_2 = args_16[0];
const hdm_2 = dlst_2[0];
const curr_0 = undefined === hdm_2 ? false : hdm_2;
const tail_12 = dlst_2.slice(1);
const hdm_3 = args_16[1];
const out_1 = undefined === hdm_3 ? `` : hdm_3;
const hdm_4 = args_16[2];
const indent_0 = undefined === hdm_4 ? `` : hdm_4;
/* istanbul ignore else */
if (curr_0 === false) {
return out_1;
}
/* istanbul ignore else */
if (null != curr_0) {
const itm_26 = curr_0[0];
/* istanbul ignore else */
if (null != itm_26) {
/* istanbul ignore else */
if (itm_26.f === `=`) {
const sx_54 = a2s_0(curr_0[1]);
args_16 = [tail_12, `${out_1}\n${indent_0}id ${curr_0[0].args[0].i}, fn${sx_54}:`, ` ${indent_0}`];
continue serialize_0;
}
}
}
/* istanbul ignore else */
if (null != curr_0) {
const itm_24 = curr_0[0];
/* istanbul ignore else */
if (null != itm_24) {
/* istanbul ignore else */
if (true === _in_(itm_24.f, [`str`, `int`, `float`])) {
const drec_6 = curr_0[0];
const sx_48 = raw_0(drec_6.args[0]);
const sx_49 = a2s_0(curr_0[1]);
args_16 = [tail_12, `${out_1}\n${indent_0}${drec_6.f} \'${sx_48}\', fn${sx_49}:`, ` ${indent_0}`];
continue serialize_0;
}
}
}
/* istanbul ignore else */
if (null != curr_0) {
const itm_22 = curr_0[0];
/* istanbul ignore else */
if (null != itm_22) {
/* istanbul ignore else */
if (true === _in_(itm_22.f, [`lst`, `rec`])) {
const sx_43 = a2s_0(curr_0[1]);
args_16 = [tail_12, `${out_1}\n${indent_0}${curr_0[0].f}_e fn${sx_43}:`, ` ${indent_0}`];
continue serialize_0;
}
}
}
/* istanbul ignore else */
if (null != curr_0) {
const itm_15 = curr_0[0];
/* istanbul ignore else */
if (null != itm_15) {
/* istanbul ignore else */
if (itm_15.f === `fn`) {
const itm_17 = itm_15.args;
/* istanbul ignore else */
if (null != itm_17) {
const itm_18 = itm_17[0];
/* istanbul ignore else */
if (null != itm_18) {
/* istanbul ignore else */
if (undefined !== itm_18[0]) {
/* istanbul ignore else */
if (undefined !== itm_18[1]) {
/* istanbul ignore else */
if (undefined !== itm_18[2]) {
const drec_4 = curr_0[0];
const val_18 = drec_4.args;
const sx_33 = a2s_0(val_18[0]);
const sx_35 = serialize_0(val_18[1], ``, ` ${indent_0}`);
const sx_38 = a2s_0(curr_0[1]);
args_16 = [tail_12, `${out_1}\n${indent_0}z (fn${sx_33}: #${drec_4.f}${sx_35}
${indent_0}), fn${sx_38}:`, ` ${indent_0}`];
continue serialize_0;
}
}
}
}
}
}
}
}
/* istanbul ignore else */
if (null != curr_0) {
const itm_13 = curr_0[0];
/* istanbul ignore else */
if (null != itm_13) {
/* istanbul ignore else */
if (true === _in_(itm_13.f, [`cn`, `fn`])) {
const drec_3 = curr_0[0];
const val_16 = drec_3.args;
const sx_24 = a2s_0(val_16[0]);
const sx_26 = serialize_0(val_16[1], ``, ` ${indent_0}`);
const sx_29 = a2s_0(curr_0[1]);
args_16 = [tail_12, `${out_1}\n${indent_0}id (fn${sx_24}: #${drec_3.f}${sx_26}
${indent_0}), fn${sx_29}:`, ` ${indent_0}`];
continue serialize_0;
}
}
}
/* istanbul ignore else */
if (null != curr_0) {
const itm_11 = curr_0[0];
/* istanbul ignore else */
if (null != itm_11) {
/* istanbul ignore else */
if (true === _in_(itm_11.f, [`cc`, `cif`, `cf`])) {
const drec_2 = curr_0[0];
const sx_20 = a2s_0(drec_2.args);
args_16 = [tail_12, `${out_1}\n${indent_0}${drec_2.f}${sx_20}`, ` ${indent_0}`];
continue serialize_0;
}
}
}
/* istanbul ignore else */
if (null != curr_0) {
const itm_9 = curr_0[1];
/* istanbul ignore else */
if (null != itm_9) {
/* istanbul ignore else */
if (undefined !== itm_9[0]) {
const drec_0 = curr_0[0];
const f_0 = drec_0.f;
const hdm_5 = ops_0[f_0];
const sx_14 = a2s_0(drec_0.args);
const sx_15 = a2s_0(curr_0[1]);
args_16 = [tail_12, `${out_1}\n${indent_0}${undefined === hdm_5 ? f_0 : hdm_5}${sx_14}, fn${sx_15}:`, ` ${indent_0}`];
continue serialize_0;
}
}
}
/* istanbul ignore next */
return;
} while (true);
};
exports.t2s = t2s_0;
exports.a2s = a2s_0;
exports.raw = raw_0;
exports.ops = ops_0;
exports.serialize = serialize_0;