mermaid
Version:
Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.
2 lines (1 loc) • 2.29 kB
JavaScript
import{a,b as f,c as u}from"./chunk-Y5NT6LW5.mjs";import{a as l}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"./chunk-HI3EPXIC.mjs";import{b as m}from"./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 t}from"./chunk-QVIEFLGF.mjs";var d=m().RailroadAbnf.parser.LangiumParser,s=t(e=>{let r=e.alternatives.map(y);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),y=t(e=>{let r=e.elements.map(R);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),g=t(e=>{if(e.includes("*")){let[n,o]=e.split("*"),b=n?parseInt(n,10):0,c=o?parseInt(o,10):1/0;return{min:b,max:c}}let r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),R=t(e=>{let r=N(e.primary);if(!e.repeat)return r;let{min:n,max:o}=g(e.repeat);return n===0&&o===1?{type:"optional",element:r}:{type:"repetition",element:r,min:n,max:o}},"transformElement"),N=t(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return s(e.element);case"AbnfOptionalGroup":return{type:"optional",element:s(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=t(e=>({name:e.name,definition:s(e.definition)}),"transformRule"),S=t(e=>{l(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),A={parse:t(e=>{a.clear(),i.debug("[ABNF Parser] Starting Langium parse");let r=d.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new p(r);let n=r.value;i.debug("[ABNF Parser] Parsed rules:",n.rules.length),S(n),i.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}};var C={parser:A,db:a,renderer:u,styles:f};export{C as diagram};