UNPKG

@fink/prattler

Version:

A generic Pratt/top down operator precedence parser.

42 lines (36 loc) 755 B
const { highlight_code_loc } = require("@fink/snippet/highlight.js"); const { stack_trace } = require("@fink/std-lib/stack-trace.js"); const get_error = (ctx, msg, token, stack_func) => { const { code, filename } = ctx; const { start: { line, column } } = token.loc; // TODO: use error from std-lib? const error = { error: `${filename}:${line}:${column} ${highlight_code_loc(code, token.loc)} ${msg} `, token, stack: stack_trace(stack_func) }; return error; }; exports.get_error = get_error; const add_error = (ctx, msg, token) => { const error = get_error(ctx, msg, token, add_error); return [error, { ...ctx, errors: [...ctx.errors, error] }]; }; exports.add_error = add_error;