UNPKG

@fink/larix

Version:

A parser for generating fink's AST.

63 lines (53 loc) 1.2 kB
const { add_operator } = require("@fink/prattler/expressions.js"); const { curr_value } = require("@fink/prattler/parser.js"); const { add_named_block } = require("../block/init.js"); const { single_expression } = require("../block/expr.js"); const { infix } = require("../expressions.js"); const infix_pipe = token_type => ({ ...infix(token_type, `call`), led: lbp => (ctx, left) => { const { loc: { start } } = left; const op = curr_value(ctx); const [callee, next_ctx] = single_expression(ctx, lbp); const { loc: { end } } = callee; return [{ type: `call`, callee, args: [left], op, loc: { start, end } }, next_ctx]; } }); exports.infix_pipe = infix_pipe; const add_pipe = ctx => { let ˆpipe_result_1 = ctx; ˆpipe_result_1 = add_named_block(`pipe`)(ˆpipe_result_1); return ˆpipe_result_1 = add_operator(infix_pipe(`|`))(ˆpipe_result_1); }; exports.add_pipe = add_pipe; const add_call_operators = ctx => { let ˆpipe_result_2 = ctx; return ˆpipe_result_2 = add_pipe(ˆpipe_result_2); }; exports.add_call_operators = add_call_operators;