UNPKG

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
import{a as r,b as l,c as m}from"./chunk-Y5NT6LW5.mjs";import{a as f}from"./chunk-V3KJR4XU.mjs";import{b as p}from"./chunk-Y5O5OPKC.mjs";import"./chunk-3T2MNPEU.mjs";import"./chunk-MLQVGYRW.mjs";import"./chunk-QX7LGXZU.mjs";import"./chunk-22SYA5HA.mjs";import"./chunk-YZG4BXY6.mjs";import"./chunk-NRRTYJAG.mjs";import"./chunk-CVBX6EWK.mjs";import"./chunk-RXM7Z7NK.mjs";import{b as s}from"./chunk-HI3EPXIC.mjs";import"./chunk-5NYYYZGL.mjs";import"./chunk-H7BX327W.mjs";import"./chunk-LIEGGFIX.mjs";import"./chunk-LLWYPJEZ.mjs";import"./chunk-2FTYKNOQ.mjs";import"./chunk-36VM3LGA.mjs";import"./chunk-44AU3KAP.mjs";import"./chunk-S4TE5DX6.mjs";import"./chunk-FE53TMRB.mjs";import{b as i}from"./chunk-L2B47AAZ.mjs";import{a as n}from"./chunk-QVIEFLGF.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};