mermaid
Version:
Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.
2 lines (1 loc) • 2.51 kB
JavaScript
import{a as r,b as l,c as m}from"./chunk-SLDQ463B.mjs";import{a as f}from"./chunk-JQRUD6KW.mjs";import{b as p}from"./chunk-5IQCK5RY.mjs";import"./chunk-JZGDI5JK.mjs";import"./chunk-OJINMHTS.mjs";import"./chunk-VQC2EELJ.mjs";import"./chunk-KD6SPIPN.mjs";import{b as s}from"./chunk-Q6NGPIAH.mjs";import"./chunk-RT4MAWR3.mjs";import"./chunk-YBMQ5JGJ.mjs";import"./chunk-GDY2UAB4.mjs";import"./chunk-3SMGFRGC.mjs";import"./chunk-3NPNU5GP.mjs";import"./chunk-TCEHX7R3.mjs";import"./chunk-5MVFYWFU.mjs";import"./chunk-SFMINX4W.mjs";import"./chunk-JFFVMJIA.mjs";import"./chunk-ZUNWM646.mjs";import"./chunk-ZS6VBONO.mjs";import"./chunk-IJBDOHL6.mjs";import"./chunk-QJSWEUOL.mjs";import{b as i}from"./chunk-H7VHZCWX.mjs";import{a as n}from"./chunk-AQ6EADP3.mjs";var b=s().RailroadEbnf.parser.LangiumParser,a=n(e=>{let t=e.alternatives.map(c);return t.length===1?t[0]:{type:"choice",alternatives:t}},"transformChoice"),c=n(e=>{let t=e.elements.map(d);return t.length===1?t[0]:{type:"sequence",elements:t}},"transformSequence"),u=n(e=>{switch(e.$type){case"EbnfTerminal":return{type:"terminal",value:e.value};case"EbnfNonTerminal":return{type:"nonterminal",name:e.name};case"EbnfSpecial":return{type:"special",text:e.text};case"EbnfGroup":return a(e.element);case"EbnfOptional":return{type:"optional",element:a(e.element)};case"EbnfRepetition":return{type:"repetition",element:a(e.element),min:0,max:1/0};default:throw new Error(`Unsupported EBNF primary node: ${e.$type}`)}},"transformPrimary"),y=n((e,t)=>{switch(t.$type){case"EbnfOptionalPostfix":return{type:"optional",element:e};case"EbnfZeroOrMorePostfix":return{type:"repetition",element:e,min:0,max:1/0};case"EbnfOneOrMorePostfix":return{type:"repetition",element:e,min:1,max:1/0};case"EbnfExceptionPostfix":return{type:"sequence",elements:[e,{type:"terminal",value:"-"},u(t.except)]};default:throw new Error(`Unsupported EBNF postfix node: ${t.$type}`)}},"transformPostfix"),d=n(e=>e.postfixes.reduce((t,o)=>y(t,o),u(e.base)),"transformTerm"),g=n(e=>({name:e.name,definition:a(e.definition)}),"transformRule"),x=n(e=>{f(e,r),e.title&&r.setTitle(e.title),e.rules.map(t=>r.addRule(g(t)))},"populateDb"),E={parse:n(e=>{r.clear(),i.debug("[EBNF Parser] Starting Langium parse");let t=b.parse(e);if(t.lexerErrors.length>0||t.parserErrors.length>0)throw new p(t);let o=t.value;i.debug("[EBNF Parser] Parsed rules:",o.rules.length),x(o),i.debug("[EBNF Parser] Parse complete")},"parse"),parser:{yy:r}};var O={parser:E,db:r,renderer:m,styles:l};export{O as diagram};