@thi.ng/parse
Version:
Purely functional parser combinators & AST generation for generic inputs
19 lines (18 loc) • 430 B
JavaScript
import { string } from "../prims/string.js";
import { discard } from "../xform/discard.js";
const alt = (parsers) => (ctx) => {
if (ctx.done) return false;
for (let i = 0, n = parsers.length; i < n; i++) {
if (parsers[i](ctx)) {
return true;
}
}
return false;
};
const altS = (strings) => alt(strings.map((x) => string(x)));
const altD = (parsers) => discard(alt(parsers));
export {
alt,
altD,
altS
};