Железнодорожные диаграммы - популярный метод визуализации контекстно-свободных грамматик, и вы можете сопоставить форму Бэкуса-Наура с этими диаграммами. Но некоторые варианты BNF , например, W3C-BNF разрешают исключения (поскольку контекстно-свободные языки не закрываются при различиях, эти исключения должны быть регулярными). Я хочу визуализировать грамматику с исключениями на диаграмме железной дороги. Должен ли я изобрести собственное расширение графической записи или кто-то уже экспериментировал с этим?
Вот пример правила с исключением (да, вы также можете выразить эту конкретную грамматику без исключения, но дело не в этом):
comment := ""
Исключением может быть любая обычная грамматика. Я подумал о добавлении исключения, связанного с нетерминальными символами каким-то особым типом стрелки или линии (здесь обозначены восклицательными знаками):
[<] → [!] → [-] → [-] → (string) → [-] → [-] → [>]
!
! → [-] → [-] → ↯
PS: Грамматика была неправильной, это должно быть
comment := ""
Может быть, неинтуитивное использование отрицания является одной из причин, почему оно мало используется в формальных грамматиках?