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-AD2K7U72.mjs";import{a as f}from"./chunk-N3CUNPOK.mjs";import{b as p}from"./chunk-XWQP5P3V.mjs";import"./chunk-QQEUQRS4.mjs";import"./chunk-OO6OXEJO.mjs";import"./chunk-SQB72GJH.mjs";import"./chunk-FB4HB4A2.mjs";import"./chunk-OWKPCAA4.mjs";import"./chunk-XU3RQ3PZ.mjs";import"./chunk-6GTQGJNM.mjs";import"./chunk-4J7XMMR5.mjs";import"./chunk-S2SV4DS7.mjs";import"./chunk-QQ4VTD2Z.mjs";import{b as s}from"./chunk-ETFDQZFQ.mjs";import"./chunk-EKDPPX6U.mjs";import"./chunk-G35KUZXD.mjs";import"./chunk-FCGY7WDG.mjs";import"./chunk-PHMQW7SG.mjs";import"./chunk-MWUZ53VY.mjs";import"./chunk-NYALJP3A.mjs";import"./chunk-VLFMOWSA.mjs";import{b as i}from"./chunk-NXZFCOWJ.mjs";import{a as n}from"./chunk-V3YWWTDH.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};