UNPKG

@fink/larix

Version:

A parser for generating fink's AST.

64 lines (52 loc) 1.11 kB
const { init_parser, start_parser } = require("@fink/prattler/parser.js"); const { tokenize } = require("./lexer/tokens.js"); const { init_language } = require("./lang/init.js"); const { parse_module } = require("./lang/module/init.js"); const { single_expression } = require("./lang/block/expr.js"); const init_tokens = ctx => { const tokens = tokenize(ctx.code); return { ...ctx, tokens }; }; exports.init_tokens = init_tokens; const init = ctx => { let ˆpipe_result_1 = ctx; ˆpipe_result_1 = init_tokens(ˆpipe_result_1); ˆpipe_result_1 = init_parser(ˆpipe_result_1); ˆpipe_result_1 = init_language(ˆpipe_result_1); return ˆpipe_result_1 = start_parser(ˆpipe_result_1); }; exports.init = init; const parse_expr = (code, filename) => { const ctx = init({ code, filename }); const [expr, { errors }] = single_expression(ctx, 0); return { ...expr, errors }; }; exports.parse_expr = parse_expr; const parse = (code, filename) => { const ctx = init({ code, filename }); return parse_module(ctx); }; exports.parse = parse;