[1] [DFN[[[RFC 2234]]]] の [DFN[[[ABNF]]]] (増補 BNF) は、非常によく用いられていた [[RFC 822]] の ABNF を整理・拡張して独立な仕様としたものです。 RFC 2234 は [[IETF]] の[[提案標準]]となっており、 新しい IETF の規格を中心によく利用されています。 [2] 仕様書: - [[RFC 2234]] [[#comment]] * 変種 [5] RFC 2234 では[[二重引用符]]で括った[[引用文字列]]は大文字・ 小文字を区別しないと定義していますが、その解釈を変えて、 大文字・小文字は区別するとしている仕様書もあります。 - [[RFC 3862]] ([[CPIM]]) [6] [[P3P]] で使われている ABNF は RFC 2234 の ABNF の変種です。 [[#comment]] * 意味的な変種 [3] RFC 2234 では ABNF によって定義されるものが ([CODE(charset)[[[US-ASCII]]]] を用いた) [[オクテット列]]または[[ビット列]]としています。 しかし、[[符号化文字集合]]とは独立に[[文字列]]だけを定義したい場合や、 符号化文字集合が [[ASCII]] 以外である場合にも ABNF を使いたいという要求があります。そのため、 RFC 2234 を参照しながらもこの辺の解釈を変えている仕様書も少なからずあります。 [4] [[RFC 3986]] ([[URI]] 4[SUP[th]]) は、 [[URI]] は符号化からは独立した文字列として定義されるとしています。 RFC 3986 における ABNF は、それによって定義されるオクテット列 [WEAK[(の集合)]] に ASCII で対応する文字列 [WEAK[(の集合)]] であるとしています。 [8] 同様に [[RFC 3987]] ([[IRI]]) は ABNF の終端を [[UCS]] としています。 [6] [[RFC 3676]] ([CODE(MIME)[[[text/plain]]; [[format]]=[[flowed]]]]) は [CODE(MIME)[[[charset]]]] 引数によって実際の[[オクテット列]]は変わってくることを指摘しています [WEAK[(が不完全です)]]。 [7] この他、元の仕様が厳密に意味的に RFC 2234 に従って US-ASCII のオクテット列として定義していても、 それを引用している仕様がそうでなかったりすることもあります。 例えば [[RFC 3066]] の[[言語札]]の構文は RFC 2234 の ABNF で記述されていますが、言語札を採用している仕様がすべて US-ASCII のオクテット列による表現を使っているわけではありません。 ほとんどの場合、そのような違いは読めばわかるからか明確に規定されていることはありません。 [[#comment]] * メモ