acspec-parser 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/main.cjs +1 -1
- package/dist/cjs/main.cjs.map +2 -2
- package/dist/esm/main.mjs +1 -1
- package/dist/esm/main.mjs.map +2 -2
- package/dist/language/main.d.ts +1 -1
- package/package.json +1 -1
package/dist/cjs/main.cjs
CHANGED
|
@@ -158,7 +158,7 @@ ${r}`),this.inline?`{${i}}`:i}};function jF(t,e,r){var n,i;if(t==="linkplain"||t
|
|
|
158
158
|
`:`
|
|
159
159
|
|
|
160
160
|
`}var mu=class{constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){let r=this.commentProvider.getComment(e);if(r&&pu(r))return hu(r).toMarkdown({renderLink:(i,o)=>this.documentationLinkRenderer(e,i,o),renderTag:i=>this.documentationTagRenderer(e,i)})}documentationLinkRenderer(e,r,n){var i;let o=(i=this.findNameInPrecomputedScopes(e,r))!==null&&i!==void 0?i:this.findNameInGlobalScope(e,r);if(o&&o.nameSegment){let s=o.nameSegment.range.start.line+1,a=o.nameSegment.range.start.character+1,c=o.documentUri.with({fragment:`L${s},${a}`});return`[${n}](${c.toString()})`}else return}documentationTagRenderer(e,r){}findNameInPrecomputedScopes(e,r){let i=Rt(e).precomputedScopes;if(!i)return;let o=e;do{let a=i.get(o).find(c=>c.name===r);if(a)return a;o=o.$container}while(o)}findNameInGlobalScope(e,r){return this.indexManager.allElements().find(i=>i.name===r)}};var gu=class{constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var r;return eu(e)?e.$comment:(r=Ba(e.$cstNode,this.grammarConfig().multilineCommentRules))===null||r===void 0?void 0:r.text}};var yu=class{constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,r){return Promise.resolve(this.syncParser.parse(e))}},Gm=class{constructor(e){this.threadCount=8,this.terminationDelay=200,this.workerPool=[],this.queue=[],this.hydrator=e.serializer.Hydrator}initializeWorkers(){for(;this.workerPool.length<this.threadCount;){let e=this.createWorker();e.onReady(()=>{if(this.queue.length>0){let r=this.queue.shift();r&&(e.lock(),r.resolve(e))}}),this.workerPool.push(e)}}async parse(e,r){let n=await this.acquireParserWorker(r),i=new sr,o,s=r.onCancellationRequested(()=>{o=setTimeout(()=>{this.terminateWorker(n)},this.terminationDelay)});return n.parse(e).then(a=>{let c=this.hydrator.hydrate(a);i.resolve(c)}).catch(a=>{i.reject(a)}).finally(()=>{s.dispose(),clearTimeout(o)}),i.promise}terminateWorker(e){e.terminate();let r=this.workerPool.indexOf(e);r>=0&&this.workerPool.splice(r,1)}async acquireParserWorker(e){this.initializeWorkers();for(let n of this.workerPool)if(n.ready)return n.lock(),n;let r=new sr;return e.onCancellationRequested(()=>{let n=this.queue.indexOf(r);n>=0&&this.queue.splice(n,1),r.reject(Rn)}),this.queue.push(r),r.promise}},zm=class{get ready(){return this._ready}get onReady(){return this.onReadyEmitter.event}constructor(e,r,n,i){this.onReadyEmitter=new Ve.Emitter,this.deferred=new sr,this._ready=!0,this._parsing=!1,this.sendMessage=e,this._terminate=i,r(o=>{let s=o;this.deferred.resolve(s),this.unlock()}),n(o=>{this.deferred.reject(o),this.unlock()})}terminate(){this.deferred.reject(Rn),this._terminate()}lock(){this._ready=!1}unlock(){this._parsing=!1,this._ready=!0,this.onReadyEmitter.fire()}parse(e){if(this._parsing)throw new Error("Parser worker is busy");return this._parsing=!0,this.deferred=new sr,this.sendMessage(e),this.deferred.promise}};var vu=class{constructor(){this.previousTokenSource=new J.CancellationTokenSource,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();let r=Fd();return this.previousTokenSource=r,this.enqueue(this.writeQueue,e,r.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,r,n=J.CancellationToken.None){let i=new sr,o={action:r,deferred:i,cancellationToken:n};return e.push(o),this.performNextOperation(),i.promise}async performNextOperation(){if(!this.done)return;let e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else if(this.readQueue.length>0)e.push(...this.readQueue.splice(0,this.readQueue.length));else return;this.done=!1,await Promise.all(e.map(async({action:r,deferred:n,cancellationToken:i})=>{try{let o=await Promise.resolve().then(()=>r(i));n.resolve(o)}catch(o){bn(o)?n.resolve(void 0):n.reject(o)}})),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}};var xu=class{constructor(e){this.grammarElementIdMap=new so,this.tokenTypeIdMap=new so,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map(r=>Object.assign(Object.assign({},r),{message:r.message})),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){let r=new Map,n=new Map;for(let i of Ir(e))r.set(i,{});if(e.$cstNode)for(let i of Li(e.$cstNode))n.set(i,{});return{astNodes:r,cstNodes:n}}dehydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode!==void 0&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,r));for(let[i,o]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(o)){let s=[];n[i]=s;for(let a of o)Ge(a)?s.push(this.dehydrateAstNode(a,r)):Ut(a)?s.push(this.dehydrateReference(a,r)):s.push(a)}else Ge(o)?n[i]=this.dehydrateAstNode(o,r):Ut(o)?n[i]=this.dehydrateReference(o,r):o!==void 0&&(n[i]=o);return n}dehydrateReference(e,r){let n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=r.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,r){let n=r.cstNodes.get(e);return Ua(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=r.astNodes.get(e.astNode),zr(e)?n.content=e.content.map(i=>this.dehydrateCstNode(i,r)):Xn(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){let r=e.value,n=this.createHydrationContext(r);return"$cstNode"in r&&this.hydrateCstNode(r.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(r,n)}}createHydrationContext(e){let r=new Map,n=new Map;for(let o of Ir(e))r.set(o,{});let i;if(e.$cstNode)for(let o of Li(e.$cstNode)){let s;"fullText"in o?(s=new aa(o.fullText),i=s):"content"in o?s=new ro:"tokenType"in o&&(s=this.hydrateCstLeafNode(o)),s&&(n.set(o,s),s.root=i)}return{astNodes:r,cstNodes:n}}hydrateAstNode(e,r){let n=r.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=r.cstNodes.get(e.$cstNode));for(let[i,o]of Object.entries(e))if(!i.startsWith("$"))if(Array.isArray(o)){let s=[];n[i]=s;for(let a of o)Ge(a)?s.push(this.setParent(this.hydrateAstNode(a,r),n)):Ut(a)?s.push(this.hydrateReference(a,n,i,r)):s.push(a)}else Ge(o)?n[i]=this.setParent(this.hydrateAstNode(o,r),n):Ut(o)?n[i]=this.hydrateReference(o,n,i,r):o!==void 0&&(n[i]=o);return n}setParent(e,r){return e.$container=r,e}hydrateReference(e,r,n,i){return this.linker.buildReference(r,n,i.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,r,n=0){let i=r.cstNodes.get(e);if(typeof e.grammarSource=="number"&&(i.grammarSource=this.getGrammarElement(e.grammarSource)),i.astNode=r.astNodes.get(e.astNode),zr(i))for(let o of e.content){let s=this.hydrateCstNode(o,r,n++);i.content.push(s)}return i}hydrateCstLeafNode(e){let r=this.getTokenType(e.tokenType),n=e.offset,i=e.length,o=e.startLine,s=e.startColumn,a=e.endLine,c=e.endColumn,u=e.hidden;return new to(n,i,{start:{line:o,character:s},end:{line:a,character:c}},r,u)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){return this.grammarElementIdMap.size===0&&this.createGrammarElementIdMap(),this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(let r of Ir(this.grammar))qi(r)&&this.grammarElementIdMap.set(r,e++)}};function Tu(t){return{documentation:{CommentProvider:e=>new gu(e),DocumentationProvider:e=>new mu(e)},parser:{AsyncParser:e=>new yu(e),GrammarConfig:e=>Sp(e),LangiumParser:e=>Nm(e),CompletionParser:e=>wm(e),ValueConverter:()=>new Wc,TokenBuilder:()=>new io,Lexer:e=>new lo(e),ParserErrorMessageProvider:()=>new ca,LexerErrorMessageProvider:()=>new lu},workspace:{AstNodeLocator:()=>new ou,AstNodeDescriptionProvider:e=>new nu(e),ReferenceDescriptionProvider:e=>new iu(e)},references:{Linker:e=>new zc(e),NameProvider:()=>new Vc,ScopeProvider:e=>new Qc(e),ScopeComputation:e=>new Xc(e),References:e=>new Kc(e)},serializer:{Hydrator:e=>new xu(e),JsonSerializer:e=>new Zc(e)},validation:{DocumentValidator:e=>new uo(e),ValidationRegistry:e=>new ru(e)},shared:()=>t.shared}}function Ru(t){return{ServiceRegistry:e=>new tu(e),workspace:{LangiumDocuments:e=>new Gc(e),LangiumDocumentFactory:e=>new Hc(e),DocumentBuilder:e=>new au(e),IndexManager:e=>new cu(e),WorkspaceManager:e=>new uu(e),FileSystemProvider:e=>t.fileSystemProvider(e),WorkspaceLock:()=>new vu,ConfigurationProvider:e=>new su(e)}}}var ya;(function(t){t.merge=(e,r)=>zd(zd({},e),r)})(ya||(ya={}));function fo(t,e,r,n,i,o,s,a,c){let u=[t,e,r,n,i,o,s,a,c].reduce(zd,{});return uC(u)}var cC=Symbol("isProxy");function bu(t){if(t&&t[cC])for(let e of Object.values(t))bu(e);return t}function uC(t,e){let r=new Proxy({},{deleteProperty:()=>!1,set:()=>{throw new Error("Cannot set property on injected service container")},get:(n,i)=>i===cC?!0:aC(n,i,t,e||r),getOwnPropertyDescriptor:(n,i)=>(aC(n,i,t,e||r),Object.getOwnPropertyDescriptor(n,i)),has:(n,i)=>i in t,ownKeys:()=>[...Object.getOwnPropertyNames(t)]});return r}var sC=Symbol();function aC(t,e,r,n){if(e in t){if(t[e]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:t[e]});if(t[e]===sC)throw new Error('Cycle detected. Please make "'+String(e)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return t[e]}else if(e in r){let i=r[e];t[e]=sC;try{t[e]=typeof i=="function"?i(n):uC(i,n)}catch(o){throw t[e]=o instanceof Error?o:void 0,o}return t[e]}else return}function zd(t,e){if(e){for(let[r,n]of Object.entries(e))if(n!==void 0){let i=t[r];i!==null&&n!==null&&typeof i=="object"&&typeof n=="object"?t[r]=zd(i,n):t[r]=n}}return t}var Vm={indentTokenName:"INDENT",dedentTokenName:"DEDENT",whitespaceTokenName:"WS",ignoreIndentationDelimiters:[]},ho;(function(t){t.REGULAR="indentation-sensitive",t.IGNORE_INDENTATION="ignore-indentation"})(ho||(ho={}));var Vd=class extends io{constructor(e=Vm){super(),this.indentationStack=[0],this.whitespaceRegExp=/[ \t]+/y,this.options=Object.assign(Object.assign({},Vm),e),this.indentTokenType=fi({name:this.options.indentTokenName,pattern:this.indentMatcher.bind(this),line_breaks:!1}),this.dedentTokenType=fi({name:this.options.dedentTokenName,pattern:this.dedentMatcher.bind(this),line_breaks:!1})}buildTokens(e,r){let n=super.buildTokens(e,r);if(!Bd(n))throw new Error("Invalid tokens built by default builder");let{indentTokenName:i,dedentTokenName:o,whitespaceTokenName:s,ignoreIndentationDelimiters:a}=this.options,c,u,l,h=[];for(let p of n){for(let[y,_]of a)p.name===y?p.PUSH_MODE=ho.IGNORE_INDENTATION:p.name===_&&(p.POP_MODE=!0);p.name===o?c=p:p.name===i?u=p:p.name===s?l=p:h.push(p)}if(!c||!u||!l)throw new Error("Some indentation/whitespace tokens not found!");return a.length>0?{modes:{[ho.REGULAR]:[c,u,...h,l],[ho.IGNORE_INDENTATION]:[...h,l]},defaultMode:ho.REGULAR}:[c,u,l,...h]}flushLexingReport(e){let r=super.flushLexingReport(e);return Object.assign(Object.assign({},r),{remainingDedents:this.flushRemainingDedents(e)})}isStartOfLine(e,r){return r===0||`\r
|
|
161
|
-
`.includes(e[r-1])}matchWhitespace(e,r,n,i){var o;this.whitespaceRegExp.lastIndex=r;let s=this.whitespaceRegExp.exec(e);return{currIndentLevel:(o=s?.[0].length)!==null&&o!==void 0?o:0,prevIndentLevel:this.indentationStack.at(-1),match:s}}createIndentationTokenInstance(e,r,n,i){let o=this.getLineNumber(r,i);return qn(e,n,i,i+n.length,o,o,1,n.length)}getLineNumber(e,r){return e.substring(0,r).split(/\r\n|\r|\n/).length}indentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:o,prevIndentLevel:s,match:a}=this.matchWhitespace(e,r,n,i);return o<=s?null:(this.indentationStack.push(o),a)}dedentMatcher(e,r,n,i){var o,s,a,c;if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:u,prevIndentLevel:l,match:h}=this.matchWhitespace(e,r,n,i);if(u>=l)return null;let p=this.indentationStack.lastIndexOf(u);if(p===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${u} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,offset:r,length:(s=(o=h?.[0])===null||o===void 0?void 0:o.length)!==null&&s!==void 0?s:0,line:this.getLineNumber(e,r),column:1}),null;let y=this.indentationStack.length-p-1,_=(c=(a=e.substring(0,r).match(/[\r\n]+$/))===null||a===void 0?void 0:a[0].length)!==null&&c!==void 0?c:1;for(let E=0;E<y;E++){let D=this.createIndentationTokenInstance(this.dedentTokenType,e,"",r-(_-1));n.push(D),this.indentationStack.pop()}return null}buildTerminalToken(e){let r=super.buildTerminalToken(e),{indentTokenName:n,dedentTokenName:i,whitespaceTokenName:o}=this.options;return r.name===n?this.indentTokenType:r.name===i?this.dedentTokenType:r.name===o?fi({name:o,pattern:this.whitespaceRegExp,group:Ze.SKIPPED}):r}flushRemainingDedents(e){let r=[];for(;this.indentationStack.length>1;)r.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],r}},Km=class extends lo{constructor(e){if(super(e),e.parser.TokenBuilder instanceof Vd)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,r=Wd){let n=super.tokenize(e),i=n.report;r?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:o,dedentTokenType:s}=this.indentationTokenBuilder,a=o.tokenTypeIdx,c=s.tokenTypeIdx,u=[],l=n.tokens.length-1;for(let h=0;h<l;h++){let p=n.tokens[h],y=n.tokens[h+1];if(p.tokenTypeIdx===a&&y.tokenTypeIdx===c){h++;continue}u.push(p)}return l>=0&&u.push(n.tokens[l]),n.tokens=u,n}};var Re={};Kn(Re,{AstUtils:()=>al,BiMap:()=>so,Cancellation:()=>J,ContextCache:()=>ao,CstUtils:()=>tl,DONE_RESULT:()=>zt,Deferred:()=>sr,Disposable:()=>xi,DisposableCache:()=>pa,DocumentCache:()=>jd,EMPTY_STREAM:()=>Wa,ErrorWithLocation:()=>Fi,GrammarUtils:()=>fl,MultiMap:()=>Yr,OperationCancelled:()=>Rn,Reduction:()=>ko,RegExpUtils:()=>ll,SimpleCache:()=>Jc,StreamImpl:()=>Rr,TreeStreamImpl:()=>rn,URI:()=>vt,UriUtils:()=>ge,WorkspaceCache:()=>ma,assertUnreachable:()=>on,delayNextTick:()=>Fm,interruptAndCheck:()=>ot,isOperationCancelled:()=>bn,loadGrammarFromJson:()=>Xd,setInterruptionPeriod:()=>z_,startCancelableOperation:()=>Fd,stream:()=>ce});ve(Re,Ve);var Kd=class{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},_u={fileSystemProvider:()=>new Kd};var WF={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},BF={AstReflection:()=>new fs};function HF(){let t=fo(Ru(_u),BF),e=fo(Tu({shared:t}),WF);return t.ServiceRegistry.register(e),e}function Xd(t){var e;let r=HF(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,vt.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}ve(dt,Re);var Fa=Nr(kn(),1);function Uy(t,e){let r={stacks:t,tokens:e};return Jq(r),r.stacks.flat().forEach(i=>{i.property=void 0}),wA(r.stacks).map(i=>i[i.length-1])}function Wy(t){let{next:e,cardinalities:r,visited:n,plus:i}=t,o=[],s=e.feature;if(n.has(s))return[];Pr(s)||n.add(s);let a,c=s;for(;c.$container;)if(Pr(c.$container)){a=c.$container;break}else if(qi(c.$container))c=c.$container;else break;if(bp(c.cardinality)){let u=Ma({next:{feature:c,type:e.type},cardinalities:r,visited:n,plus:i});for(let l of u)i.add(l.feature);o.push(...u)}if(a){let u=a.elements.indexOf(c);u!==void 0&&u<a.elements.length-1&&o.push(...AA({feature:a,type:e.type},u+1,r,n,i)),o.every(l=>Gi(l.feature.cardinality,l.feature)||Gi(r.get(l.feature))||i.has(l.feature))&&o.push(...Wy({next:{feature:a,type:e.type},cardinalities:r,visited:n,plus:i}))}return o}function lh(t){return Ge(t)&&(t={feature:t}),Ma({next:t,cardinalities:new Map,visited:new Set,plus:new Set})}function Ma(t){var e,r,n;let{next:i,cardinalities:o,visited:s,plus:a}=t;if(i===void 0)return[];let{feature:c,type:u}=i;if(Pr(c))return s.has(c)?[]:(s.add(c),AA(i,0,o,s,a).map(l=>uh(l,c.cardinality,o)));if(hs(c)||ps(c))return c.elements.flatMap(l=>Ma({next:{feature:l,type:u,property:i.property},cardinalities:o,visited:s,plus:a})).map(l=>uh(l,c.cardinality,o));if(Vt(c)){let l={feature:c.terminal,type:u,property:(e=i.property)!==null&&e!==void 0?e:c.feature};return Ma({next:l,cardinalities:o,visited:s,plus:a}).map(h=>uh(h,c.cardinality,o))}else{if(Vr(c))return Wy({next:{feature:c,type:zi(c),property:(r=i.property)!==null&&r!==void 0?r:c.feature},cardinalities:o,visited:s,plus:a});if(ur(c)&&Ye(c.rule.ref)){let l=c.rule.ref,h={feature:l.definition,type:l.fragment||l.dataType?void 0:(n=an(l))!==null&&n!==void 0?n:l.name,property:i.property};return Ma({next:h,cardinalities:o,visited:s,plus:a}).map(p=>uh(p,c.cardinality,o))}else return[i]}}function uh(t,e,r){return r.set(t.feature,e),t}function AA(t,e,r,n,i){var o;let s=[],a;for(;e<t.feature.elements.length&&(a={feature:t.feature.elements[e++],type:t.type},s.push(...Ma({next:a,cardinalities:r,visited:n,plus:i})),!!Gi((o=a.feature.cardinality)!==null&&o!==void 0?o:r.get(a.feature),a.feature)););return s}function Jq(t){for(let e of t.tokens){let r=wA(t.stacks,e);t.stacks=r}}function wA(t,e){let r=[];for(let n of t)r.push(...Qq(n,e));return r}function Qq(t,e){let r=new Map,n=new Set(t.map(o=>o.feature).filter(Zq)),i=[];for(;t.length>0;){let o=t.pop(),s=Wy({next:o,cardinalities:r,plus:n,visited:new Set}).filter(a=>e?By(a.feature,e):!0);for(let a of s)i.push([...t,a]);if(!s.every(a=>Gi(a.feature.cardinality,a.feature)||Gi(r.get(a.feature))))break}return i}function Zq(t){if(t.cardinality==="+")return!0;let e=_r(t,Vt);return!!(e&&e.cardinality==="+")}function By(t,e){if(Et(t))return t.value===e.image;if(ur(t))return ej(t.rule.ref,e);if(br(t)){let r=ac(t);if(r)return By(r,e)}return!1}function ej(t,e){return Ye(t)?lh(t.definition).some(n=>By(n.feature,e)):er(t)?Jn(t).test(e.image):!1}function NA(t){let e=Array.from(new Set(t.flatMap(n=>{var i;return(i=n?.triggerCharacters)!==null&&i!==void 0?i:[]}))),r=Array.from(new Set(t.flatMap(n=>{var i;return(i=n?.allCommitCharacters)!==null&&i!==void 0?i:[]})));return{triggerCharacters:e.length>0?e:void 0,allCommitCharacters:r.length>0?r:void 0}}var dh=class{constructor(e){this.scopeProvider=e.references.ScopeProvider,this.grammar=e.Grammar,this.completionParser=e.parser.CompletionParser,this.nameProvider=e.references.NameProvider,this.lexer=e.parser.Lexer,this.nodeKindProvider=e.shared.lsp.NodeKindProvider,this.fuzzyMatcher=e.shared.lsp.FuzzyMatcher,this.grammarConfig=e.parser.GrammarConfig,this.astReflection=e.shared.AstReflection,this.documentationProvider=e.documentation.DocumentationProvider}async getCompletion(e,r,n){let i=[],o=this.buildContexts(e,r.position),s=(u,l)=>{let h=this.fillCompletionItem(u,l);h&&i.push(h)},a=u=>Et(u.feature)?u.feature.value:u.feature,c=[];for(let u of o)if(await Promise.all(ce(u.features).distinct(a).exclude(c).map(l=>this.completionFor(u,l,s))),c.push(...u.features),!this.continueCompletion(i))break;return Fa.CompletionList.create(this.deduplicateItems(i),!0)}deduplicateItems(e){return ce(e).distinct(r=>`${r.kind}_${r.label}_${r.detail}`).toArray()}findFeaturesAt(e,r){let n=e.getText({start:Fa.Position.create(0,0),end:e.positionAt(r)}),i=this.completionParser.parse(n),o=i.tokens;if(i.tokenIndex===0){let c=oc(this.grammar),u=lh({feature:c.definition,type:an(c)});return o.length>0?(o.shift(),Uy(u.map(l=>[l]),o)):u}let s=[...o].splice(i.tokenIndex);return Uy([i.elementStack.map(c=>({feature:c}))],s)}*buildContexts(e,r){var n,i;let o=e.parseResult.value.$cstNode;if(!o)return;let s=e.textDocument,a=s.getText(),c=s.offsetAt(r),u={document:e,textDocument:s,offset:c,position:r},l=this.findDataTypeRuleStart(o,c);if(l){let[x,g]=l,A=(n=Ha(o,x))===null||n===void 0?void 0:n.astNode;yield Object.assign(Object.assign({},u),{node:A,tokenOffset:x,tokenEndOffset:g,features:this.findFeaturesAt(s,x)})}let{nextTokenStart:h,nextTokenEnd:p,previousTokenStart:y,previousTokenEnd:_}=this.backtrackToAnyToken(a,c),E=h;c<=h&&y!==void 0&&(E=y);let D=(i=Ha(o,E))===null||i===void 0?void 0:i.astNode,w=!0;if(y!==void 0&&_!==void 0&&_===c&&(yield Object.assign(Object.assign({},u),{node:D,tokenOffset:y,tokenEndOffset:_,features:this.findFeaturesAt(s,y)}),w=this.performNextTokenCompletion(e,a.substring(y,_),y,_),w&&(yield Object.assign(Object.assign({},u),{node:D,tokenOffset:_,tokenEndOffset:_,features:this.findFeaturesAt(s,_)}))),D)w&&(yield Object.assign(Object.assign({},u),{node:D,tokenOffset:h,tokenEndOffset:p,features:this.findFeaturesAt(s,h)}));else{let x=oc(this.grammar);if(!x)throw new Error("Missing entry parser rule");yield Object.assign(Object.assign({},u),{tokenOffset:h,tokenEndOffset:p,features:lh(x.definition)})}}performNextTokenCompletion(e,r,n,i){return/\P{L}$/u.test(r)}findDataTypeRuleStart(e,r){var n,i;let o=cr(e,r,this.grammarConfig.nameRegexp),s=!!(!((n=_r(o?.grammarSource,Ye))===null||n===void 0)&&n.dataType);if(s){for(;s;)o=o?.container,s=!!(!((i=_r(o?.grammarSource,Ye))===null||i===void 0)&&i.dataType);if(o)return[o.offset,o.end]}}continueCompletion(e){return e.length===0}backtrackToAnyToken(e,r){let n=this.lexer.tokenize(e).tokens;if(n.length===0)return{nextTokenStart:r,nextTokenEnd:r};let i;for(let o of n){if(o.startOffset>=r)return{nextTokenStart:r,nextTokenEnd:r,previousTokenStart:i?i.startOffset:void 0,previousTokenEnd:i?i.endOffset+1:void 0};if(o.endOffset>=r)return{nextTokenStart:o.startOffset,nextTokenEnd:o.endOffset+1,previousTokenStart:i?i.startOffset:void 0,previousTokenEnd:i?i.endOffset+1:void 0};i=o}return{nextTokenStart:r,nextTokenEnd:r,previousTokenStart:i?i.startOffset:void 0,previousTokenEnd:i?i.endOffset+1:void 0}}completionFor(e,r,n){if(Et(r.feature))return this.completionForKeyword(e,r.feature,n);if(br(r.feature)&&e.node)return this.completionForCrossReference(e,r,n)}completionForCrossReference(e,r,n){let i=_r(r.feature,Vt),o=e.node;if(i&&o){r.type&&(o={$type:r.type,$container:o,$containerProperty:r.property},ec(this.astReflection,o));let s={reference:{$refText:""},container:o,property:i.feature};try{for(let a of this.getReferenceCandidates(s,e))n(e,this.createReferenceCompletionItem(a))}catch(a){console.error(a)}}}getReferenceCandidates(e,r){return this.scopeProvider.getScope(e).getAllElements()}createReferenceCompletionItem(e){let r=this.nodeKindProvider.getCompletionItemKind(e),n=this.getReferenceDocumentation(e);return{nodeDescription:e,kind:r,documentation:n,detail:e.type,sortText:"0"}}getReferenceDocumentation(e){if(!e.node)return;let r=this.documentationProvider.getDocumentation(e.node);if(r)return{kind:"markdown",value:r}}completionForKeyword(e,r,n){this.filterKeyword(e,r)&&n(e,{label:r.value,kind:this.getKeywordCompletionItemKind(r),detail:"Keyword",sortText:"1"})}getKeywordCompletionItemKind(e){return Fa.CompletionItemKind.Keyword}filterKeyword(e,r){return/\p{L}/u.test(r.value)}fillCompletionItem(e,r){var n,i;let o;if(typeof r.label=="string")o=r.label;else if("node"in r){let u=this.nameProvider.getName(r.node);if(!u)return;o=u}else if("nodeDescription"in r)o=r.nodeDescription.name;else return;let s;typeof((n=r.textEdit)===null||n===void 0?void 0:n.newText)=="string"?s=r.textEdit.newText:typeof r.insertText=="string"?s=r.insertText:s=o;let a=(i=r.textEdit)!==null&&i!==void 0?i:this.buildCompletionTextEdit(e,o,s);return a?{additionalTextEdits:r.additionalTextEdits,command:r.command,commitCharacters:r.commitCharacters,data:r.data,detail:r.detail,documentation:r.documentation,filterText:r.filterText,insertText:r.insertText,insertTextFormat:r.insertTextFormat,insertTextMode:r.insertTextMode,kind:r.kind,labelDetails:r.labelDetails,preselect:r.preselect,sortText:r.sortText,tags:r.tags,textEditText:r.textEditText,textEdit:a,label:o}:void 0}buildCompletionTextEdit(e,r,n){let o=e.textDocument.getText().substring(e.tokenOffset,e.offset);if(this.fuzzyMatcher.match(o,r)){let s=e.textDocument.positionAt(e.tokenOffset),a=e.position;return{newText:n,range:{start:s,end:a}}}else return}};var PA=Nr(kn(),1);var fh=class{constructor(e){this.nameProvider=e.references.NameProvider,this.references=e.references.References,this.grammarConfig=e.parser.GrammarConfig}getDefinition(e,r,n){let i=e.parseResult.value;if(i.$cstNode){let o=i.$cstNode,s=cr(o,e.textDocument.offsetAt(r.position),this.grammarConfig.nameRegexp);if(s)return this.collectLocationLinks(s,r)}}collectLocationLinks(e,r){var n;let i=this.findLink(e);if(i)return[PA.LocationLink.create(i.targetDocument.textDocument.uri,((n=i.target.astNode.$cstNode)!==null&&n!==void 0?n:i.target).range,i.target.range,i.source.range)]}findLink(e){let r=this.references.findDeclarationNode(e);if(r?.astNode){let n=Rt(r.astNode);if(r&&n)return{source:e,target:r,targetDocument:n}}}};var IA=Nr(kn(),1);var hh=class{constructor(e){this.references=e.references.References,this.nameProvider=e.references.NameProvider,this.grammarConfig=e.parser.GrammarConfig}getDocumentHighlight(e,r,n){let i=e.parseResult.value.$cstNode;if(!i)return;let o=cr(i,e.textDocument.offsetAt(r.position),this.grammarConfig.nameRegexp);if(!o)return;let s=this.references.findDeclaration(o);if(s){let a=ge.equals(Rt(s).uri,e.uri),c={documentUri:e.uri,includeDeclaration:a};return this.references.findReferences(s,c).map(l=>this.createDocumentHighlight(l)).toArray()}}createDocumentHighlight(e){return IA.DocumentHighlight.create(e.segment.range)}};var ph=class{constructor(e){this.nameProvider=e.references.NameProvider,this.nodeKindProvider=e.shared.lsp.NodeKindProvider}getSymbols(e,r,n){return this.getSymbol(e,e.parseResult.value)}getSymbol(e,r){let n=r.$cstNode,i=this.nameProvider.getNameNode(r);if(i&&n){let o=this.nameProvider.getName(r);return[{kind:this.nodeKindProvider.getSymbolKind(r),name:o||i.text,range:n.range,selectionRange:i.range,children:this.getChildSymbols(e,r)}]}else return this.getChildSymbols(e,r)||[]}getChildSymbols(e,r){let n=[];for(let i of Ui(r)){let o=this.getSymbol(e,i);n.push(...o)}if(n.length>0)return n}};var qu=Nr(kn(),1);var mh=class{constructor(e){this.workspaceManager=e.workspace.WorkspaceManager,this.documentBuilder=e.workspace.DocumentBuilder,this.workspaceLock=e.workspace.WorkspaceLock,this.serviceRegistry=e.ServiceRegistry;let r=!1;e.lsp.LanguageServer.onInitialize(n=>{var i,o;r=!!(!((o=(i=n.capabilities.workspace)===null||i===void 0?void 0:i.didChangeWatchedFiles)===null||o===void 0)&&o.dynamicRegistration)}),e.lsp.LanguageServer.onInitialized(n=>{r&&this.registerFileWatcher(e)})}registerFileWatcher(e){let r=[],n=ce(e.ServiceRegistry.all).flatMap(o=>o.LanguageMetaData.fileExtensions).map(o=>o.startsWith(".")?o.substring(1):o).distinct().toArray();n.length>0&&r.push({globPattern:n.length===1?`**/*.${n[0]}`:`**/*.{${n.join(",")}}`});let i=ce(e.ServiceRegistry.all).flatMap(o=>{var s;return(s=o.LanguageMetaData.fileNames)!==null&&s!==void 0?s:[]}).distinct().toArray();if(i.length>0&&r.push({globPattern:i.length===1?`**/${i[0]}`:`**/{${i.join(",")}}`}),r.length>0){let o=e.lsp.Connection,s={watchers:r};o?.client.register(qu.DidChangeWatchedFilesNotification.type,s)}}fireDocumentUpdate(e,r){e=e.filter(n=>this.serviceRegistry.hasServices(n)),this.workspaceManager.ready.then(()=>{this.workspaceLock.write(n=>this.documentBuilder.update(e,r,n))}).catch(n=>{console.error("Workspace initialization failed. Could not perform document update.",n)})}didChangeContent(e){this.fireDocumentUpdate([vt.parse(e.document.uri)],[])}didChangeWatchedFiles(e){let r=ce(e.changes).filter(i=>i.type!==qu.FileChangeType.Deleted).distinct(i=>i.uri).map(i=>vt.parse(i.uri)).toArray(),n=ce(e.changes).filter(i=>i.type===qu.FileChangeType.Deleted).distinct(i=>i.uri).map(i=>vt.parse(i.uri)).toArray();this.fireDocumentUpdate(r,n)}};var ju=Nr(kn(),1);var gh=class{constructor(e){this.commentNames=e.parser.GrammarConfig.multilineCommentRules}getFoldingRanges(e,r,n){let i=[],o=s=>i.push(s);return this.collectFolding(e,o),i}collectFolding(e,r){var n;let i=(n=e.parseResult)===null||n===void 0?void 0:n.value;if(i){if(this.shouldProcessContent(i)){let o=Cr(i).iterator(),s;do if(s=o.next(),!s.done){let a=s.value;this.shouldProcess(a)&&this.collectObjectFolding(e,a,r),this.shouldProcessContent(a)||o.prune()}while(!s.done)}this.collectCommentFolding(e,i,r)}}shouldProcess(e){return!0}shouldProcessContent(e){return!0}collectObjectFolding(e,r,n){let i=r.$cstNode;if(i){let o=this.toFoldingRange(e,i);o&&n(o)}}collectCommentFolding(e,r,n){let i=r.$cstNode;if(i){for(let o of qh(i))if(this.commentNames.includes(o.tokenType.name)){let s=this.toFoldingRange(e,o,ju.FoldingRangeKind.Comment);s&&n(s)}}}toFoldingRange(e,r,n){let i=r.range,o=i.start,s=i.end;if(!(s.line-o.line<2))return this.includeLastFoldingLine(r,n)||(s=e.textDocument.positionAt(e.textDocument.offsetAt({line:s.line,character:0})-1)),ju.FoldingRange.create(o.line,s.line,o.character,s.character,n)}includeLastFoldingLine(e,r){if(r===ju.FoldingRangeKind.Comment)return!1;let n=e.text,i=n.charAt(n.length-1);return!(i==="}"||i===")"||i==="]")}};var yh=class{match(e,r){if(e.length===0)return!0;let n=!1,i,o=0,s=r.length;for(let a=0;a<s;a++){let c=r.charCodeAt(a),u=e.charCodeAt(o);if((c===u||this.toUpperCharCode(c)===this.toUpperCharCode(u))&&(n||(n=i===void 0||this.isWordTransition(i,c)),n&&o++,o===e.length))return!0;i=c}return!1}isWordTransition(e,r){return DA<=e&&e<=OA&&tj<=r&&r<=rj||e===LA&&r!==LA}toUpperCharCode(e){return DA<=e&&e<=OA?e-32:e}},DA=97,OA=122,tj=65,rj=90,LA=95;var Hy=class{constructor(e){this.references=e.references.References,this.grammarConfig=e.parser.GrammarConfig}getHoverContent(e,r){var n,i;let o=(i=(n=e.parseResult)===null||n===void 0?void 0:n.value)===null||i===void 0?void 0:i.$cstNode;if(o){let s=e.textDocument.offsetAt(r.position),a=cr(o,s,this.grammarConfig.nameRegexp);if(a&&a.offset+a.length>s){let c=this.references.findDeclaration(a);if(c)return this.getAstNodeHoverContent(c);if(Et(a.grammarSource))return this.getKeywordHoverContent(a.grammarSource)}}}getKeywordHoverContent(e){var r;let n=eu(e)?e.$comment:void 0;if(n||(n=(r=Ba(e.$cstNode,["ML_COMMENT"]))===null||r===void 0?void 0:r.text),n&&pu(n)){let i=hu(n).toMarkdown();if(i)return{contents:{kind:"markdown",value:i}}}}},vh=class extends Hy{constructor(e){super(e),this.documentationProvider=e.documentation.DocumentationProvider}getAstNodeHoverContent(e){let r=this.documentationProvider.getDocumentation(e);if(r)return{contents:{kind:"markdown",value:r}}}};var Gn=Nr(ht(),1);var fe=Nr(kn(),1);var nj={[fe.SemanticTokenTypes.class]:0,[fe.SemanticTokenTypes.comment]:1,[fe.SemanticTokenTypes.enum]:2,[fe.SemanticTokenTypes.enumMember]:3,[fe.SemanticTokenTypes.event]:4,[fe.SemanticTokenTypes.function]:5,[fe.SemanticTokenTypes.interface]:6,[fe.SemanticTokenTypes.keyword]:7,[fe.SemanticTokenTypes.macro]:8,[fe.SemanticTokenTypes.method]:9,[fe.SemanticTokenTypes.modifier]:10,[fe.SemanticTokenTypes.namespace]:11,[fe.SemanticTokenTypes.number]:12,[fe.SemanticTokenTypes.operator]:13,[fe.SemanticTokenTypes.parameter]:14,[fe.SemanticTokenTypes.property]:15,[fe.SemanticTokenTypes.regexp]:16,[fe.SemanticTokenTypes.string]:17,[fe.SemanticTokenTypes.struct]:18,[fe.SemanticTokenTypes.type]:19,[fe.SemanticTokenTypes.typeParameter]:20,[fe.SemanticTokenTypes.variable]:21,[fe.SemanticTokenTypes.decorator]:22},ij={[fe.SemanticTokenModifiers.abstract]:1,[fe.SemanticTokenModifiers.async]:2,[fe.SemanticTokenModifiers.declaration]:4,[fe.SemanticTokenModifiers.defaultLibrary]:8,[fe.SemanticTokenModifiers.definition]:16,[fe.SemanticTokenModifiers.deprecated]:32,[fe.SemanticTokenModifiers.documentation]:64,[fe.SemanticTokenModifiers.modification]:128,[fe.SemanticTokenModifiers.readonly]:256,[fe.SemanticTokenModifiers.static]:512},dre={legend:{tokenTypes:Object.keys(nj),tokenModifiers:Object.keys(ij)},full:{delta:!0},range:!0};function FA(t){let e=[],r=[],n=!0,i=!0,o=!0;for(let s of t)s&&(s.legend.tokenTypes.forEach((a,c)=>{let u=e[c];if(u&&u!==a)throw new Error(`Cannot merge '${u}' and '${a}' token types. They use the same index ${c}.`);e[c]=a}),s.legend.tokenModifiers.forEach((a,c)=>{let u=r[c];if(u&&u!==a)throw new Error(`Cannot merge '${u}' and '${a}' token modifier. They use the same index ${c}.`);r[c]=a}),s.full?typeof s.full=="object"&&!s.full.delta&&(i=!1):n=!1,s.range||(o=!1));return{legend:{tokenTypes:e,tokenModifiers:r},full:n&&{delta:i},range:o}}var MA;(function(t){function e(n,i,o){let s=new Map;Object.entries(i).forEach(([u,l])=>s.set(l,u));let a=0,c=0;return r(n.data,5).map(u=>{a+=u[0],u[0]!==0&&(c=0),c+=u[1];let l=u[2];return{offset:o.textDocument.offsetAt({line:a,character:c}),tokenType:s.get(u[3]),tokenModifiers:u[4],text:o.textDocument.getText({start:{line:a,character:c},end:{line:a,character:c+l}})}})}t.decode=e;function r(n,i){let o=[];for(let s=0;s<n.length;s+=i){let a=n.slice(s,s+i);o.push(a)}return o}})(MA||(MA={}));function $A(t){let e=[],r=[];t.forEach(i=>{i?.triggerCharacters&&e.push(...i.triggerCharacters),i?.retriggerCharacters&&r.push(...i.retriggerCharacters)});let n={triggerCharacters:e.length>0?Array.from(new Set(e)).sort():void 0,retriggerCharacters:r.length>0?Array.from(new Set(r)).sort():void 0};return n.triggerCharacters?n:void 0}var xh=class{constructor(e){this.onInitializeEmitter=new Gn.Emitter,this.onInitializedEmitter=new Gn.Emitter,this.services=e}get onInitialize(){return this.onInitializeEmitter.event}get onInitialized(){return this.onInitializedEmitter.event}async initialize(e){return this.eagerLoadServices(),this.fireInitializeOnDefaultServices(e),this.onInitializeEmitter.fire(e),this.onInitializeEmitter.dispose(),this.buildInitializeResult(e)}eagerLoadServices(){bu(this.services),this.services.ServiceRegistry.all.forEach(e=>bu(e))}hasService(e){return this.services.ServiceRegistry.all.some(n=>e(n)!==void 0)}buildInitializeResult(e){var r,n,i,o;let s=this.services.lsp.DocumentUpdateHandler,a=(r=this.services.lsp.FileOperationHandler)===null||r===void 0?void 0:r.fileOperationOptions,c=this.services.ServiceRegistry.all,u=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.Formatter}),l=c.map(B=>{var N,ke;return(ke=(N=B.lsp)===null||N===void 0?void 0:N.Formatter)===null||ke===void 0?void 0:ke.formatOnTypeOptions}).find(B=>!!B),h=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.CodeActionProvider}),p=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.SemanticTokenProvider}),y=FA(c.map(B=>{var N,ke;return(ke=(N=B.lsp)===null||N===void 0?void 0:N.SemanticTokenProvider)===null||ke===void 0?void 0:ke.semanticTokensOptions})),_=(i=(n=this.services.lsp)===null||n===void 0?void 0:n.ExecuteCommandHandler)===null||i===void 0?void 0:i.commands,E=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DocumentLinkProvider}),D=$A(c.map(B=>{var N,ke;return(ke=(N=B.lsp)===null||N===void 0?void 0:N.SignatureHelp)===null||ke===void 0?void 0:ke.signatureHelpOptions})),w=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.TypeProvider}),x=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.ImplementationProvider}),g=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.CompletionProvider}),A=NA(c.map(B=>{var N,ke;return(ke=(N=B.lsp)===null||N===void 0?void 0:N.CompletionProvider)===null||ke===void 0?void 0:ke.completionOptions})),M=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.ReferencesProvider}),te=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DocumentSymbolProvider}),_e=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DefinitionProvider}),Se=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DocumentHighlightProvider}),Nt=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.FoldingRangeProvider}),xt=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.HoverProvider}),$=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.RenameProvider}),I=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.CallHierarchyProvider}),z=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.TypeHierarchyProvider}),W=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.CodeLensProvider}),le=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DeclarationProvider}),Z=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.InlayHintProvider}),Q=(o=this.services.lsp)===null||o===void 0?void 0:o.WorkspaceSymbolProvider;return{capabilities:{workspace:{workspaceFolders:{supported:!0},fileOperations:a},executeCommandProvider:_&&{commands:_},textDocumentSync:{change:Gn.TextDocumentSyncKind.Incremental,openClose:!0,save:!!s.didSaveDocument,willSave:!!s.willSaveDocument,willSaveWaitUntil:!!s.willSaveDocumentWaitUntil},completionProvider:g?A:void 0,referencesProvider:M,documentSymbolProvider:te,definitionProvider:_e,typeDefinitionProvider:w,documentHighlightProvider:Se,codeActionProvider:h,documentFormattingProvider:u,documentRangeFormattingProvider:u,documentOnTypeFormattingProvider:l,foldingRangeProvider:Nt,hoverProvider:xt,renameProvider:$?{prepareProvider:!0}:void 0,semanticTokensProvider:p?y:void 0,signatureHelpProvider:D,implementationProvider:x,callHierarchyProvider:I?{}:void 0,typeHierarchyProvider:z?{}:void 0,documentLinkProvider:E?{resolveProvider:!1}:void 0,codeLensProvider:W?{resolveProvider:!1}:void 0,declarationProvider:le,inlayHintProvider:Z?{resolveProvider:!1}:void 0,workspaceSymbolProvider:Q?{resolveProvider:!!Q.resolveSymbol}:void 0}}}initialized(e){this.fireInitializedOnDefaultServices(e),this.onInitializedEmitter.fire(e),this.onInitializedEmitter.dispose()}fireInitializeOnDefaultServices(e){this.services.workspace.ConfigurationProvider.initialize(e),this.services.workspace.WorkspaceManager.initialize(e)}fireInitializedOnDefaultServices(e){let r=this.services.lsp.Connection,n=r?Object.assign(Object.assign({},e),{register:i=>r.client.register(Gn.DidChangeConfigurationNotification.type,i),fetchConfiguration:i=>r.workspace.getConfiguration(i)}):e;this.services.workspace.ConfigurationProvider.initialized(n).catch(i=>console.error("Error in ConfigurationProvider initialization:",i)),this.services.workspace.WorkspaceManager.initialized(e).catch(i=>console.error("Error in WorkspaceManager initialization:",i))}};var Rh=Nr(kn(),1),Th=class{getSymbolKind(e){return Rh.SymbolKind.Field}getCompletionItemKind(e){return Rh.CompletionItemKind.Reference}};var qA=Nr(kn(),1);var bh=class{constructor(e){this.nameProvider=e.references.NameProvider,this.references=e.references.References,this.grammarConfig=e.parser.GrammarConfig}findReferences(e,r,n){let i=e.parseResult.value.$cstNode;if(!i)return[];let o=cr(i,e.textDocument.offsetAt(r.position),this.grammarConfig.nameRegexp);return o?this.getReferences(o,r,e):[]}getReferences(e,r,n){let i=[],o=this.references.findDeclaration(e);if(o){let s={includeDeclaration:r.context.includeDeclaration};this.references.findReferences(o,s).forEach(a=>{i.push(qA.Location.create(a.sourceUri.toString(),a.segment.range))})}return i}};var _h=class{constructor(e){this.references=e.references.References,this.nameProvider=e.references.NameProvider,this.grammarConfig=e.parser.GrammarConfig}async rename(e,r,n){let i={},o=e.parseResult.value.$cstNode;if(!o)return;let s=e.textDocument.offsetAt(r.position),a=cr(o,s,this.grammarConfig.nameRegexp);if(!a)return;let c=this.references.findDeclaration(a);if(!c)return;let u={onlyLocal:!1,includeDeclaration:!0};return this.references.findReferences(c,u).forEach(h=>{let p=gi.replace(h.segment.range,r.newName),y=h.sourceUri.toString();i[y]?i[y].push(p):i[y]=[p]}),{changes:i}}prepareRename(e,r,n){return this.renameNodeRange(e,r.position)}renameNodeRange(e,r){let n=e.parseResult.value.$cstNode,i=e.textDocument.offsetAt(r);if(n&&i){let o=cr(n,i,this.grammarConfig.nameRegexp);if(!o)return;if(this.references.findDeclaration(o)||this.isNameNode(o))return o.range}}isNameNode(e){return e?.astNode&&qd(e.astNode)&&e===this.nameProvider.getNameNode(e.astNode)}};var Ch=class{constructor(e){this.indexManager=e.workspace.IndexManager,this.nodeKindProvider=e.lsp.NodeKindProvider,this.fuzzyMatcher=e.lsp.FuzzyMatcher}async getSymbols(e,r=J.CancellationToken.None){let n=[],i=e.query.toLowerCase();for(let o of this.indexManager.allElements())if(await ot(r),this.fuzzyMatcher.match(i,o.name)){let s=this.getWorkspaceSymbol(o);s&&n.push(s)}return n}getWorkspaceSymbol(e){let r=e.nameSegment;if(r)return{kind:this.nodeKindProvider.getSymbolKind(e),name:e.name,location:{range:r.range,uri:e.documentUri.toString()}}}};var $t=Nr(kn(),1);var Uu=class{constructor(e){this._configuration=e,this._syncedDocuments=new Map,this._onDidChangeContent=new $t.Emitter,this._onDidOpen=new $t.Emitter,this._onDidClose=new $t.Emitter,this._onDidSave=new $t.Emitter,this._onWillSave=new $t.Emitter}get onDidOpen(){return this._onDidOpen.event}get onDidChangeContent(){return this._onDidChangeContent.event}get onWillSave(){return this._onWillSave.event}onWillSaveWaitUntil(e){this._willSaveWaitUntil=e}get onDidSave(){return this._onDidSave.event}get onDidClose(){return this._onDidClose.event}get(e){return this._syncedDocuments.get(ge.normalize(e))}set(e){let r=ge.normalize(e.uri),n=!0;this._syncedDocuments.has(r)&&(n=!1),this._syncedDocuments.set(r,e);let i=Object.freeze({document:e});return this._onDidOpen.fire(i),this._onDidChangeContent.fire(i),n}delete(e){let r=ge.normalize(typeof e=="object"&&"uri"in e?e.uri:e),n=this._syncedDocuments.get(r);n!==void 0&&(this._syncedDocuments.delete(r),this._onDidClose.fire(Object.freeze({document:n})))}all(){return Array.from(this._syncedDocuments.values())}keys(){return Array.from(this._syncedDocuments.keys())}listen(e){e.__textDocumentSync=$t.TextDocumentSyncKind.Incremental;let r=[];return r.push(e.onDidOpenTextDocument(n=>{let i=n.textDocument,o=ge.normalize(i.uri),s=this._configuration.create(o,i.languageId,i.version,i.text);this._syncedDocuments.set(o,s);let a=Object.freeze({document:s});this._onDidOpen.fire(a),this._onDidChangeContent.fire(a)})),r.push(e.onDidChangeTextDocument(n=>{let i=n.textDocument,o=n.contentChanges;if(o.length===0)return;let{version:s}=i;if(s==null)throw new Error(`Received document change event for ${i.uri} without valid version identifier`);let a=ge.normalize(i.uri),c=this._syncedDocuments.get(a);c!==void 0&&(c=this._configuration.update(c,o,s),this._syncedDocuments.set(a,c),this._onDidChangeContent.fire(Object.freeze({document:c})))})),r.push(e.onDidCloseTextDocument(n=>{let i=ge.normalize(n.textDocument.uri),o=this._syncedDocuments.get(i);o!==void 0&&(this._syncedDocuments.delete(i),this._onDidClose.fire(Object.freeze({document:o})))})),r.push(e.onWillSaveTextDocument(n=>{let i=this._syncedDocuments.get(ge.normalize(n.textDocument.uri));i!==void 0&&this._onWillSave.fire(Object.freeze({document:i,reason:n.reason}))})),r.push(e.onWillSaveTextDocumentWaitUntil((n,i)=>{let o=this._syncedDocuments.get(ge.normalize(n.textDocument.uri));return o!==void 0&&this._willSaveWaitUntil?this._willSaveWaitUntil(Object.freeze({document:o,reason:n.reason}),i):[]})),r.push(e.onDidSaveTextDocument(n=>{let i=this._syncedDocuments.get(ge.normalize(n.textDocument.uri));i!==void 0&&this._onDidSave.fire(Object.freeze({document:i}))})),$t.Disposable.create(()=>{r.forEach(n=>n.dispose())})}},Sh=class{constructor(e){this.notebookDocuments=new Map,this.notebookCellMap=new Map,this._onDidOpen=new $t.Emitter,this._onDidSave=new $t.Emitter,this._onDidChange=new $t.Emitter,this._onDidClose=new $t.Emitter,"listen"in e?this._cellTextDocuments=e:this._cellTextDocuments=new Uu(e)}get cellTextDocuments(){return this._cellTextDocuments}getCellTextDocument(e){return this._cellTextDocuments.get(e.document)}getNotebookDocument(e){return this.notebookDocuments.get(ge.normalize(e))}getNotebookCell(e){let r=this.notebookCellMap.get(ge.normalize(e));return r&&r[0]}findNotebookDocumentForCell(e){let r=typeof e=="string"||"scheme"in e?e:e.document,n=this.notebookCellMap.get(ge.normalize(r));return n&&n[1]}get onDidOpen(){return this._onDidOpen.event}get onDidSave(){return this._onDidSave.event}get onDidChange(){return this._onDidChange.event}get onDidClose(){return this._onDidClose.event}listen(e){let r=new kh,n=[];return n.push(this.cellTextDocuments.listen(r)),n.push(e.notebooks.synchronization.onDidOpenNotebookDocument(i=>{let o=ge.normalize(i.notebookDocument.uri);this.notebookDocuments.set(o,i.notebookDocument);for(let s of i.cellTextDocuments)r.openTextDocument({textDocument:s});this.updateCellMap(i.notebookDocument),this._onDidOpen.fire(i.notebookDocument)})),n.push(e.notebooks.synchronization.onDidChangeNotebookDocument(i=>{let o=ge.normalize(i.notebookDocument.uri),s=this.notebookDocuments.get(o);if(s===void 0)return;s.version=i.notebookDocument.version;let a=s.metadata,c=!1,u=i.change;u.metadata!==void 0&&(c=!0,s.metadata=u.metadata);let l=[],h=[],p=[],y=[];if(u.cells!==void 0){let x=u.cells;if(x.structure!==void 0){let g=x.structure.array;if(s.cells.splice(g.start,g.deleteCount,...g.cells!==void 0?g.cells:[]),x.structure.didOpen!==void 0)for(let A of x.structure.didOpen)r.openTextDocument({textDocument:A}),l.push(A.uri);if(x.structure.didClose)for(let A of x.structure.didClose)r.closeTextDocument({textDocument:A}),h.push(A.uri)}if(x.data!==void 0){let g=new Map(x.data.map(A=>[A.document,A]));for(let A=0;A<=s.cells.length;A++){let M=g.get(s.cells[A].document);if(M!==void 0){let te=s.cells.splice(A,1,M);if(p.push({old:te[0],new:M}),g.delete(M.document),g.size===0)break}}}if(x.textContent!==void 0)for(let g of x.textContent)r.changeTextDocument({textDocument:g.document,contentChanges:g.changes}),y.push(g.document.uri)}this.updateCellMap(s);let _={notebookDocument:s};c&&(_.metadata={old:a,new:s.metadata});let E=[];for(let x of l)E.push(this.getNotebookCell(x));let D=[];for(let x of h)D.push(this.getNotebookCell(x));let w=[];for(let x of y)w.push(this.getNotebookCell(x));(E.length>0||D.length>0||p.length>0||w.length>0)&&(_.cells={added:E,removed:D,changed:{data:p,textContent:w}}),(_.metadata!==void 0||_.cells!==void 0)&&this._onDidChange.fire(_)})),n.push(e.notebooks.synchronization.onDidSaveNotebookDocument(i=>{let o=this.getNotebookDocument(i.notebookDocument.uri);o!==void 0&&this._onDidSave.fire(o)})),n.push(e.notebooks.synchronization.onDidCloseNotebookDocument(i=>{let o=ge.normalize(i.notebookDocument.uri),s=this.notebookDocuments.get(o);if(s!==void 0){this._onDidClose.fire(s);for(let a of i.cellTextDocuments)r.closeTextDocument({textDocument:a});this.notebookDocuments.delete(o);for(let a of s.cells)this.notebookCellMap.delete(a.document)}})),$t.Disposable.create(()=>{n.forEach(i=>i.dispose())})}updateCellMap(e){for(let r of e.cells)this.notebookCellMap.set(r.document,[r,e])}},kh=class t{onDidOpenTextDocument(e){return this.openHandler=e,$t.Disposable.create(()=>{this.openHandler=void 0})}openTextDocument(e){this.openHandler&&this.openHandler(e)}onDidChangeTextDocument(e){return this.changeHandler=e,$t.Disposable.create(()=>{this.changeHandler=e})}changeTextDocument(e){this.changeHandler&&this.changeHandler(e)}onDidCloseTextDocument(e){return this.closeHandler=e,$t.Disposable.create(()=>{this.closeHandler=void 0})}closeTextDocument(e){this.closeHandler&&this.closeHandler(e)}onWillSaveTextDocument(){return t.NULL_DISPOSE}onWillSaveTextDocumentWaitUntil(){return t.NULL_DISPOSE}onDidSaveTextDocument(){return t.NULL_DISPOSE}};kh.NULL_DISPOSE=Object.freeze({dispose:()=>{}});function jA(t){return ya.merge(Tu(t),oj(t))}function oj(t){return{lsp:{CompletionProvider:e=>new dh(e),DocumentSymbolProvider:e=>new ph(e),HoverProvider:e=>new vh(e),FoldingRangeProvider:e=>new gh(e),ReferencesProvider:e=>new bh(e),DefinitionProvider:e=>new fh(e),DocumentHighlightProvider:e=>new hh(e),RenameProvider:e=>new _h(e)},shared:()=>t.shared}}function UA(t){return ya.merge(Ru(t),sj(t))}function sj(t){return{lsp:{Connection:()=>t.connection,LanguageServer:e=>new xh(e),DocumentUpdateHandler:e=>new mh(e),WorkspaceSymbolProvider:e=>new Ch(e),NodeKindProvider:()=>new Th,FuzzyMatcher:()=>new yh},workspace:{TextDocuments:()=>new Uu(vi),NotebookDocuments:e=>new Sh(e.workspace.TextDocuments)}}}var WA="BlockCommand";var BA="LineCommand";var Gy="AddressParam";var Eh="CheckActionCommand";var Ah="CheckAlarmCommand";var wh="CheckCommand";var zy="CodeParam";var Wu="CountCommand";function Xy(t){return Qy.isInstance(t,Wu)}var Nh="DelayCommand";var Bu="LoopCommand";function Yy(t){return Qy.isInstance(t,Bu)}var Ph="Model";var Hu="ScheduleCommand";function Jy(t){return Qy.isInstance(t,Hu)}var Vy="TimeParam";var Ih="UnwatchCommand";var Ky="ValueParam";var Dh="WatchCommand";var Oh="WriteCommand";var Lh="TypeDeclare";var Gu=class extends Di{getAllTypes(){return[Gy,WA,Eh,Ah,wh,zy,Wu,Nh,BA,Bu,Ph,Hu,Vy,Lh,Ih,Ky,Dh,Oh]}computeIsSubtype(e,r){switch(e){case Eh:case Ah:case wh:case Nh:case Ih:case Dh:case Oh:return this.isSubtype(BA,r);case Wu:case Bu:case Hu:return this.isSubtype(WA,r);case Lh:return this.isSubtype(Ph,r);default:return!1}}getReferenceType(e){let r=`${e.container.$type}:${e.property}`;throw new Error(`${r} is not a valid reference id.`)}getTypeMetaData(e){switch(e){case Gy:return{name:Gy,properties:[{name:"module"},{name:"value"}]};case Eh:return{name:Eh,properties:[{name:"code"}]};case Ah:return{name:Ah,properties:[{name:"codes",defaultValue:[]},{name:"codes2",defaultValue:[]}]};case wh:return{name:wh,properties:[{name:"address"},{name:"address2"},{name:"value"},{name:"value2"}]};case zy:return{name:zy,properties:[{name:"value"}]};case Wu:return{name:Wu,properties:[{name:"commands",defaultValue:[]},{name:"times"}]};case Nh:return{name:Nh,properties:[{name:"time"}]};case Bu:return{name:Bu,properties:[{name:"commands",defaultValue:[]},{name:"time"}]};case Ph:return{name:Ph,properties:[{name:"commands",defaultValue:[]}]};case Hu:return{name:Hu,properties:[{name:"commands",defaultValue:[]},{name:"time"}]};case Vy:return{name:Vy,properties:[{name:"value"}]};case Ih:return{name:Ih,properties:[{name:"address"}]};case Ky:return{name:Ky,properties:[{name:"value"}]};case Dh:return{name:Dh,properties:[{name:"address"},{name:"value"},{name:"value2"}]};case Oh:return{name:Oh,properties:[{name:"address"},{name:"address2"},{name:"value"}]};case Lh:return{name:Lh,properties:[{name:"commands",defaultValue:[]},{name:"value"}]};default:return{name:e,properties:[]}}}},Qy=new Gu;var HA,GA=()=>HA??(HA=Xd('{"$type":"Grammar","isDeclared":true,"name":"Acspec","rules":[{"$type":"ParserRule","entry":true,"name":"Model","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},{"$type":"Assignment","feature":"commands","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TypeDeclare","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"use"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"unit"},{"$type":"Keyword","value":"init"}]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineCommand","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BlockCommand","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WriteCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"write"},{"$type":"Keyword","value":"write!"}]},{"$type":"Assignment","feature":"address","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"address2","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CheckCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"check"},{"$type":"Keyword","value":"check!"}]},{"$type":"Assignment","feature":"address","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value2","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Assignment","feature":"address2","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CheckAlarmCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"check_alarm"},{"$type":"Keyword","value":"check_alarm!"}]},{"$type":"Assignment","feature":"codes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"codes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"|"},{"$type":"Assignment","feature":"codes2","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"codes2","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CheckActionCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"check_action"},{"$type":"Keyword","value":"check_action!"}]},{"$type":"Assignment","feature":"code","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WatchCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"watch"},{"$type":"Keyword","value":"watch!"}]},{"$type":"Assignment","feature":"address","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value2","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"UnwatchCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"unwatch"},{"$type":"Keyword","value":"unwatch!"}]},{"$type":"Assignment","feature":"address","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DelayCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"delay"},{"$type":"Keyword","value":"delay!"}]},{"$type":"Assignment","feature":"time","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ScheduleCommand","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"schedule"},{"$type":"Assignment","feature":"time","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"commands","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LoopCommand","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"loop"},{"$type":"Assignment","feature":"time","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"commands","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CountCommand","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"count"},{"$type":"Assignment","feature":"times","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"commands","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"AddressParam","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"module","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ValueParam","definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CodeParam","definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TimeParam","definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/\\\\s+/"},"fragment":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[_a-zA-Z][\\\\w_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?\\\\d+(\\\\.\\\\d+)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SL_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"interfaces":[],"types":[],"usedGrammars":[]}'));var cj={languageId:"acspec",fileExtensions:[".tsc"],caseInsensitive:!1,mode:"production"},zA={AstReflection:()=>new Gu},VA={Grammar:()=>GA(),LanguageMetaData:()=>cj,parser:{}};function KA(t){let e=t.validation.ValidationRegistry,r=t.validation.AcspecValidator,n={WriteCommand:r.checkWriteCommand,CheckCommand:r.checkCheckCommand,DelayCommand:r.checkDelayCommand,CheckAlarmCommand:r.checkAlarmCommand,CheckActionCommand:r.checkActionCommand,WatchCommand:r.checkWatchCommand,UnwatchCommand:r.checkUnwatchCommand,ScheduleCommand:r.checkScheduleCommand,LoopCommand:r.checkLoopCommand,CountCommand:r.checkCountCommand};e.register(n,r)}var Mh=class{validateAddress(e){return e?/^[A-Z]+[0-9]+$/.test(e):!1}checkAddressParam(e,r){e&&(this.validateAddress(e.value)||r("error","\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u5BC4\u5B58\u5668\u5730\u5740\uFF0C\u4F8B\u5982\uFF1AM0100",{node:e,property:"value"}),e.module!==void 0&&(!Number.isInteger(e.module)||e.module<0)&&r("error","\u6A21\u5757\u53F7\u5FC5\u987B\u662F\u975E\u8D1F\u6574\u6570",{node:e,property:"module"}))}checkWriteCommand(e,r){this.checkAddressParam(e.address,r),this.checkAddressParam(e.address2,r)}checkCheckCommand(e,r){this.checkAddressParam(e.address,r),this.checkAddressParam(e.address2,r),e.value&&e.value2&&e.value2.value<=e.value.value&&r("error","\u6700\u5927\u503C\u5FC5\u987B\u5927\u4E8E\u6700\u5C0F\u503C",{node:e.value2,property:"value"})}checkAlarmCommand(e,r){Array.isArray(e.codes)&&(e.codes.forEach(n=>{(!Number.isInteger(n.value)||n.value<0)&&r("error","\u544A\u8B66\u7801\u5FC5\u987B\u662F\u975E\u8D1F\u6574\u6570",{node:n,property:"value"})}),Array.isArray(e.codes2)&&e.codes2.forEach(n=>{(!Number.isInteger(n.value)||n.value<0)&&r("error","\u544A\u8B66\u7801\u5FC5\u987B\u662F\u975E\u8D1F\u6574\u6570",{node:n,property:"value"})}))}checkActionCommand(e,r){e.code&&(!Number.isInteger(e.code.value)||e.code.value<0)&&r("error","\u52A8\u4F5C\u72B6\u6001\u7801\u5FC5\u987B\u662F\u975E\u8D1F\u6574\u6570",{node:e.code,property:"value"})}checkWatchCommand(e,r){this.checkAddressParam(e.address,r),e.value&&e.value2&&e.value2.value<=e.value.value&&r("error","\u6700\u5927\u503C\u5FC5\u987B\u5927\u4E8E\u6700\u5C0F\u503C",{node:e.value2,property:"value"})}checkUnwatchCommand(e,r){this.checkAddressParam(e.address,r)}checkDelayCommand(e,r){e.time&&(typeof e.time.value!="number"||isNaN(e.time.value)||e.time.value<=0)&&r("error","\u5EF6\u8FDF\u65F6\u95F4\uFF08\u79D2\uFF09\u5FC5\u987B\u662F\u6B63\u6570",{node:e.time,property:"value"})}checkScheduleCommand(e,r){e.time&&((typeof e.time.value!="number"||isNaN(e.time.value)||e.time.value<=0)&&r("error","\u5B9A\u65F6\u65F6\u95F4\uFF08\u79D2\uFF09\u5FC5\u987B\u662F\u6B63\u6570",{node:e.time,property:"value"}),e.commands.length===0&&r("error","\u4E0D\u5141\u8BB8\u4F7F\u7528\u7A7A\u7684\u5757\uFF0C\u53EF\u4EE5\u4F7F\u7528\u66F4\u7B80\u6D01\u7684delay\u547D\u4EE4\u66FF\u4EE3\uFF0C\u4F8B\u5982\uFF1Adelay "+e.time.value,{node:e}))}checkLoopCommand(e,r){e.time&&((typeof e.time.value!="number"||isNaN(e.time.value)||e.time.value<=0)&&r("error","\u5B9A\u65F6\u65F6\u95F4\uFF08\u79D2\uFF09\u5FC5\u987B\u662F\u6B63\u6570",{node:e.time,property:"value"}),e.commands.length===0&&r("error","\u4E0D\u5141\u8BB8\u4F7F\u7528\u7A7A\u7684\u5757\uFF0C\u53EF\u4EE5\u4F7F\u7528\u66F4\u7B80\u6D01\u7684delay\u547D\u4EE4\u66FF\u4EE3\uFF0C\u4F8B\u5982\uFF1Adelay "+e.time.value,{node:e}))}checkCountCommand(e,r){e.times&&((!Number.isInteger(e.times.value)||e.times.value<=0)&&r("error","\u91CD\u590D\u6B21\u6570\u5FC5\u987B\u662F\u6B63\u6574\u6570",{node:e.times,property:"value"}),e.commands.length===0&&r("error","\u4E0D\u5141\u8BB8\u4F7F\u7528\u7A7A\u7684\u5757",{node:e}))}};var uj={validation:{AcspecValidator:()=>new Mh}};function XA(t){let e=fo(UA(t),zA),r=fo(jA({shared:e}),VA,uj);return e.ServiceRegistry.register(r),KA(r),{shared:e,Acspec:r}}var{shared:YA,Acspec:lj}=XA(_u),dj=new uo(lj),JA=new Set(["address","address2","value","value2","time","times","code","codes","codes2"]),QA=new Set(["value","module"]);async function fj(t,e="file:///example.tcs"){let r={},n,i=YA.workspace.LangiumDocuments.createDocument(e,t),o=await dj.validateDocument(i),s=i.parseResult.value;if(!Array.isArray(o)||o.length===0){r.$type=s.$type,r.value=s.value,r.commands=[];for(let a of s.commands){let c={};if(Jy(a)||Yy(a)||Xy(a)){c.$type=a.$type,Jy(a)||Yy(a)?c.time=a.time.value:Xy(a)&&(c.times=a.times.value),c.commands=[];for(let u of a.commands){let l={};Object.keys(u).forEach(h=>{if(JA.has(h)){let p=u[h];h==="codes"||h==="codes2"?l[h]=p.map(y=>y.value):h==="address"||h==="address2"?l[h]=Array.from(QA).reduce((y,_)=>(_ in p&&(y[_]=p[_]),y),{}):l[h]=p.value}}),l.$type=u.$type,l.text=u.$cstNode.text,l.important=u.$cstNode.text.includes("!"),l.range=u.$cstNode.range,c.commands.push(l)}}else Object.keys(a).forEach(u=>{if(JA.has(u)){let l=a[u];u==="codes"||u==="codes2"?c[u]=l.map(h=>h.value):u==="address"||u==="address2"?c[u]=Array.from(QA).reduce((h,p)=>(p in l&&(h[p]=l[p]),h),{}):c[u]=l.value}}),c.$type=a.$type,c.text=a.$cstNode.text,c.important=a.$cstNode.text.includes("!"),c.range=a.$cstNode.range;r.commands.push(c)}}return YA.workspace.LangiumDocuments.deleteDocument(e),Object.keys(r).length>0&&(n=JSON.stringify(r)),{syntaxTree:n,diagnostics:o}}0&&(module.exports={getSyntaxTree});
|
|
161
|
+
`.includes(e[r-1])}matchWhitespace(e,r,n,i){var o;this.whitespaceRegExp.lastIndex=r;let s=this.whitespaceRegExp.exec(e);return{currIndentLevel:(o=s?.[0].length)!==null&&o!==void 0?o:0,prevIndentLevel:this.indentationStack.at(-1),match:s}}createIndentationTokenInstance(e,r,n,i){let o=this.getLineNumber(r,i);return qn(e,n,i,i+n.length,o,o,1,n.length)}getLineNumber(e,r){return e.substring(0,r).split(/\r\n|\r|\n/).length}indentMatcher(e,r,n,i){if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:o,prevIndentLevel:s,match:a}=this.matchWhitespace(e,r,n,i);return o<=s?null:(this.indentationStack.push(o),a)}dedentMatcher(e,r,n,i){var o,s,a,c;if(!this.isStartOfLine(e,r))return null;let{currIndentLevel:u,prevIndentLevel:l,match:h}=this.matchWhitespace(e,r,n,i);if(u>=l)return null;let p=this.indentationStack.lastIndexOf(u);if(p===-1)return this.diagnostics.push({severity:"error",message:`Invalid dedent level ${u} at offset: ${r}. Current indentation stack: ${this.indentationStack}`,offset:r,length:(s=(o=h?.[0])===null||o===void 0?void 0:o.length)!==null&&s!==void 0?s:0,line:this.getLineNumber(e,r),column:1}),null;let y=this.indentationStack.length-p-1,_=(c=(a=e.substring(0,r).match(/[\r\n]+$/))===null||a===void 0?void 0:a[0].length)!==null&&c!==void 0?c:1;for(let E=0;E<y;E++){let D=this.createIndentationTokenInstance(this.dedentTokenType,e,"",r-(_-1));n.push(D),this.indentationStack.pop()}return null}buildTerminalToken(e){let r=super.buildTerminalToken(e),{indentTokenName:n,dedentTokenName:i,whitespaceTokenName:o}=this.options;return r.name===n?this.indentTokenType:r.name===i?this.dedentTokenType:r.name===o?fi({name:o,pattern:this.whitespaceRegExp,group:Ze.SKIPPED}):r}flushRemainingDedents(e){let r=[];for(;this.indentationStack.length>1;)r.push(this.createIndentationTokenInstance(this.dedentTokenType,e,"",e.length)),this.indentationStack.pop();return this.indentationStack=[0],r}},Km=class extends lo{constructor(e){if(super(e),e.parser.TokenBuilder instanceof Vd)this.indentationTokenBuilder=e.parser.TokenBuilder;else throw new Error("IndentationAwareLexer requires an accompanying IndentationAwareTokenBuilder")}tokenize(e,r=Wd){let n=super.tokenize(e),i=n.report;r?.mode==="full"&&n.tokens.push(...i.remainingDedents),i.remainingDedents=[];let{indentTokenType:o,dedentTokenType:s}=this.indentationTokenBuilder,a=o.tokenTypeIdx,c=s.tokenTypeIdx,u=[],l=n.tokens.length-1;for(let h=0;h<l;h++){let p=n.tokens[h],y=n.tokens[h+1];if(p.tokenTypeIdx===a&&y.tokenTypeIdx===c){h++;continue}u.push(p)}return l>=0&&u.push(n.tokens[l]),n.tokens=u,n}};var Re={};Kn(Re,{AstUtils:()=>al,BiMap:()=>so,Cancellation:()=>J,ContextCache:()=>ao,CstUtils:()=>tl,DONE_RESULT:()=>zt,Deferred:()=>sr,Disposable:()=>xi,DisposableCache:()=>pa,DocumentCache:()=>jd,EMPTY_STREAM:()=>Wa,ErrorWithLocation:()=>Fi,GrammarUtils:()=>fl,MultiMap:()=>Yr,OperationCancelled:()=>Rn,Reduction:()=>ko,RegExpUtils:()=>ll,SimpleCache:()=>Jc,StreamImpl:()=>Rr,TreeStreamImpl:()=>rn,URI:()=>vt,UriUtils:()=>ge,WorkspaceCache:()=>ma,assertUnreachable:()=>on,delayNextTick:()=>Fm,interruptAndCheck:()=>ot,isOperationCancelled:()=>bn,loadGrammarFromJson:()=>Xd,setInterruptionPeriod:()=>z_,startCancelableOperation:()=>Fd,stream:()=>ce});ve(Re,Ve);var Kd=class{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}},_u={fileSystemProvider:()=>new Kd};var WF={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},BF={AstReflection:()=>new fs};function HF(){let t=fo(Ru(_u),BF),e=fo(Tu({shared:t}),WF);return t.ServiceRegistry.register(e),e}function Xd(t){var e;let r=HF(),n=r.serializer.JsonSerializer.deserialize(t);return r.shared.workspace.LangiumDocumentFactory.fromModel(n,vt.parse(`memory://${(e=n.name)!==null&&e!==void 0?e:"grammar"}.langium`)),n}ve(dt,Re);var Fa=Nr(kn(),1);function Uy(t,e){let r={stacks:t,tokens:e};return Jq(r),r.stacks.flat().forEach(i=>{i.property=void 0}),wA(r.stacks).map(i=>i[i.length-1])}function Wy(t){let{next:e,cardinalities:r,visited:n,plus:i}=t,o=[],s=e.feature;if(n.has(s))return[];Pr(s)||n.add(s);let a,c=s;for(;c.$container;)if(Pr(c.$container)){a=c.$container;break}else if(qi(c.$container))c=c.$container;else break;if(bp(c.cardinality)){let u=Ma({next:{feature:c,type:e.type},cardinalities:r,visited:n,plus:i});for(let l of u)i.add(l.feature);o.push(...u)}if(a){let u=a.elements.indexOf(c);u!==void 0&&u<a.elements.length-1&&o.push(...AA({feature:a,type:e.type},u+1,r,n,i)),o.every(l=>Gi(l.feature.cardinality,l.feature)||Gi(r.get(l.feature))||i.has(l.feature))&&o.push(...Wy({next:{feature:a,type:e.type},cardinalities:r,visited:n,plus:i}))}return o}function lh(t){return Ge(t)&&(t={feature:t}),Ma({next:t,cardinalities:new Map,visited:new Set,plus:new Set})}function Ma(t){var e,r,n;let{next:i,cardinalities:o,visited:s,plus:a}=t;if(i===void 0)return[];let{feature:c,type:u}=i;if(Pr(c))return s.has(c)?[]:(s.add(c),AA(i,0,o,s,a).map(l=>uh(l,c.cardinality,o)));if(hs(c)||ps(c))return c.elements.flatMap(l=>Ma({next:{feature:l,type:u,property:i.property},cardinalities:o,visited:s,plus:a})).map(l=>uh(l,c.cardinality,o));if(Vt(c)){let l={feature:c.terminal,type:u,property:(e=i.property)!==null&&e!==void 0?e:c.feature};return Ma({next:l,cardinalities:o,visited:s,plus:a}).map(h=>uh(h,c.cardinality,o))}else{if(Vr(c))return Wy({next:{feature:c,type:zi(c),property:(r=i.property)!==null&&r!==void 0?r:c.feature},cardinalities:o,visited:s,plus:a});if(ur(c)&&Ye(c.rule.ref)){let l=c.rule.ref,h={feature:l.definition,type:l.fragment||l.dataType?void 0:(n=an(l))!==null&&n!==void 0?n:l.name,property:i.property};return Ma({next:h,cardinalities:o,visited:s,plus:a}).map(p=>uh(p,c.cardinality,o))}else return[i]}}function uh(t,e,r){return r.set(t.feature,e),t}function AA(t,e,r,n,i){var o;let s=[],a;for(;e<t.feature.elements.length&&(a={feature:t.feature.elements[e++],type:t.type},s.push(...Ma({next:a,cardinalities:r,visited:n,plus:i})),!!Gi((o=a.feature.cardinality)!==null&&o!==void 0?o:r.get(a.feature),a.feature)););return s}function Jq(t){for(let e of t.tokens){let r=wA(t.stacks,e);t.stacks=r}}function wA(t,e){let r=[];for(let n of t)r.push(...Qq(n,e));return r}function Qq(t,e){let r=new Map,n=new Set(t.map(o=>o.feature).filter(Zq)),i=[];for(;t.length>0;){let o=t.pop(),s=Wy({next:o,cardinalities:r,plus:n,visited:new Set}).filter(a=>e?By(a.feature,e):!0);for(let a of s)i.push([...t,a]);if(!s.every(a=>Gi(a.feature.cardinality,a.feature)||Gi(r.get(a.feature))))break}return i}function Zq(t){if(t.cardinality==="+")return!0;let e=_r(t,Vt);return!!(e&&e.cardinality==="+")}function By(t,e){if(Et(t))return t.value===e.image;if(ur(t))return ej(t.rule.ref,e);if(br(t)){let r=ac(t);if(r)return By(r,e)}return!1}function ej(t,e){return Ye(t)?lh(t.definition).some(n=>By(n.feature,e)):er(t)?Jn(t).test(e.image):!1}function NA(t){let e=Array.from(new Set(t.flatMap(n=>{var i;return(i=n?.triggerCharacters)!==null&&i!==void 0?i:[]}))),r=Array.from(new Set(t.flatMap(n=>{var i;return(i=n?.allCommitCharacters)!==null&&i!==void 0?i:[]})));return{triggerCharacters:e.length>0?e:void 0,allCommitCharacters:r.length>0?r:void 0}}var dh=class{constructor(e){this.scopeProvider=e.references.ScopeProvider,this.grammar=e.Grammar,this.completionParser=e.parser.CompletionParser,this.nameProvider=e.references.NameProvider,this.lexer=e.parser.Lexer,this.nodeKindProvider=e.shared.lsp.NodeKindProvider,this.fuzzyMatcher=e.shared.lsp.FuzzyMatcher,this.grammarConfig=e.parser.GrammarConfig,this.astReflection=e.shared.AstReflection,this.documentationProvider=e.documentation.DocumentationProvider}async getCompletion(e,r,n){let i=[],o=this.buildContexts(e,r.position),s=(u,l)=>{let h=this.fillCompletionItem(u,l);h&&i.push(h)},a=u=>Et(u.feature)?u.feature.value:u.feature,c=[];for(let u of o)if(await Promise.all(ce(u.features).distinct(a).exclude(c).map(l=>this.completionFor(u,l,s))),c.push(...u.features),!this.continueCompletion(i))break;return Fa.CompletionList.create(this.deduplicateItems(i),!0)}deduplicateItems(e){return ce(e).distinct(r=>`${r.kind}_${r.label}_${r.detail}`).toArray()}findFeaturesAt(e,r){let n=e.getText({start:Fa.Position.create(0,0),end:e.positionAt(r)}),i=this.completionParser.parse(n),o=i.tokens;if(i.tokenIndex===0){let c=oc(this.grammar),u=lh({feature:c.definition,type:an(c)});return o.length>0?(o.shift(),Uy(u.map(l=>[l]),o)):u}let s=[...o].splice(i.tokenIndex);return Uy([i.elementStack.map(c=>({feature:c}))],s)}*buildContexts(e,r){var n,i;let o=e.parseResult.value.$cstNode;if(!o)return;let s=e.textDocument,a=s.getText(),c=s.offsetAt(r),u={document:e,textDocument:s,offset:c,position:r},l=this.findDataTypeRuleStart(o,c);if(l){let[x,g]=l,A=(n=Ha(o,x))===null||n===void 0?void 0:n.astNode;yield Object.assign(Object.assign({},u),{node:A,tokenOffset:x,tokenEndOffset:g,features:this.findFeaturesAt(s,x)})}let{nextTokenStart:h,nextTokenEnd:p,previousTokenStart:y,previousTokenEnd:_}=this.backtrackToAnyToken(a,c),E=h;c<=h&&y!==void 0&&(E=y);let D=(i=Ha(o,E))===null||i===void 0?void 0:i.astNode,w=!0;if(y!==void 0&&_!==void 0&&_===c&&(yield Object.assign(Object.assign({},u),{node:D,tokenOffset:y,tokenEndOffset:_,features:this.findFeaturesAt(s,y)}),w=this.performNextTokenCompletion(e,a.substring(y,_),y,_),w&&(yield Object.assign(Object.assign({},u),{node:D,tokenOffset:_,tokenEndOffset:_,features:this.findFeaturesAt(s,_)}))),D)w&&(yield Object.assign(Object.assign({},u),{node:D,tokenOffset:h,tokenEndOffset:p,features:this.findFeaturesAt(s,h)}));else{let x=oc(this.grammar);if(!x)throw new Error("Missing entry parser rule");yield Object.assign(Object.assign({},u),{tokenOffset:h,tokenEndOffset:p,features:lh(x.definition)})}}performNextTokenCompletion(e,r,n,i){return/\P{L}$/u.test(r)}findDataTypeRuleStart(e,r){var n,i;let o=cr(e,r,this.grammarConfig.nameRegexp),s=!!(!((n=_r(o?.grammarSource,Ye))===null||n===void 0)&&n.dataType);if(s){for(;s;)o=o?.container,s=!!(!((i=_r(o?.grammarSource,Ye))===null||i===void 0)&&i.dataType);if(o)return[o.offset,o.end]}}continueCompletion(e){return e.length===0}backtrackToAnyToken(e,r){let n=this.lexer.tokenize(e).tokens;if(n.length===0)return{nextTokenStart:r,nextTokenEnd:r};let i;for(let o of n){if(o.startOffset>=r)return{nextTokenStart:r,nextTokenEnd:r,previousTokenStart:i?i.startOffset:void 0,previousTokenEnd:i?i.endOffset+1:void 0};if(o.endOffset>=r)return{nextTokenStart:o.startOffset,nextTokenEnd:o.endOffset+1,previousTokenStart:i?i.startOffset:void 0,previousTokenEnd:i?i.endOffset+1:void 0};i=o}return{nextTokenStart:r,nextTokenEnd:r,previousTokenStart:i?i.startOffset:void 0,previousTokenEnd:i?i.endOffset+1:void 0}}completionFor(e,r,n){if(Et(r.feature))return this.completionForKeyword(e,r.feature,n);if(br(r.feature)&&e.node)return this.completionForCrossReference(e,r,n)}completionForCrossReference(e,r,n){let i=_r(r.feature,Vt),o=e.node;if(i&&o){r.type&&(o={$type:r.type,$container:o,$containerProperty:r.property},ec(this.astReflection,o));let s={reference:{$refText:""},container:o,property:i.feature};try{for(let a of this.getReferenceCandidates(s,e))n(e,this.createReferenceCompletionItem(a))}catch(a){console.error(a)}}}getReferenceCandidates(e,r){return this.scopeProvider.getScope(e).getAllElements()}createReferenceCompletionItem(e){let r=this.nodeKindProvider.getCompletionItemKind(e),n=this.getReferenceDocumentation(e);return{nodeDescription:e,kind:r,documentation:n,detail:e.type,sortText:"0"}}getReferenceDocumentation(e){if(!e.node)return;let r=this.documentationProvider.getDocumentation(e.node);if(r)return{kind:"markdown",value:r}}completionForKeyword(e,r,n){this.filterKeyword(e,r)&&n(e,{label:r.value,kind:this.getKeywordCompletionItemKind(r),detail:"Keyword",sortText:"1"})}getKeywordCompletionItemKind(e){return Fa.CompletionItemKind.Keyword}filterKeyword(e,r){return/\p{L}/u.test(r.value)}fillCompletionItem(e,r){var n,i;let o;if(typeof r.label=="string")o=r.label;else if("node"in r){let u=this.nameProvider.getName(r.node);if(!u)return;o=u}else if("nodeDescription"in r)o=r.nodeDescription.name;else return;let s;typeof((n=r.textEdit)===null||n===void 0?void 0:n.newText)=="string"?s=r.textEdit.newText:typeof r.insertText=="string"?s=r.insertText:s=o;let a=(i=r.textEdit)!==null&&i!==void 0?i:this.buildCompletionTextEdit(e,o,s);return a?{additionalTextEdits:r.additionalTextEdits,command:r.command,commitCharacters:r.commitCharacters,data:r.data,detail:r.detail,documentation:r.documentation,filterText:r.filterText,insertText:r.insertText,insertTextFormat:r.insertTextFormat,insertTextMode:r.insertTextMode,kind:r.kind,labelDetails:r.labelDetails,preselect:r.preselect,sortText:r.sortText,tags:r.tags,textEditText:r.textEditText,textEdit:a,label:o}:void 0}buildCompletionTextEdit(e,r,n){let o=e.textDocument.getText().substring(e.tokenOffset,e.offset);if(this.fuzzyMatcher.match(o,r)){let s=e.textDocument.positionAt(e.tokenOffset),a=e.position;return{newText:n,range:{start:s,end:a}}}else return}};var PA=Nr(kn(),1);var fh=class{constructor(e){this.nameProvider=e.references.NameProvider,this.references=e.references.References,this.grammarConfig=e.parser.GrammarConfig}getDefinition(e,r,n){let i=e.parseResult.value;if(i.$cstNode){let o=i.$cstNode,s=cr(o,e.textDocument.offsetAt(r.position),this.grammarConfig.nameRegexp);if(s)return this.collectLocationLinks(s,r)}}collectLocationLinks(e,r){var n;let i=this.findLink(e);if(i)return[PA.LocationLink.create(i.targetDocument.textDocument.uri,((n=i.target.astNode.$cstNode)!==null&&n!==void 0?n:i.target).range,i.target.range,i.source.range)]}findLink(e){let r=this.references.findDeclarationNode(e);if(r?.astNode){let n=Rt(r.astNode);if(r&&n)return{source:e,target:r,targetDocument:n}}}};var IA=Nr(kn(),1);var hh=class{constructor(e){this.references=e.references.References,this.nameProvider=e.references.NameProvider,this.grammarConfig=e.parser.GrammarConfig}getDocumentHighlight(e,r,n){let i=e.parseResult.value.$cstNode;if(!i)return;let o=cr(i,e.textDocument.offsetAt(r.position),this.grammarConfig.nameRegexp);if(!o)return;let s=this.references.findDeclaration(o);if(s){let a=ge.equals(Rt(s).uri,e.uri),c={documentUri:e.uri,includeDeclaration:a};return this.references.findReferences(s,c).map(l=>this.createDocumentHighlight(l)).toArray()}}createDocumentHighlight(e){return IA.DocumentHighlight.create(e.segment.range)}};var ph=class{constructor(e){this.nameProvider=e.references.NameProvider,this.nodeKindProvider=e.shared.lsp.NodeKindProvider}getSymbols(e,r,n){return this.getSymbol(e,e.parseResult.value)}getSymbol(e,r){let n=r.$cstNode,i=this.nameProvider.getNameNode(r);if(i&&n){let o=this.nameProvider.getName(r);return[{kind:this.nodeKindProvider.getSymbolKind(r),name:o||i.text,range:n.range,selectionRange:i.range,children:this.getChildSymbols(e,r)}]}else return this.getChildSymbols(e,r)||[]}getChildSymbols(e,r){let n=[];for(let i of Ui(r)){let o=this.getSymbol(e,i);n.push(...o)}if(n.length>0)return n}};var qu=Nr(kn(),1);var mh=class{constructor(e){this.workspaceManager=e.workspace.WorkspaceManager,this.documentBuilder=e.workspace.DocumentBuilder,this.workspaceLock=e.workspace.WorkspaceLock,this.serviceRegistry=e.ServiceRegistry;let r=!1;e.lsp.LanguageServer.onInitialize(n=>{var i,o;r=!!(!((o=(i=n.capabilities.workspace)===null||i===void 0?void 0:i.didChangeWatchedFiles)===null||o===void 0)&&o.dynamicRegistration)}),e.lsp.LanguageServer.onInitialized(n=>{r&&this.registerFileWatcher(e)})}registerFileWatcher(e){let r=[],n=ce(e.ServiceRegistry.all).flatMap(o=>o.LanguageMetaData.fileExtensions).map(o=>o.startsWith(".")?o.substring(1):o).distinct().toArray();n.length>0&&r.push({globPattern:n.length===1?`**/*.${n[0]}`:`**/*.{${n.join(",")}}`});let i=ce(e.ServiceRegistry.all).flatMap(o=>{var s;return(s=o.LanguageMetaData.fileNames)!==null&&s!==void 0?s:[]}).distinct().toArray();if(i.length>0&&r.push({globPattern:i.length===1?`**/${i[0]}`:`**/{${i.join(",")}}`}),r.length>0){let o=e.lsp.Connection,s={watchers:r};o?.client.register(qu.DidChangeWatchedFilesNotification.type,s)}}fireDocumentUpdate(e,r){e=e.filter(n=>this.serviceRegistry.hasServices(n)),this.workspaceManager.ready.then(()=>{this.workspaceLock.write(n=>this.documentBuilder.update(e,r,n))}).catch(n=>{console.error("Workspace initialization failed. Could not perform document update.",n)})}didChangeContent(e){this.fireDocumentUpdate([vt.parse(e.document.uri)],[])}didChangeWatchedFiles(e){let r=ce(e.changes).filter(i=>i.type!==qu.FileChangeType.Deleted).distinct(i=>i.uri).map(i=>vt.parse(i.uri)).toArray(),n=ce(e.changes).filter(i=>i.type===qu.FileChangeType.Deleted).distinct(i=>i.uri).map(i=>vt.parse(i.uri)).toArray();this.fireDocumentUpdate(r,n)}};var ju=Nr(kn(),1);var gh=class{constructor(e){this.commentNames=e.parser.GrammarConfig.multilineCommentRules}getFoldingRanges(e,r,n){let i=[],o=s=>i.push(s);return this.collectFolding(e,o),i}collectFolding(e,r){var n;let i=(n=e.parseResult)===null||n===void 0?void 0:n.value;if(i){if(this.shouldProcessContent(i)){let o=Cr(i).iterator(),s;do if(s=o.next(),!s.done){let a=s.value;this.shouldProcess(a)&&this.collectObjectFolding(e,a,r),this.shouldProcessContent(a)||o.prune()}while(!s.done)}this.collectCommentFolding(e,i,r)}}shouldProcess(e){return!0}shouldProcessContent(e){return!0}collectObjectFolding(e,r,n){let i=r.$cstNode;if(i){let o=this.toFoldingRange(e,i);o&&n(o)}}collectCommentFolding(e,r,n){let i=r.$cstNode;if(i){for(let o of qh(i))if(this.commentNames.includes(o.tokenType.name)){let s=this.toFoldingRange(e,o,ju.FoldingRangeKind.Comment);s&&n(s)}}}toFoldingRange(e,r,n){let i=r.range,o=i.start,s=i.end;if(!(s.line-o.line<2))return this.includeLastFoldingLine(r,n)||(s=e.textDocument.positionAt(e.textDocument.offsetAt({line:s.line,character:0})-1)),ju.FoldingRange.create(o.line,s.line,o.character,s.character,n)}includeLastFoldingLine(e,r){if(r===ju.FoldingRangeKind.Comment)return!1;let n=e.text,i=n.charAt(n.length-1);return!(i==="}"||i===")"||i==="]")}};var yh=class{match(e,r){if(e.length===0)return!0;let n=!1,i,o=0,s=r.length;for(let a=0;a<s;a++){let c=r.charCodeAt(a),u=e.charCodeAt(o);if((c===u||this.toUpperCharCode(c)===this.toUpperCharCode(u))&&(n||(n=i===void 0||this.isWordTransition(i,c)),n&&o++,o===e.length))return!0;i=c}return!1}isWordTransition(e,r){return DA<=e&&e<=OA&&tj<=r&&r<=rj||e===LA&&r!==LA}toUpperCharCode(e){return DA<=e&&e<=OA?e-32:e}},DA=97,OA=122,tj=65,rj=90,LA=95;var Hy=class{constructor(e){this.references=e.references.References,this.grammarConfig=e.parser.GrammarConfig}getHoverContent(e,r){var n,i;let o=(i=(n=e.parseResult)===null||n===void 0?void 0:n.value)===null||i===void 0?void 0:i.$cstNode;if(o){let s=e.textDocument.offsetAt(r.position),a=cr(o,s,this.grammarConfig.nameRegexp);if(a&&a.offset+a.length>s){let c=this.references.findDeclaration(a);if(c)return this.getAstNodeHoverContent(c);if(Et(a.grammarSource))return this.getKeywordHoverContent(a.grammarSource)}}}getKeywordHoverContent(e){var r;let n=eu(e)?e.$comment:void 0;if(n||(n=(r=Ba(e.$cstNode,["ML_COMMENT"]))===null||r===void 0?void 0:r.text),n&&pu(n)){let i=hu(n).toMarkdown();if(i)return{contents:{kind:"markdown",value:i}}}}},vh=class extends Hy{constructor(e){super(e),this.documentationProvider=e.documentation.DocumentationProvider}getAstNodeHoverContent(e){let r=this.documentationProvider.getDocumentation(e);if(r)return{contents:{kind:"markdown",value:r}}}};var Gn=Nr(ht(),1);var fe=Nr(kn(),1);var nj={[fe.SemanticTokenTypes.class]:0,[fe.SemanticTokenTypes.comment]:1,[fe.SemanticTokenTypes.enum]:2,[fe.SemanticTokenTypes.enumMember]:3,[fe.SemanticTokenTypes.event]:4,[fe.SemanticTokenTypes.function]:5,[fe.SemanticTokenTypes.interface]:6,[fe.SemanticTokenTypes.keyword]:7,[fe.SemanticTokenTypes.macro]:8,[fe.SemanticTokenTypes.method]:9,[fe.SemanticTokenTypes.modifier]:10,[fe.SemanticTokenTypes.namespace]:11,[fe.SemanticTokenTypes.number]:12,[fe.SemanticTokenTypes.operator]:13,[fe.SemanticTokenTypes.parameter]:14,[fe.SemanticTokenTypes.property]:15,[fe.SemanticTokenTypes.regexp]:16,[fe.SemanticTokenTypes.string]:17,[fe.SemanticTokenTypes.struct]:18,[fe.SemanticTokenTypes.type]:19,[fe.SemanticTokenTypes.typeParameter]:20,[fe.SemanticTokenTypes.variable]:21,[fe.SemanticTokenTypes.decorator]:22},ij={[fe.SemanticTokenModifiers.abstract]:1,[fe.SemanticTokenModifiers.async]:2,[fe.SemanticTokenModifiers.declaration]:4,[fe.SemanticTokenModifiers.defaultLibrary]:8,[fe.SemanticTokenModifiers.definition]:16,[fe.SemanticTokenModifiers.deprecated]:32,[fe.SemanticTokenModifiers.documentation]:64,[fe.SemanticTokenModifiers.modification]:128,[fe.SemanticTokenModifiers.readonly]:256,[fe.SemanticTokenModifiers.static]:512},dre={legend:{tokenTypes:Object.keys(nj),tokenModifiers:Object.keys(ij)},full:{delta:!0},range:!0};function FA(t){let e=[],r=[],n=!0,i=!0,o=!0;for(let s of t)s&&(s.legend.tokenTypes.forEach((a,c)=>{let u=e[c];if(u&&u!==a)throw new Error(`Cannot merge '${u}' and '${a}' token types. They use the same index ${c}.`);e[c]=a}),s.legend.tokenModifiers.forEach((a,c)=>{let u=r[c];if(u&&u!==a)throw new Error(`Cannot merge '${u}' and '${a}' token modifier. They use the same index ${c}.`);r[c]=a}),s.full?typeof s.full=="object"&&!s.full.delta&&(i=!1):n=!1,s.range||(o=!1));return{legend:{tokenTypes:e,tokenModifiers:r},full:n&&{delta:i},range:o}}var MA;(function(t){function e(n,i,o){let s=new Map;Object.entries(i).forEach(([u,l])=>s.set(l,u));let a=0,c=0;return r(n.data,5).map(u=>{a+=u[0],u[0]!==0&&(c=0),c+=u[1];let l=u[2];return{offset:o.textDocument.offsetAt({line:a,character:c}),tokenType:s.get(u[3]),tokenModifiers:u[4],text:o.textDocument.getText({start:{line:a,character:c},end:{line:a,character:c+l}})}})}t.decode=e;function r(n,i){let o=[];for(let s=0;s<n.length;s+=i){let a=n.slice(s,s+i);o.push(a)}return o}})(MA||(MA={}));function $A(t){let e=[],r=[];t.forEach(i=>{i?.triggerCharacters&&e.push(...i.triggerCharacters),i?.retriggerCharacters&&r.push(...i.retriggerCharacters)});let n={triggerCharacters:e.length>0?Array.from(new Set(e)).sort():void 0,retriggerCharacters:r.length>0?Array.from(new Set(r)).sort():void 0};return n.triggerCharacters?n:void 0}var xh=class{constructor(e){this.onInitializeEmitter=new Gn.Emitter,this.onInitializedEmitter=new Gn.Emitter,this.services=e}get onInitialize(){return this.onInitializeEmitter.event}get onInitialized(){return this.onInitializedEmitter.event}async initialize(e){return this.eagerLoadServices(),this.fireInitializeOnDefaultServices(e),this.onInitializeEmitter.fire(e),this.onInitializeEmitter.dispose(),this.buildInitializeResult(e)}eagerLoadServices(){bu(this.services),this.services.ServiceRegistry.all.forEach(e=>bu(e))}hasService(e){return this.services.ServiceRegistry.all.some(n=>e(n)!==void 0)}buildInitializeResult(e){var r,n,i,o;let s=this.services.lsp.DocumentUpdateHandler,a=(r=this.services.lsp.FileOperationHandler)===null||r===void 0?void 0:r.fileOperationOptions,c=this.services.ServiceRegistry.all,u=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.Formatter}),l=c.map(B=>{var N,ke;return(ke=(N=B.lsp)===null||N===void 0?void 0:N.Formatter)===null||ke===void 0?void 0:ke.formatOnTypeOptions}).find(B=>!!B),h=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.CodeActionProvider}),p=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.SemanticTokenProvider}),y=FA(c.map(B=>{var N,ke;return(ke=(N=B.lsp)===null||N===void 0?void 0:N.SemanticTokenProvider)===null||ke===void 0?void 0:ke.semanticTokensOptions})),_=(i=(n=this.services.lsp)===null||n===void 0?void 0:n.ExecuteCommandHandler)===null||i===void 0?void 0:i.commands,E=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DocumentLinkProvider}),D=$A(c.map(B=>{var N,ke;return(ke=(N=B.lsp)===null||N===void 0?void 0:N.SignatureHelp)===null||ke===void 0?void 0:ke.signatureHelpOptions})),w=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.TypeProvider}),x=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.ImplementationProvider}),g=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.CompletionProvider}),A=NA(c.map(B=>{var N,ke;return(ke=(N=B.lsp)===null||N===void 0?void 0:N.CompletionProvider)===null||ke===void 0?void 0:ke.completionOptions})),M=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.ReferencesProvider}),te=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DocumentSymbolProvider}),_e=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DefinitionProvider}),Se=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DocumentHighlightProvider}),Nt=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.FoldingRangeProvider}),xt=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.HoverProvider}),$=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.RenameProvider}),I=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.CallHierarchyProvider}),z=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.TypeHierarchyProvider}),W=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.CodeLensProvider}),le=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.DeclarationProvider}),Z=this.hasService(B=>{var N;return(N=B.lsp)===null||N===void 0?void 0:N.InlayHintProvider}),Q=(o=this.services.lsp)===null||o===void 0?void 0:o.WorkspaceSymbolProvider;return{capabilities:{workspace:{workspaceFolders:{supported:!0},fileOperations:a},executeCommandProvider:_&&{commands:_},textDocumentSync:{change:Gn.TextDocumentSyncKind.Incremental,openClose:!0,save:!!s.didSaveDocument,willSave:!!s.willSaveDocument,willSaveWaitUntil:!!s.willSaveDocumentWaitUntil},completionProvider:g?A:void 0,referencesProvider:M,documentSymbolProvider:te,definitionProvider:_e,typeDefinitionProvider:w,documentHighlightProvider:Se,codeActionProvider:h,documentFormattingProvider:u,documentRangeFormattingProvider:u,documentOnTypeFormattingProvider:l,foldingRangeProvider:Nt,hoverProvider:xt,renameProvider:$?{prepareProvider:!0}:void 0,semanticTokensProvider:p?y:void 0,signatureHelpProvider:D,implementationProvider:x,callHierarchyProvider:I?{}:void 0,typeHierarchyProvider:z?{}:void 0,documentLinkProvider:E?{resolveProvider:!1}:void 0,codeLensProvider:W?{resolveProvider:!1}:void 0,declarationProvider:le,inlayHintProvider:Z?{resolveProvider:!1}:void 0,workspaceSymbolProvider:Q?{resolveProvider:!!Q.resolveSymbol}:void 0}}}initialized(e){this.fireInitializedOnDefaultServices(e),this.onInitializedEmitter.fire(e),this.onInitializedEmitter.dispose()}fireInitializeOnDefaultServices(e){this.services.workspace.ConfigurationProvider.initialize(e),this.services.workspace.WorkspaceManager.initialize(e)}fireInitializedOnDefaultServices(e){let r=this.services.lsp.Connection,n=r?Object.assign(Object.assign({},e),{register:i=>r.client.register(Gn.DidChangeConfigurationNotification.type,i),fetchConfiguration:i=>r.workspace.getConfiguration(i)}):e;this.services.workspace.ConfigurationProvider.initialized(n).catch(i=>console.error("Error in ConfigurationProvider initialization:",i)),this.services.workspace.WorkspaceManager.initialized(e).catch(i=>console.error("Error in WorkspaceManager initialization:",i))}};var Rh=Nr(kn(),1),Th=class{getSymbolKind(e){return Rh.SymbolKind.Field}getCompletionItemKind(e){return Rh.CompletionItemKind.Reference}};var qA=Nr(kn(),1);var bh=class{constructor(e){this.nameProvider=e.references.NameProvider,this.references=e.references.References,this.grammarConfig=e.parser.GrammarConfig}findReferences(e,r,n){let i=e.parseResult.value.$cstNode;if(!i)return[];let o=cr(i,e.textDocument.offsetAt(r.position),this.grammarConfig.nameRegexp);return o?this.getReferences(o,r,e):[]}getReferences(e,r,n){let i=[],o=this.references.findDeclaration(e);if(o){let s={includeDeclaration:r.context.includeDeclaration};this.references.findReferences(o,s).forEach(a=>{i.push(qA.Location.create(a.sourceUri.toString(),a.segment.range))})}return i}};var _h=class{constructor(e){this.references=e.references.References,this.nameProvider=e.references.NameProvider,this.grammarConfig=e.parser.GrammarConfig}async rename(e,r,n){let i={},o=e.parseResult.value.$cstNode;if(!o)return;let s=e.textDocument.offsetAt(r.position),a=cr(o,s,this.grammarConfig.nameRegexp);if(!a)return;let c=this.references.findDeclaration(a);if(!c)return;let u={onlyLocal:!1,includeDeclaration:!0};return this.references.findReferences(c,u).forEach(h=>{let p=gi.replace(h.segment.range,r.newName),y=h.sourceUri.toString();i[y]?i[y].push(p):i[y]=[p]}),{changes:i}}prepareRename(e,r,n){return this.renameNodeRange(e,r.position)}renameNodeRange(e,r){let n=e.parseResult.value.$cstNode,i=e.textDocument.offsetAt(r);if(n&&i){let o=cr(n,i,this.grammarConfig.nameRegexp);if(!o)return;if(this.references.findDeclaration(o)||this.isNameNode(o))return o.range}}isNameNode(e){return e?.astNode&&qd(e.astNode)&&e===this.nameProvider.getNameNode(e.astNode)}};var Ch=class{constructor(e){this.indexManager=e.workspace.IndexManager,this.nodeKindProvider=e.lsp.NodeKindProvider,this.fuzzyMatcher=e.lsp.FuzzyMatcher}async getSymbols(e,r=J.CancellationToken.None){let n=[],i=e.query.toLowerCase();for(let o of this.indexManager.allElements())if(await ot(r),this.fuzzyMatcher.match(i,o.name)){let s=this.getWorkspaceSymbol(o);s&&n.push(s)}return n}getWorkspaceSymbol(e){let r=e.nameSegment;if(r)return{kind:this.nodeKindProvider.getSymbolKind(e),name:e.name,location:{range:r.range,uri:e.documentUri.toString()}}}};var $t=Nr(kn(),1);var Uu=class{constructor(e){this._configuration=e,this._syncedDocuments=new Map,this._onDidChangeContent=new $t.Emitter,this._onDidOpen=new $t.Emitter,this._onDidClose=new $t.Emitter,this._onDidSave=new $t.Emitter,this._onWillSave=new $t.Emitter}get onDidOpen(){return this._onDidOpen.event}get onDidChangeContent(){return this._onDidChangeContent.event}get onWillSave(){return this._onWillSave.event}onWillSaveWaitUntil(e){this._willSaveWaitUntil=e}get onDidSave(){return this._onDidSave.event}get onDidClose(){return this._onDidClose.event}get(e){return this._syncedDocuments.get(ge.normalize(e))}set(e){let r=ge.normalize(e.uri),n=!0;this._syncedDocuments.has(r)&&(n=!1),this._syncedDocuments.set(r,e);let i=Object.freeze({document:e});return this._onDidOpen.fire(i),this._onDidChangeContent.fire(i),n}delete(e){let r=ge.normalize(typeof e=="object"&&"uri"in e?e.uri:e),n=this._syncedDocuments.get(r);n!==void 0&&(this._syncedDocuments.delete(r),this._onDidClose.fire(Object.freeze({document:n})))}all(){return Array.from(this._syncedDocuments.values())}keys(){return Array.from(this._syncedDocuments.keys())}listen(e){e.__textDocumentSync=$t.TextDocumentSyncKind.Incremental;let r=[];return r.push(e.onDidOpenTextDocument(n=>{let i=n.textDocument,o=ge.normalize(i.uri),s=this._configuration.create(o,i.languageId,i.version,i.text);this._syncedDocuments.set(o,s);let a=Object.freeze({document:s});this._onDidOpen.fire(a),this._onDidChangeContent.fire(a)})),r.push(e.onDidChangeTextDocument(n=>{let i=n.textDocument,o=n.contentChanges;if(o.length===0)return;let{version:s}=i;if(s==null)throw new Error(`Received document change event for ${i.uri} without valid version identifier`);let a=ge.normalize(i.uri),c=this._syncedDocuments.get(a);c!==void 0&&(c=this._configuration.update(c,o,s),this._syncedDocuments.set(a,c),this._onDidChangeContent.fire(Object.freeze({document:c})))})),r.push(e.onDidCloseTextDocument(n=>{let i=ge.normalize(n.textDocument.uri),o=this._syncedDocuments.get(i);o!==void 0&&(this._syncedDocuments.delete(i),this._onDidClose.fire(Object.freeze({document:o})))})),r.push(e.onWillSaveTextDocument(n=>{let i=this._syncedDocuments.get(ge.normalize(n.textDocument.uri));i!==void 0&&this._onWillSave.fire(Object.freeze({document:i,reason:n.reason}))})),r.push(e.onWillSaveTextDocumentWaitUntil((n,i)=>{let o=this._syncedDocuments.get(ge.normalize(n.textDocument.uri));return o!==void 0&&this._willSaveWaitUntil?this._willSaveWaitUntil(Object.freeze({document:o,reason:n.reason}),i):[]})),r.push(e.onDidSaveTextDocument(n=>{let i=this._syncedDocuments.get(ge.normalize(n.textDocument.uri));i!==void 0&&this._onDidSave.fire(Object.freeze({document:i}))})),$t.Disposable.create(()=>{r.forEach(n=>n.dispose())})}},Sh=class{constructor(e){this.notebookDocuments=new Map,this.notebookCellMap=new Map,this._onDidOpen=new $t.Emitter,this._onDidSave=new $t.Emitter,this._onDidChange=new $t.Emitter,this._onDidClose=new $t.Emitter,"listen"in e?this._cellTextDocuments=e:this._cellTextDocuments=new Uu(e)}get cellTextDocuments(){return this._cellTextDocuments}getCellTextDocument(e){return this._cellTextDocuments.get(e.document)}getNotebookDocument(e){return this.notebookDocuments.get(ge.normalize(e))}getNotebookCell(e){let r=this.notebookCellMap.get(ge.normalize(e));return r&&r[0]}findNotebookDocumentForCell(e){let r=typeof e=="string"||"scheme"in e?e:e.document,n=this.notebookCellMap.get(ge.normalize(r));return n&&n[1]}get onDidOpen(){return this._onDidOpen.event}get onDidSave(){return this._onDidSave.event}get onDidChange(){return this._onDidChange.event}get onDidClose(){return this._onDidClose.event}listen(e){let r=new kh,n=[];return n.push(this.cellTextDocuments.listen(r)),n.push(e.notebooks.synchronization.onDidOpenNotebookDocument(i=>{let o=ge.normalize(i.notebookDocument.uri);this.notebookDocuments.set(o,i.notebookDocument);for(let s of i.cellTextDocuments)r.openTextDocument({textDocument:s});this.updateCellMap(i.notebookDocument),this._onDidOpen.fire(i.notebookDocument)})),n.push(e.notebooks.synchronization.onDidChangeNotebookDocument(i=>{let o=ge.normalize(i.notebookDocument.uri),s=this.notebookDocuments.get(o);if(s===void 0)return;s.version=i.notebookDocument.version;let a=s.metadata,c=!1,u=i.change;u.metadata!==void 0&&(c=!0,s.metadata=u.metadata);let l=[],h=[],p=[],y=[];if(u.cells!==void 0){let x=u.cells;if(x.structure!==void 0){let g=x.structure.array;if(s.cells.splice(g.start,g.deleteCount,...g.cells!==void 0?g.cells:[]),x.structure.didOpen!==void 0)for(let A of x.structure.didOpen)r.openTextDocument({textDocument:A}),l.push(A.uri);if(x.structure.didClose)for(let A of x.structure.didClose)r.closeTextDocument({textDocument:A}),h.push(A.uri)}if(x.data!==void 0){let g=new Map(x.data.map(A=>[A.document,A]));for(let A=0;A<=s.cells.length;A++){let M=g.get(s.cells[A].document);if(M!==void 0){let te=s.cells.splice(A,1,M);if(p.push({old:te[0],new:M}),g.delete(M.document),g.size===0)break}}}if(x.textContent!==void 0)for(let g of x.textContent)r.changeTextDocument({textDocument:g.document,contentChanges:g.changes}),y.push(g.document.uri)}this.updateCellMap(s);let _={notebookDocument:s};c&&(_.metadata={old:a,new:s.metadata});let E=[];for(let x of l)E.push(this.getNotebookCell(x));let D=[];for(let x of h)D.push(this.getNotebookCell(x));let w=[];for(let x of y)w.push(this.getNotebookCell(x));(E.length>0||D.length>0||p.length>0||w.length>0)&&(_.cells={added:E,removed:D,changed:{data:p,textContent:w}}),(_.metadata!==void 0||_.cells!==void 0)&&this._onDidChange.fire(_)})),n.push(e.notebooks.synchronization.onDidSaveNotebookDocument(i=>{let o=this.getNotebookDocument(i.notebookDocument.uri);o!==void 0&&this._onDidSave.fire(o)})),n.push(e.notebooks.synchronization.onDidCloseNotebookDocument(i=>{let o=ge.normalize(i.notebookDocument.uri),s=this.notebookDocuments.get(o);if(s!==void 0){this._onDidClose.fire(s);for(let a of i.cellTextDocuments)r.closeTextDocument({textDocument:a});this.notebookDocuments.delete(o);for(let a of s.cells)this.notebookCellMap.delete(a.document)}})),$t.Disposable.create(()=>{n.forEach(i=>i.dispose())})}updateCellMap(e){for(let r of e.cells)this.notebookCellMap.set(r.document,[r,e])}},kh=class t{onDidOpenTextDocument(e){return this.openHandler=e,$t.Disposable.create(()=>{this.openHandler=void 0})}openTextDocument(e){this.openHandler&&this.openHandler(e)}onDidChangeTextDocument(e){return this.changeHandler=e,$t.Disposable.create(()=>{this.changeHandler=e})}changeTextDocument(e){this.changeHandler&&this.changeHandler(e)}onDidCloseTextDocument(e){return this.closeHandler=e,$t.Disposable.create(()=>{this.closeHandler=void 0})}closeTextDocument(e){this.closeHandler&&this.closeHandler(e)}onWillSaveTextDocument(){return t.NULL_DISPOSE}onWillSaveTextDocumentWaitUntil(){return t.NULL_DISPOSE}onDidSaveTextDocument(){return t.NULL_DISPOSE}};kh.NULL_DISPOSE=Object.freeze({dispose:()=>{}});function jA(t){return ya.merge(Tu(t),oj(t))}function oj(t){return{lsp:{CompletionProvider:e=>new dh(e),DocumentSymbolProvider:e=>new ph(e),HoverProvider:e=>new vh(e),FoldingRangeProvider:e=>new gh(e),ReferencesProvider:e=>new bh(e),DefinitionProvider:e=>new fh(e),DocumentHighlightProvider:e=>new hh(e),RenameProvider:e=>new _h(e)},shared:()=>t.shared}}function UA(t){return ya.merge(Ru(t),sj(t))}function sj(t){return{lsp:{Connection:()=>t.connection,LanguageServer:e=>new xh(e),DocumentUpdateHandler:e=>new mh(e),WorkspaceSymbolProvider:e=>new Ch(e),NodeKindProvider:()=>new Th,FuzzyMatcher:()=>new yh},workspace:{TextDocuments:()=>new Uu(vi),NotebookDocuments:e=>new Sh(e.workspace.TextDocuments)}}}var WA="BlockCommand";var BA="LineCommand";var Gy="AddressParam";var Eh="CheckActionCommand";var Ah="CheckAlarmCommand";var wh="CheckCommand";var zy="CodeParam";var Wu="CountCommand";function Xy(t){return Qy.isInstance(t,Wu)}var Nh="DelayCommand";var Bu="LoopCommand";function Yy(t){return Qy.isInstance(t,Bu)}var Ph="Model";var Hu="ScheduleCommand";function Jy(t){return Qy.isInstance(t,Hu)}var Vy="TimeParam";var Ih="UnwatchCommand";var Ky="ValueParam";var Dh="WatchCommand";var Oh="WriteCommand";var Lh="TypeDeclare";var Gu=class extends Di{getAllTypes(){return[Gy,WA,Eh,Ah,wh,zy,Wu,Nh,BA,Bu,Ph,Hu,Vy,Lh,Ih,Ky,Dh,Oh]}computeIsSubtype(e,r){switch(e){case Eh:case Ah:case wh:case Nh:case Ih:case Dh:case Oh:return this.isSubtype(BA,r);case Wu:case Bu:case Hu:return this.isSubtype(WA,r);case Lh:return this.isSubtype(Ph,r);default:return!1}}getReferenceType(e){let r=`${e.container.$type}:${e.property}`;throw new Error(`${r} is not a valid reference id.`)}getTypeMetaData(e){switch(e){case Gy:return{name:Gy,properties:[{name:"module"},{name:"value"}]};case Eh:return{name:Eh,properties:[{name:"code"}]};case Ah:return{name:Ah,properties:[{name:"codes",defaultValue:[]},{name:"codes2",defaultValue:[]}]};case wh:return{name:wh,properties:[{name:"address"},{name:"address2"},{name:"value"},{name:"value2"}]};case zy:return{name:zy,properties:[{name:"value"}]};case Wu:return{name:Wu,properties:[{name:"commands",defaultValue:[]},{name:"times"}]};case Nh:return{name:Nh,properties:[{name:"time"}]};case Bu:return{name:Bu,properties:[{name:"commands",defaultValue:[]},{name:"time"}]};case Ph:return{name:Ph,properties:[{name:"commands",defaultValue:[]}]};case Hu:return{name:Hu,properties:[{name:"commands",defaultValue:[]},{name:"time"}]};case Vy:return{name:Vy,properties:[{name:"value"}]};case Ih:return{name:Ih,properties:[{name:"address"}]};case Ky:return{name:Ky,properties:[{name:"value"}]};case Dh:return{name:Dh,properties:[{name:"address"},{name:"value"},{name:"value2"}]};case Oh:return{name:Oh,properties:[{name:"address"},{name:"address2"},{name:"value"}]};case Lh:return{name:Lh,properties:[{name:"commands",defaultValue:[]},{name:"value"}]};default:return{name:e,properties:[]}}}},Qy=new Gu;var HA,GA=()=>HA??(HA=Xd('{"$type":"Grammar","isDeclared":true,"name":"Acspec","rules":[{"$type":"ParserRule","entry":true,"name":"Model","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]},{"$type":"Assignment","feature":"commands","operator":"+=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TypeDeclare","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"use"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"unit"},{"$type":"Keyword","value":"init"}]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LineCommand","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"BlockCommand","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WriteCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"write"},{"$type":"Keyword","value":"write!"}]},{"$type":"Assignment","feature":"address","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"address2","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CheckCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"check"},{"$type":"Keyword","value":"check!"}]},{"$type":"Assignment","feature":"address","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value2","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Assignment","feature":"address2","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CheckAlarmCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"check_alarm"},{"$type":"Keyword","value":"check_alarm!"}]},{"$type":"Assignment","feature":"codes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"codes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"|"},{"$type":"Assignment","feature":"codes2","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"codes2","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}],"cardinality":"*"}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CheckActionCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"check_action"},{"$type":"Keyword","value":"check_action!"}]},{"$type":"Assignment","feature":"code","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"WatchCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"watch"},{"$type":"Keyword","value":"watch!"}]},{"$type":"Assignment","feature":"address","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"value2","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"UnwatchCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"unwatch"},{"$type":"Keyword","value":"unwatch!"}]},{"$type":"Assignment","feature":"address","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DelayCommand","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"delay"},{"$type":"Keyword","value":"delay!"}]},{"$type":"Assignment","feature":"time","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ScheduleCommand","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"schedule"},{"$type":"Assignment","feature":"time","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"commands","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"LoopCommand","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"loop"},{"$type":"Assignment","feature":"time","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"commands","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CountCommand","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"count"},{"$type":"Assignment","feature":"times","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Keyword","value":"{"},{"$type":"Assignment","feature":"commands","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},"cardinality":"*"},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"AddressParam","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"module","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ValueParam","definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CodeParam","definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"TimeParam","definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/\\\\s+/"},"fragment":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[_a-zA-Z][\\\\w_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?\\\\d+(\\\\.\\\\d+)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\//"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SL_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\/\\\\/[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"interfaces":[],"types":[],"usedGrammars":[]}'));var cj={languageId:"acspec",fileExtensions:[".tsc"],caseInsensitive:!1,mode:"production"},zA={AstReflection:()=>new Gu},VA={Grammar:()=>GA(),LanguageMetaData:()=>cj,parser:{}};function KA(t){let e=t.validation.ValidationRegistry,r=t.validation.AcspecValidator,n={WriteCommand:r.checkWriteCommand,CheckCommand:r.checkCheckCommand,DelayCommand:r.checkDelayCommand,CheckAlarmCommand:r.checkAlarmCommand,CheckActionCommand:r.checkActionCommand,WatchCommand:r.checkWatchCommand,UnwatchCommand:r.checkUnwatchCommand,ScheduleCommand:r.checkScheduleCommand,LoopCommand:r.checkLoopCommand,CountCommand:r.checkCountCommand};e.register(n,r)}var Mh=class{validateAddress(e){return e?/^[A-Z]+[0-9]+$/.test(e):!1}checkAddressParam(e,r){e&&(this.validateAddress(e.value)||r("error","\u8BF7\u8F93\u5165\u6B63\u786E\u7684\u5BC4\u5B58\u5668\u5730\u5740\uFF0C\u4F8B\u5982\uFF1AM0100",{node:e,property:"value"}),e.module!==void 0&&(!Number.isInteger(e.module)||e.module<0)&&r("error","\u6A21\u5757\u53F7\u5FC5\u987B\u662F\u975E\u8D1F\u6574\u6570",{node:e,property:"module"}))}checkWriteCommand(e,r){this.checkAddressParam(e.address,r),this.checkAddressParam(e.address2,r)}checkCheckCommand(e,r){this.checkAddressParam(e.address,r),this.checkAddressParam(e.address2,r),e.value&&e.value2&&e.value2.value<=e.value.value&&r("error","\u6700\u5927\u503C\u5FC5\u987B\u5927\u4E8E\u6700\u5C0F\u503C",{node:e.value2,property:"value"})}checkAlarmCommand(e,r){Array.isArray(e.codes)&&(e.codes.forEach(n=>{(!Number.isInteger(n.value)||n.value<0)&&r("error","\u544A\u8B66\u7801\u5FC5\u987B\u662F\u975E\u8D1F\u6574\u6570",{node:n,property:"value"})}),Array.isArray(e.codes2)&&e.codes2.forEach(n=>{(!Number.isInteger(n.value)||n.value<0)&&r("error","\u544A\u8B66\u7801\u5FC5\u987B\u662F\u975E\u8D1F\u6574\u6570",{node:n,property:"value"})}))}checkActionCommand(e,r){e.code&&(!Number.isInteger(e.code.value)||e.code.value<0)&&r("error","\u52A8\u4F5C\u72B6\u6001\u7801\u5FC5\u987B\u662F\u975E\u8D1F\u6574\u6570",{node:e.code,property:"value"})}checkWatchCommand(e,r){this.checkAddressParam(e.address,r),e.value&&e.value2&&e.value2.value<=e.value.value&&r("error","\u6700\u5927\u503C\u5FC5\u987B\u5927\u4E8E\u6700\u5C0F\u503C",{node:e.value2,property:"value"})}checkUnwatchCommand(e,r){this.checkAddressParam(e.address,r)}checkDelayCommand(e,r){e.time&&(typeof e.time.value!="number"||isNaN(e.time.value)||e.time.value<=0)&&r("error","\u5EF6\u8FDF\u65F6\u95F4\uFF08\u79D2\uFF09\u5FC5\u987B\u662F\u6B63\u6570",{node:e.time,property:"value"})}checkScheduleCommand(e,r){e.time&&((typeof e.time.value!="number"||isNaN(e.time.value)||e.time.value<=0)&&r("error","\u5B9A\u65F6\u65F6\u95F4\uFF08\u79D2\uFF09\u5FC5\u987B\u662F\u6B63\u6570",{node:e.time,property:"value"}),e.commands.length===0&&r("error","\u4E0D\u5141\u8BB8\u4F7F\u7528\u7A7A\u7684\u5757\uFF0C\u53EF\u4EE5\u4F7F\u7528\u66F4\u7B80\u6D01\u7684delay\u547D\u4EE4\u66FF\u4EE3\uFF0C\u4F8B\u5982\uFF1Adelay "+e.time.value,{node:e}))}checkLoopCommand(e,r){e.time&&((typeof e.time.value!="number"||isNaN(e.time.value)||e.time.value<=0)&&r("error","\u5B9A\u65F6\u65F6\u95F4\uFF08\u79D2\uFF09\u5FC5\u987B\u662F\u6B63\u6570",{node:e.time,property:"value"}),e.commands.length===0&&r("error","\u4E0D\u5141\u8BB8\u4F7F\u7528\u7A7A\u7684\u5757\uFF0C\u53EF\u4EE5\u4F7F\u7528\u66F4\u7B80\u6D01\u7684delay\u547D\u4EE4\u66FF\u4EE3\uFF0C\u4F8B\u5982\uFF1Adelay "+e.time.value,{node:e}))}checkCountCommand(e,r){e.times&&((!Number.isInteger(e.times.value)||e.times.value<=0)&&r("error","\u91CD\u590D\u6B21\u6570\u5FC5\u987B\u662F\u6B63\u6574\u6570",{node:e.times,property:"value"}),e.commands.length===0&&r("error","\u4E0D\u5141\u8BB8\u4F7F\u7528\u7A7A\u7684\u5757",{node:e}))}};var uj={validation:{AcspecValidator:()=>new Mh}};function XA(t){let e=fo(UA(t),zA),r=fo(jA({shared:e}),VA,uj);return e.ServiceRegistry.register(r),KA(r),{shared:e,Acspec:r}}var{shared:YA,Acspec:lj}=XA(_u),dj=new uo(lj),JA=new Set(["address","address2","value","value2","time","times","code","codes","codes2"]),QA=new Set(["value","module"]);async function fj(t){let e="file:///example.tcs",r={},n,i=YA.workspace.LangiumDocuments.createDocument(e,t),o=await dj.validateDocument(i),s=i.parseResult.value;if(!Array.isArray(o)||o.length===0){r.$type=s.$type,r.value=s.value,r.commands=[];for(let a of s.commands){let c={};if(Jy(a)||Yy(a)||Xy(a)){c.$type=a.$type,Jy(a)||Yy(a)?c.time=a.time.value:Xy(a)&&(c.times=a.times.value),c.commands=[];for(let u of a.commands){let l={};Object.keys(u).forEach(h=>{if(JA.has(h)){let p=u[h];h==="codes"||h==="codes2"?l[h]=p.map(y=>y.value):h==="address"||h==="address2"?l[h]=Array.from(QA).reduce((y,_)=>(_ in p&&(y[_]=p[_]),y),{}):l[h]=p.value}}),l.$type=u.$type,l.text=u.$cstNode.text,l.important=u.$cstNode.text.includes("!"),l.range=u.$cstNode.range,c.commands.push(l)}}else Object.keys(a).forEach(u=>{if(JA.has(u)){let l=a[u];u==="codes"||u==="codes2"?c[u]=l.map(h=>h.value):u==="address"||u==="address2"?c[u]=Array.from(QA).reduce((h,p)=>(p in l&&(h[p]=l[p]),h),{}):c[u]=l.value}}),c.$type=a.$type,c.text=a.$cstNode.text,c.important=a.$cstNode.text.includes("!"),c.range=a.$cstNode.range;r.commands.push(c)}}return YA.workspace.LangiumDocuments.deleteDocument(e),Object.keys(r).length>0&&(n=JSON.stringify(r)),{syntaxTree:n,diagnostics:o}}0&&(module.exports={getSyntaxTree});
|
|
162
162
|
/*! Bundled license information:
|
|
163
163
|
|
|
164
164
|
lodash-es/lodash.js:
|