##
12 文法における導出の表示

形式文法における導出 (producution) を表示するために、特殊なマークアップ を使えます。マークアップは単純なもので、 BNF (やその派生形) の 全ての側面をモデル化しようとはしていませんが、 シンボルを記述するとそのシンボルの定義へのハイパーリンクになるような 表示を文脈自由文法に対して実現しています。 環境が一つと、二つのマクロがあります:

`\begin{productionlist}` `[`language`]`
`\end{productionlist}`
  この環境は、ひとまとまりの導出規則を囲むために使います。 この環境ではマクロを二つだけ定義しています。ドキュメントで 二つ以上の言語について説明する場合、オプションのパラメタ language を使って、言語間で導出規則を区別せねばなりません。パラメタの値は ファイル名の一部に使えるような短い名前にせねばなりません; コロンや、 複数のプラットフォーム間で同時にファイル名に使えないような文字は 含めてはなりません。

`\production` `{`name`}``{`definition`}`
  文法における導出規則です。導出規則は、name をdefinition であると定義します。name にはマークアップを入れてはならず、 ハイフンを使った一つ以上の文法のサポートは定義されていません。 一つの `\production` には単一のシンボルだけを定義できます -- 複数シンボルの定義を行ってはなりません。

`\token` `{`name`}`
  `\production` マクロが定義しているシンボルの名前で、 シンボルのdefinition の中で使います。シンボルname は 可能な場合にはシンボル定義へのハイパーリンクになります。

必ずしも文法全体を単一の`\productionlist` 環境に定義する必要は ないので注意してください; 任意の数のグループを作って文法を 記述してかまいません。`\token` を使う場合には常に `\production` と対応付けせねばなりません。

以下はPython リファレンスマニュアル からとった例です:

    \begin{productionlist}
      \production{identifier}
                 {(\token{letter}|"_") (\token{letter} | \token{digit} | "_")*}
      \production{letter}
                 {\token{lowercase} | \token{uppercase}}
      \production{lowercase}
                 {"a"..."z"}
      \production{uppercase}
                 {"A"..."Z"}
      \production{digit}
                 {"0"..."9"}
    \end{productionlist}