Existe um Gerador de Diagrama de Ferrovia Online . Ele cria diagramas de sintaxe SVG , também conhecidos como diagramas de ferrovia, a partir de gramáticas livres de contexto especificadas em EBNF . Você pode copiar o código SVG ou fazer capturas de tela.
Você tem que digitar a gramática e isso fará o diagrama.
Por exemplo, para criar o primeiro diagrama de ferrovia que você mostra, você usaria o código:
object ::= '{' ((string ':' value ) ( ',' string ':' value )*)? '}'

Então você poderia definir string e valueusar string ::= ...evalue ::= ... As referências são todas mostradas.
Confira alguns dos diagramas de exemplo na página. Eles têm XML e até o próprio EBNF.