import{a as t,p as e,f as i,m as s,i as r,b as a,s as n,c,e as o}from"./lodash-es-RhymR7yg.js";function h(t){return t.charCodeAt(0)}function u(t,e){Array.isArray(t)?t.forEach((function(t){e.push(t)})):e.push(t)}function p(t,e){if(!0===t[e])throw"duplicate flag "+e;t[e],t[e]=!0}function d(t){if(void 0===t)throw Error("Internal Error - Should never get here!");return!0}function l(t){return"Character"===t.type}const f=[];for(let Z=h("0");Z<=h("9");Z++)f.push(Z);const v=[h("_")].concat(f);for(let Z=h("a");Z<=h("z");Z++)v.push(Z);for(let Z=h("A");Z<=h("Z");Z++)v.push(Z);const m=[h(" "),h("\f"),h("\n"),h("\r"),h("\t"),h("\v"),h("\t"),h(" "),h(" "),h(" "),h(" "),h(" "),h(" "),h(" "),h(" "),h(" "),h(" "),h(" "),h(" "),h(" "),h("\u2028"),h("\u2029"),h(" "),h(" "),h(" "),h("\ufeff")],C=/[0-9a-fA-F]/,x=/[0-9]/,g=/[1-9]/;class A{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(t){this.idx=t.idx,this.input=t.input,this.groupIdx=t.groupIdx}pattern(t){this.idx=0,this.input=t,this.groupIdx=0,this.consumeChar("/");const e=this.disjunction();this.consumeChar("/");const i={type:"Flags",loc:{begin:this.idx,end:t.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":p(i,"global");break;case"i":p(i,"ignoreCase");break;case"m":p(i,"multiLine");break;case"u":p(i,"unicode");break;case"y":p(i,"sticky")}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:i,value:e,loc:this.loc(0)}}disjunction(){const t=[],e=this.idx;for(t.push(this.alternative());"|"===this.peekChar();)this.consumeChar("|"),t.push(this.alternative());return{type:"Disjunction",value:t,loc:this.loc(e)}}alternative(){const t=[],e=this.idx;for(;this.isTerm();)t.push(this.term());return{type:"Alternative",value:t,loc:this.loc(e)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const t=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(t)};case"$":return{type:"EndAnchor",loc:this.loc(t)}; // '\b' or '\B' case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(t)};case"B":return{type:"NonWordBoundary",loc:this.loc(t)}}throw Error("Invalid Assertion Escape"); // '(?=' or '(?!' case"(":let e;switch(this.consumeChar("?"),this.popChar()){case"=":e="Lookahead";break;case"!":e="NegativeLookahead"}d(e);const i=this.disjunction();return this.consumeChar(")"),{type:e,value:i,loc:this.loc(t)}}return function(){throw Error("Internal Error - Should never get here!")}()}quantifier(t=!1){let e;const i=this.idx;switch(this.popChar()){case"*":e={atLeast:0,atMost:1/0};break;case"+":e={atLeast:1,atMost:1/0};break;case"?":e={atLeast:0,atMost:1};break;case"{":const i=this.integerIncludingZero();switch(this.popChar()){case"}":e={atLeast:i,atMost:i};break;case",":let t;this.isDigit()?(t=this.integerIncludingZero(),e={atLeast:i,atMost:t}):e={atLeast:i,atMost:1/0},this.consumeChar("}")}if(!0===t&&void 0===e)return;d(e)}if(!0!==t||void 0!==e)return d(e)?("?"===this.peekChar(0)?(this.consumeChar("?"),e.greedy=!1):e.greedy=!0,e.type="Quantifier",e.loc=this.loc(i),e):void 0}atom(){let t;const e=this.idx;switch(this.peekChar()){case".":t=this.dotAll();break;case"\\":t=this.atomEscape();break;case"[":t=this.characterClass();break;case"(":t=this.group()}if(void 0===t&&this.isPatternCharacter()&&(t=this.patternCharacter()),d(t))return t.loc=this.loc(e),this.isQuantifier()&&(t.quantifier=this.quantifier()),t}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[h("\n"),h("\r"),h("\u2028"),h("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let t,e=!1;switch(this.popChar()){case"d":t=f;break;case"D":t=f,e=!0;break;case"s":t=m;break;case"S":t=m,e=!0;break;case"w":t=v;break;case"W":t=v,e=!0}if(d(t))return{type:"Set",value:t,complement:e}}controlEscapeAtom(){let t;switch(this.popChar()){case"f":t=h("\f");break;case"n":t=h("\n");break;case"r":t=h("\r");break;case"t":t=h("\t");break;case"v":t=h("\v")}if(d(t))return{type:"Character",value:t}}controlLetterEscapeAtom(){this.consumeChar("c");const t=this.popChar();if(!1===/[a-zA-Z]/.test(t))throw Error("Invalid ");return{type:"Character",value:t.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:h("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){return{type:"Character",value:h(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){ // istanbul ignore next case"\n": // istanbul ignore next case"\r": // istanbul ignore next case"\u2028": // istanbul ignore next case"\u2029": // istanbul ignore next case"\\": // istanbul ignore next case"]":throw Error("TBD");default:return{type:"Character",value:h(this.popChar())}}}characterClass(){const t=[];let e=!1;for(this.consumeChar("["),"^"===this.peekChar(0)&&(this.consumeChar("^"),e=!0);this.isClassAtom();){const e=this.classAtom();if(e.type,l(e)&&this.isRangeDash()){this.consumeChar("-");const i=this.classAtom();if(i.type,l(i)){if(i.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(t){return{begin:t,end:this.idx}}}class y{visitChildren(t){for(const e in t){const i=t[e];t.hasOwnProperty(e)&&(void 0!==i.type?this.visit(i):Array.isArray(i)&&i.forEach((t=>{this.visit(t)}),this))}}visit(t){switch(t.type){case"Pattern":this.visitPattern(t);break;case"Flags":this.visitFlags(t);break;case"Disjunction":this.visitDisjunction(t);break;case"Alternative":this.visitAlternative(t);break;case"StartAnchor":this.visitStartAnchor(t);break;case"EndAnchor":this.visitEndAnchor(t);break;case"WordBoundary":this.visitWordBoundary(t);break;case"NonWordBoundary":this.visitNonWordBoundary(t);break;case"Lookahead":this.visitLookahead(t);break;case"NegativeLookahead":this.visitNegativeLookahead(t);break;case"Character":this.visitCharacter(t);break;case"Set":this.visitSet(t);break;case"Group":this.visitGroup(t);break;case"GroupBackReference":this.visitGroupBackReference(t);break;case"Quantifier":this.visitQuantifier(t)}this.visitChildren(t)}visitPattern(t){}visitFlags(t){}visitDisjunction(t){}visitAlternative(t){} // Assertion visitStartAnchor(t){}visitEndAnchor(t){}visitWordBoundary(t){}visitNonWordBoundary(t){}visitLookahead(t){}visitNegativeLookahead(t){} // atoms visitCharacter(t){}visitSet(t){}visitGroup(t){}visitGroupBackReference(t){}visitQuantifier(t){}}function k(t){console&&console.error}function E(t){console&&console.warn}function b(t){const e=(new Date).getTime(),i=t();return{time:(new Date).getTime()-e,value:i}}function w(t){function e(){}e.prototype=t;const i=new e;function s(){return typeof i.bar}return s(),s(),t}function S(t){return r((e=t).LABEL)&&""!==e.LABEL?t.LABEL:t.name;var e}class T{get definition(){return this._definition}set definition(t){this._definition=t}constructor(t){this._definition=t}accept(t){t.visit(this),i(this.definition,(e=>{e.accept(t)}))}}class R extends T{constructor(i){super([]),this.idx=1,t(this,e(i,(t=>void 0!==t)))}set definition(t){}get definition(){return void 0!==this.referencedRule?this.referencedRule.definition:[]}accept(t){t.visit(this)}}class L extends T{constructor(i){super(i.definition),this.orgText="",t(this,e(i,(t=>void 0!==t)))}}class B extends T{constructor(i){super(i.definition),this.ignoreAmbiguities=!1,t(this,e(i,(t=>void 0!==t)))}}class I extends T{constructor(i){super(i.definition),this.idx=1,t(this,e(i,(t=>void 0!==t)))}}class N extends T{constructor(i){super(i.definition),this.idx=1,t(this,e(i,(t=>void 0!==t)))}}class D extends T{constructor(i){super(i.definition),this.idx=1,t(this,e(i,(t=>void 0!==t)))}}class P extends T{constructor(i){super(i.definition),this.idx=1,t(this,e(i,(t=>void 0!==t)))}}class W extends T{constructor(i){super(i.definition),this.idx=1,t(this,e(i,(t=>void 0!==t)))}}class M extends T{get definition(){return this._definition}set definition(t){this._definition=t}constructor(i){super(i.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,t(this,e(i,(t=>void 0!==t)))}}class _{constructor(i){this.idx=1,t(this,e(i,(t=>void 0!==t)))}accept(t){t.visit(this)}}function O(t){return s(t,j)}function j(t){function e(t){return s(t,j)}if(t instanceof R){const e={type:"NonTerminal",name:t.nonTerminalName,idx:t.idx};return r(t.label)&&(e.label=t.label),e}if(t instanceof B)return{type:"Alternative",definition:e(t.definition)};if(t instanceof I)return{type:"Option",idx:t.idx,definition:e(t.definition)};if(t instanceof N)return{type:"RepetitionMandatory",idx:t.idx,definition:e(t.definition)};if(t instanceof D)return{type:"RepetitionMandatoryWithSeparator",idx:t.idx,separator:j(new _({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof W)return{type:"RepetitionWithSeparator",idx:t.idx,separator:j(new _({terminalType:t.separator})),definition:e(t.definition)};if(t instanceof P)return{type:"Repetition",idx:t.idx,definition:e(t.definition)};if(t instanceof M)return{type:"Alternation",idx:t.idx,definition:e(t.definition)};if(t instanceof _){const e={type:"Terminal",name:t.terminalType.name,label:S(t.terminalType),idx:t.idx};r(t.label)&&(e.terminalLabel=t.label);const i=t.terminalType.PATTERN;return t.terminalType.PATTERN&&(e.pattern=a(i)?i.source:i),e}if(t instanceof L)return{type:"Rule",name:t.name,orgText:t.orgText,definition:e(t.definition)};throw Error("non exhaustive match")}class q{visit(t){const e=t;switch(e.constructor){case R:return this.visitNonTerminal(e);case B:return this.visitAlternative(e);case I:return this.visitOption(e);case N:return this.visitRepetitionMandatory(e);case D:return this.visitRepetitionMandatoryWithSeparator(e);case W:return this.visitRepetitionWithSeparator(e);case P:return this.visitRepetition(e);case M:return this.visitAlternation(e);case _:return this.visitTerminal(e);case L:return this.visitRule(e); /* c8 ignore next 2 */default:throw Error("non exhaustive match")}} /* c8 ignore next */visitNonTerminal(t){} /* c8 ignore next */visitAlternative(t){} /* c8 ignore next */visitOption(t){} /* c8 ignore next */visitRepetition(t){} /* c8 ignore next */visitRepetitionMandatory(t){} /* c8 ignore next 3 */visitRepetitionMandatoryWithSeparator(t){} /* c8 ignore next */visitRepetitionWithSeparator(t){} /* c8 ignore next */visitAlternation(t){} /* c8 ignore next */visitTerminal(t){} /* c8 ignore next */visitRule(t){}}function G(t){return t instanceof B||t instanceof I||t instanceof P||t instanceof N||t instanceof D||t instanceof W||t instanceof _||t instanceof L}function U(t,e=[]){return!!(t instanceof I||t instanceof P||t instanceof W)||(t instanceof M?n(t.definition,(t=>U(t,e))):!(t instanceof R&&c(e,t))&&(t instanceof T&&(t instanceof R&&e.push(t),o(t.definition,(t=>U(t,e))))))}function F(t){return t instanceof M}function Q(t){if(t instanceof R)return"SUBRULE";if(t instanceof I)return"OPTION";if(t instanceof M)return"OR";if(t instanceof N)return"AT_LEAST_ONE";if(t instanceof D)return"AT_LEAST_ONE_SEP";if(t instanceof W)return"MANY_SEP";if(t instanceof P)return"MANY";if(t instanceof _)return"CONSUME";throw Error("non exhaustive match")}export{B as A,y as B,q as G,R as N,I as O,E as P,N as R,_ as T,D as a,W as b,P as c,M as d,F as e,U as f,A as g,k as h,G as i,w as j,L as k,Q as l,O as s,b as t};