mondo: support - ~ in plain type + simplify errors

This commit is contained in:
Felix Roos 2025-03-16 23:10:52 +01:00
parent 2dd445c102
commit 118b619b74
No known key found for this signature in database

View file

@ -19,7 +19,7 @@ export class MondoParser {
pipe: /^\./, pipe: /^\./,
stack: /^,/, stack: /^,/,
op: /^[*/]/, op: /^[*/]/,
plain: /^[a-zA-Z0-9-_^]+/, plain: /^[a-zA-Z0-9-~_^]+/,
}; };
// matches next token // matches next token
next_token(code, offset = 0) { next_token(code, offset = 0) {
@ -317,7 +317,7 @@ export class MondoRunner {
const name = first.value; const name = first.value;
this.assert( this.assert(
first?.type === 'plain', first?.type === 'plain',
`${this.errorhead(first)} expected first child to be function name, got ${first.type}${name ? ` "${name}"` : ''}.`, `${this.errorhead(first)} expected function name, got ${first.type}${name ? ` "${name}"` : ''}.`,
); );
// process args // process args
@ -339,13 +339,13 @@ export class MondoRunner {
const second = ast.children[1]; const second = ast.children[1];
const callee = second.value; const callee = second.value;
const innerFn = this.lib[callee]; const innerFn = this.lib[callee];
this.assert(innerFn, `${this.errorhead(second)} lambda error: unknown function name "${callee}"`); this.assert(innerFn, `${this.errorhead(second)} unknown function name "${callee}"`);
return (pat) => this.libcall(innerFn, [pat, ...args.slice(1)], callee); return (pat) => this.libcall(innerFn, [pat, ...args.slice(1)], callee);
} }
// look up function in lib // look up function in lib
const fn = this.lib[name]; const fn = this.lib[name];
this.assert(fn, `${this.errorhead(first)} function call: unknown function name "${name}"`); this.assert(fn, `${this.errorhead(first)} unknown function name "${name}"`);
return this.libcall(fn, args, name); return this.libcall(fn, args, name);
} }
} }