@fink/larix
Version:
A parser for generating fink's AST.
40 lines (34 loc) • 873 B
JavaScript
const {
add_operator,
add_separator
} = require("@fink/prattler/expressions.js");
const {
prefix,
terminator
} = require("../expressions.js");
const {
terminated_block,
add_named_block
} = require("../block/init.js");
const list_op = token_type => ({ ...prefix(token_type),
nud: () => ctx => {
const [{
exprs,
loc
}, next_ctx] = terminated_block(ctx, `]`);
return [{
type: `list`,
exprs,
loc
}, next_ctx];
}
});
exports.list_op = list_op;
const add_list = ctx => {
let ˆpipe_result_1 = ctx;
ˆpipe_result_1 = add_operator(list_op(`[`))(ˆpipe_result_1);
ˆpipe_result_1 = add_separator(terminator(`,`))(ˆpipe_result_1);
ˆpipe_result_1 = add_separator(terminator(`]`))(ˆpipe_result_1);
return ˆpipe_result_1 = add_named_block(`list`, `list`)(ˆpipe_result_1);
};
exports.add_list = add_list;