@fink/prattler
Version:
A generic Pratt/top down operator precedence parser.
31 lines (30 loc) • 688 B
JavaScript
import { highlight_code_loc } from "@fink/snippet/highlight.js";
import { stack_trace } from "@fink/std-lib/stack-trace.js";
export 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;
};
export const add_error = (ctx, msg, token) => {
const error = get_error(ctx, msg, token, add_error);
return [error, { ...ctx,
errors: [...ctx.errors, error]
}];
};