Есть онлайн-генератор железнодорожных диаграмм . Он создает синтаксические диаграммы SVG , также известные как железнодорожные диаграммы, из контекстно-свободных грамматик, указанных в EBNF . Вы можете скопировать код SVG или сделать снимок экрана.
Вы должны ввести грамматику, и она составит диаграмму.
Например, чтобы создать первую показанную вами схему железной дороги, вы должны использовать код:
object ::= '{' ((string ':' value ) ( ',' string ':' value )*)? '}'

Затем вы можете перейти к определению stringи valueиспользованию, string ::= ...и value ::= ...будут показаны все ссылки.
Ознакомьтесь с некоторыми примерами диаграмм на странице. У них есть XML и даже сам EBNF.