[1] [[JIS X 3015]]:2005 ([[C#]], [[IDT]] [[ISO/IEC 23270]]:2003) は[[文法]]の定義に次のような表記法を使っています [SRC[[[JIS X 3015]]:2005 5.]]。 - [CODE(ABNF)[[DFN[文法]] := *文法規則]] - [CODE(ABNF)[[DFN[文法規則]] := 構文文法式 / 字句文法式]] - [CODE(ABNF)[[DFN[構文文法式]] := 左辺 ":" (改行 右辺 / 多数選択)]] -- 右辺で左辺を定義。 - [CODE(ABNF)[[DFN[字句文法式]] := 左辺 "::" (改行 右辺 / 多数選択)]] -- 右辺で左辺を定義。 - [CODE(ABNF)[[DFN[多数選択]] := "次のいずれか" 改行 1*(水平空白 選択肢) 改行]] -- [Q[余りにも個数が多い場合に]]使用。 - [CODE(ABNF)[[DFN[左辺]] := 非終端記号]] - [CODE(ABNF)[[DFN[右辺]] := 1*(水平空白 選択肢 改行)]] - [CODE(ABNF)[[DFN[選択肢]] := 項 *(水平空白 項) / 文章による説明]] -- 表記法の章に説明がありませんが、 完全に人間向けの文で記述されているものが多々あります。 -- 文章の説明の中に非終端記号が含まれているものもあります。 - [CODE(ABNF)[[DFN[項]] := (非終端記号 / 終端記号) [省略可能] ]] - [CODE(ABNF)[[DFN[省略可能]] := [SUB@en[opt]]]] -- 終端記号の後に付けられるのかは明記されておらず、 実際にそのような例はありません。 - [CODE(ABNF)[[DFN[非終端記号]] := "《" 1*文字 "》"]] -- [[JIS]] では日本語に訳されています。 -- [[英数字]]と[[仮名漢字]]の他に [CODE(char)[#]] も使われています。 - [CODE(ABNF)[[DFN[終端記号]] := <1*([CODE(char)[[[U+0020]]]]〜[CODE(char)[[[U+007F]]]]) ([Q[[[タイプライタ体]]]])>]] -- さすがに [CODE(char)[[[U+0020]]]] や [CODE(char)[[[U+007F]]]] を終端で使っている例はありません。