鉄道図は、文脈自由文法を視覚化する一般的な方法であり、Backus-Naur Form をこれらの図にマッピングできます。しかし、 BNF の一部の変種、たとえばW3C-BNFでは例外が許可されます (文脈自由言語は違いの下で閉じられていないため、これらの例外は規則的でなければなりません)。鉄道図で例外のある文法を視覚化したいと思います。グラフィカル表記の独自の拡張機能を発明する必要がありますか、それとも誰かがすでにこれを試していますか?
例外のあるルールの例を次に示します (はい、この特定の文法を例外なく表現することもできますが、それは重要ではありません)。
comment := "<!--" (string - "--") "-->"
例外は、通常の文法である可能性があります。特殊なタイプの矢印または線 (ここでは感嘆符で示されています) によって非終端記号に接続された例外を追加することを考えました。
[<] → [!] → [-] → [-] → (string) → [-] → [-] → [>]
!
! → [-] → [-] → ↯
PS:文法が間違っていました。
comment := "<!--" (string - (string "--" string | string "-")) "-->"
否定の非直感的な使用が、形式文法で否定がほとんど使用されない理由の 1 つかもしれません。