<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 
<dfn xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor></dfn> (<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Augmented Backus–Naur form</anchor></dfn>) は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文脈自由言語</anchor>の記述方式の一種です。
多くの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル要素</anchor>の構文記述のために用いられています。
細かなバリエーションがいろいろあります。</p><section><h1>仕様書</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor> として正式な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor> の定義は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターネット標準</anchor>である <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">STD 68</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5234</anchor>) でなされています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor> は歴史的に様々な変種があります。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5234</anchor> 
に至る「標準的」な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor> は、そもそも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">電子メイル</anchor>の仕様である <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 822</anchor>
の一部として規定されていた構文が独立した仕様になったものです。</p><figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 822</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">STD 11</anchor>) → <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2234</anchor> → <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4234</anchor> → <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5234</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">STD 68</anchor>)
→ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5234</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">STD 68</anchor>) + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7405</anchor></p></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 822</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2234</anchor> の間には多少の追加等があります
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2234のABNF</anchor> の項を参照。) <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2234</anchor> 以後は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor>
の構文そのものに変化はありませんでした。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7405</anchor> で新構文が加わっています。</p></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> 他の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BNF</anchor> に対する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor> の特徴は、<figure class="list"><ul><li>選択に「<code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">/</anchor></code>」を使う</li><li>反復に「<code class="ABNF"><var>n</var>*<var>m</var><var>E</var></code>」のように「<code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">*</anchor></code>」を使う</li></ul></figure>... ということでしょう。詳しくは各変種の項を参照してください。</p></section><section><h1>様々な ABNF</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor> の主な変種は次の通りです。各項には更にそれぞれの変種についての言及があります。<figure class="list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 822のABNF</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPのABNF</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2141のABNF</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4617のABNF</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2234のABNF</anchor> = <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4234のABNF</anchor> = <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5234のABNF</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">P3PのABNF</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">拡張ABNF</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LEIRIのABNF</anchor></li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 以上は一般の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロトコル要素</anchor>の構文の記述に利用可能なものですが、
特定の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">応用</anchor>に対象を絞ったものもあります。<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3588のABNF</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SRGSのABNF</anchor></li></ul></figure></p></section><section><h1>マーク付け</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2629</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFCマーク付け言語</anchor>では <code class="XMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">artwork</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>により<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">図</anchor>として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">マーク付け</anchor>されるのが普通です。</p></section><section><h1>限界</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BNF</anchor> 参照。</p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BNF</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EBNF</anchor> の項も参照してください。</p></section><section><h1>メモ</h1><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2002-12-21 20:15</weak> <em><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor></em>: <em>ABNF Validator</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.apps.ietf.org/abnf.html">http://www.apps.ietf.org/abnf.html</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2002-12-21 20:16</weak> <em><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></em>: 界面としてはいいとはいえない。今後に期待。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal> 確かに <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AHL</anchor> とか <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">W3C</anchor> の Validator に慣れてるとこれはなんかの間違いかと思うよね。</li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <cite xml:lang="en">RFC 6381 - The \x27Codecs\x27 and \x27Profiles\x27 Parameters for &quot;Bucket&quot; Media Types</cite>
(<time>2011-10-09 12:42:47 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://tools.ietf.org/html/rfc6381">http://tools.ietf.org/html/rfc6381</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <cite xml:lang="en">Please clarify if header value should be enclosed in quotes or not · Issue #97 · w3c/webappsec-referrer-policy</cite>
(<time>2017-11-06 12:47:56 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/w3c/webappsec-referrer-policy/issues/97">https://github.com/w3c/webappsec-referrer-policy/issues/97</anchor-external></p></section></body></html>