[1] [[DocBook]] には [[EBNF]] をマークするための optional な語彙があります。 - [CODE(SGMLe)[[[productionset]]]] (共通属性; [CODE(SGML)[(([CODE(SGMLe)[[[title]]]], [CODE(SGMLe)[[[titleabbrev]]]]?)?, ([CODE(SGMLe)[production]] | [CODE(SGMLe)[[[productionrecap]]]])+)]]): 生成規則集合。 -- [CODE(SGMLe)[[[production]]]] (共通属性; [CODE(SGML)[([CODE(SGMLe)[lhs]], [CODE(SGMLe)[rhs]], [CODE(SGMLe)[constraint]]*)]]): 生成規則を表します。 --- [CODE(SGMLe)[[[lhs]]]] (共通属性; [CODE(SGML)[[[PCDATA]]]]: 非終端記号名): 左辺を記述します。 --- [CODE(SGMLe)[[[rhs]]]] (共通属性; [CODE(SGML)[(#[[PCDATA]] | [CODE(SGMLe)[lineannotation]] | [CODE(SGMLe)[nonterminal]] | [CODE(SGMLe)[[[sbr]]]])*]]): 右辺を記述します。注釈は [CODE(SGMLe)[lineannotation]] で、 非終端記号は [CODE(SGMLe)[nonterminal]] で、 改行候補箇所は [CODE(SGMLe)[sbr]] で記述します。 それ以外は直接[[文字データ]]として記述します。 ---- [CODE(SGMLe)[[[nonterminal]]]] (@[CODE(SGMLa)[[[def]]]]=[[URI参照]]: 必須: 定義への参照, 共通属性; [CODE(SGML)[[[PCDATA]]]]: 非終端記号名): 非終端記号を表します。文法規則外の文章でも使えます。 --- [CODE(SGMLe)[[[constraint]]]] (@[CODE(SGMLa)[[[linkend]]]]=[CODE(SGML)[[[IDREF]]]]: 必須, 共通属性; 強制空要素): 文法的に表現できない制約を参照します。 -- [CODE(SGMLe)[[[productionrecap]]]] (@[CODE(SGMLa)[[[linkend]]]]=[CODE(SGML)[[[IDREF]]]]: 必須: [CODE(SGMLe)[production]], 共通属性; 強制空要素): 生成規則の複製を挿入します (主として読者の理解のための再掲)。 - [CODE(SGMLe)[[[constraintdef]]]] (共通属性; [CODE(SGML)[([CODE(SGMLe)[[[title]]]], [VAR[ブロック系]])]]): 文法的に表現できない制約を記述します。 文法規則外の文章の一部として記述できます。内容も普通の文章です。