UNPKG

parsinator

Version:

A parser combinator library for javascript and typescript

10 lines (9 loc) 6.5 kB
"use strict";var Parsinator=(()=>{var g=Object.defineProperty,Z=Object.defineProperties,ee=Object.getOwnPropertyDescriptor,re=Object.getOwnPropertyDescriptors,te=Object.getOwnPropertyNames,R=Object.getOwnPropertySymbols;var A=Object.prototype.hasOwnProperty,ne=Object.prototype.propertyIsEnumerable;var D=(e,r,t)=>r in e?g(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,x=(e,r)=>{for(var t in r||(r={}))A.call(r,t)&&D(e,t,r[t]);if(R)for(var t of R(r))ne.call(r,t)&&D(e,t,r[t]);return e},T=(e,r)=>Z(e,re(r));var ae=(e,r)=>{for(var t in r)g(e,t,{get:r[t],enumerable:!0})},se=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of te(r))!A.call(e,a)&&a!==t&&g(e,a,{get:()=>r[a],enumerable:!(n=ee(r,a))||n.enumerable});return e};var ie=e=>se(g({},"__esModule",{value:!0}),e);var ue={};ae(ue,{ParseError:()=>f,VERSION:()=>oe,between:()=>J,buildExpressionParser:()=>X,choice:()=>S,count:()=>_,debugTrace:()=>L,end:()=>N,fail:()=>F,fromGenerator:()=>i,many:()=>E,many1:()=>M,map:()=>K,maybe:()=>P,peek:()=>H,regex:()=>U,regexMatch:()=>k,run:()=>j,runToEnd:()=>q,sepBy:()=>C,sepBy1:()=>z,sequence:()=>W,str:()=>I,surround:()=>Q,until:()=>B,wrapFail:()=>G});var f=class extends Error{constructor(t,n,a,s){super(`Parse failure at ${n}:${a}: ${t} ${V(s)}`);this.line=n,this.col=a,this.msg=t,this.state=s,this.offset=s.offset,this.input=s.input}};function V(e){var r=Math.max(0,e.offset-40),t=Math.min(e.input.length,e.offset+40),n=(r===0?"":"...")+e.input.replace(/[\t\r\n\v\f]/g,"\xB7").slice(r,t)+(t===e.input.length?"":"..."),a=(r===0?0:3)+e.input.slice(r,e.offset).length,s=" ".repeat(a)+"^";return`-> \xAB${n}\xBB ${s} `}function c(e,r){for(var t=0,n=0,a=0;a<r.offset;++a)r.input[a]===` `&&(t++,n=a+1);var s=1+t,o=1+r.offset-n;return new f(e,s,o,r)}function y(e,r){return Object.assign(()=>e(),{[Symbol.iterator]:e,parserName:r})}function U(e){return y(function*(){let r=yield 0;var t=r.input.slice(r.offset),n=new RegExp(e),a=n.exec(t);if(a===null||a.index!==0)throw c(`regex /${e.source}/${e.flags} doesn't match`,r);return yield a[0].length,a[0]},`regex:${e.source}`)}function k(e){return y(function*(){let r=yield 0;var t=r.input.slice(r.offset),n=new RegExp(e),a=n.exec(t);if(a===null||a.index!==0)throw c(`regex /${e.source}/${e.flags} doesn't match`,r);return yield a[0].length,Array.from(a)},`regexMatch:${e.source}`)}function I(e){return y(function*(){let r=yield 0;if(r.input.substr(r.offset,e.length)===e)return yield e.length,e;throw c(`"${e}" not found`,r)},`str:${e}`)}function i(e,r){return y(function*(){let t=yield 0;for(var n=e();;){var a=n.next(t);if(a.done)return yield t,a.value;typeof a.value=="number"?t=T(x({},t),{offset:t.offset+a.value}):t=a.value,yield t}},r||e.name)}function F(e){return y(function*(){let r=yield 0;throw c(e,r)},`fail:${e}`)}function G(e,r){return y(function*(){try{return yield*e}catch(t){if(t instanceof f){let n=r(t.msg);throw c(n,{input:t.input,offset:t.offset})}throw t}},"wrapFail")}function L(e){return y(function*(){let r=yield 0;e(V(r))},"debugTrace")}var N=y(function*(){let e=yield 0;if(e.offset>=e.input.length)return null;throw c("Not at end of string",e)},"end");function w(e,r){let t=e(),n=t.next(r);for(;!n.done;)typeof n.value=="number"?r=T(x({},r),{offset:r.offset+n.value}):r=n.value,n=t.next(r);return{value:n.value,state:r}}function j(e,r){return w(e,{input:r,offset:0}).value}function q(e,r){let n=w(e,{input:r,offset:0}),a=w(N,n.state);return n.value}function P(e){return i(function*(){let t=yield 0;try{return yield*e}catch(n){return yield t,null}},`maybe(${e.parserName})`)}function E(e){return i(function*(){for(var t=[];;){let a=yield 0;try{var n=yield*e}catch(s){return yield a,t}t.push(n)}},`many(${e.parserName})`)}function M(e){return i(function*(){var t=yield*e,n=yield*E(e);return[t].concat(n)},`many1(${e.parserName})`)}function S(e){return i(function*(){var t=[];let n=yield 0;for(var a=0;a<e.length;++a)try{return yield*e[a]}catch(o){if(o instanceof f)t.push(o);else throw o;yield n}let s=yield 0;throw yield n,t.sort((o,h)=>h.offset-o.offset),c(`Multiple choices; potential matches: - `+t.map(o=>o.message.split(` `).join(` `)).join(` - `),s)},`choice(${e.map(r=>r.parserName).join(",")})`)}function W(e){return i(function*(){for(var t=[],n=0;n<e.length;++n){let a=yield 0;t.push(yield*e[n])}return t},`sequence(${e.map(r=>r.name).join(",")})`)}function _(e,r){return i(function*(){for(var n=[],a=0;a<e;++a)n.push(yield*r);return n},`count(${e},${r.parserName})`)}function z(e,r){var t=P(e);return i(function*(){for(var a=[];;){a.push(yield*r);var s=yield*t;if(s===null)return a}},`sepBy1(${e.parserName},${r.parserName})`)}function C(e,r){var t=P(e),n=P(r);return i(function*(){var s=[],o=yield*n;if(o===null)return s;for(s.push(o);;){var h=yield*t;if(h===null)return s;s.push(yield*r)}},`sepBy(${e.parserName},${r.parserName})`)}function H(e){return i(function*(){let t=yield 0,n;try{n=yield*e}catch(a){throw yield t,a}return yield t,n},`peek(${e.parserName})`)}function B(e){return i(function*(){let t=yield 0;for(var n=t.offset;n<=t.input.length;++n){let a=yield T(x({},t),{offset:n});try{return yield*e,yield a,t.input.slice(t.offset,n)}catch(s){}}throw c("Didn't find terminator",t)},`until(${e.parserName})`)}function J(e,r){return i(function*(){yield*e;var n=yield*B(r);return yield*r,n},`between(${e.parserName},${r.parserName})`)}function K(e,r){return i(function*(){var n=yield*e;return r(n)},`map(${e.parserName})`)}function Q(e,r,t){return i(function*(){yield*e;var a=yield*r;return yield*t,a},`surround(${e.parserName},${r.parserName},${t.parserName})`)}function X(e,r){var t=null,n=[],a=[],s=[];for(let d=0;d<e.length;++d){let v=e.length-d,l=e[d];switch(l.fixity){case"infix":s.push({precedence:v,associativity:l.associativity,parser:l.parser});break;case"postfix":a.push(l.parser);break;case"prefix":n.push(l.parser);break}}var o=i(function*(){var v=[],l=[],u=null;do u=yield*P(S(n)),u!==null&&v.push(u);while(u!==null);t===null&&(t=r());var p=yield*t;do u=yield*P(S(a)),u!==null&&l.push(u);while(u!==null);for(let m of v)p=m(p);for(let m of l)p=m(p);return p},"expressionParser:term");function h(d){return i(function*(){for(var l=yield*o;;){for(var u=null,p,m,O=0;O<s.length&&u===null;++O){var b=s[O];b.precedence>=d&&(u=yield*P(b.parser),p=b.associativity,m=b.precedence)}if(u===null)return l;var $;p==="left"?$=m+1:$=m;var Y=yield*h($);l=u(l,Y)}},"expressionParser:precedence")}return h(0)}var oe="2.1.2";return ie(ue);})(); //# sourceMappingURL=parsinator.min.js.map