Hay un generador de diagramas ferroviarios en línea . Crea diagramas de sintaxis SVG , también conocidos como diagramas de ferrocarril, a partir de gramáticas libres de contexto especificadas en EBNF . Puede copiar el código SVG o realizar capturas de pantalla.
Tienes que escribir la gramática y hará el diagrama.
Por ejemplo, para crear el primer diagrama de ferrocarril que muestra, usaría el código:
object ::= '{' ((string ':' value ) ( ',' string ':' value )*)? '}'

Luego, podría continuar con la definición stringy el valueuso string ::= ...y value ::= ...se muestran todas las referencias.
Vea algunos de los diagramas de ejemplo en la página. Tienen XML e incluso el propio EBNF.