UNPKG

@thi.ng/parse

Version:

Purely functional parser combinators & AST generation for generic inputs

25 lines (24 loc) 629 B
import { xform } from "../combinators/xform.js"; import { defContext } from "../context.js"; import { xfJoin } from "./join.js"; const xfNest = (parser) => (scope, ctx) => { if (!scope) return; const src = scope.result || xfJoin(scope.copy()).result; const inner = defContext(src, ctx.opts); const state = scope.state; if (state) { const istate = inner.scope.state; istate.l = state.l; istate.c = state.c; } if (parser(inner)) { scope.result = null; scope.children = inner.children; } return scope; }; const nest = (outer, inner) => xform(outer, xfNest(inner)); export { nest, xfNest };