* RFC 2141 の ABNF
[1]
[[RFC 2141]] は、構文の定義のために [[BNF]] 
の一種を使っています。この [[BNF]]
自体の定義は明記されていません。

;; [[RFC 2141]] <urn:ietf:rfc:2141>

[3]
:[CODE(ABNF)[<[VAR[[[非終端記号]]]]>]]:[[非終端記号]]は、
[CODE(char)[[[<]]]] と [CODE(char)[[[>]]]]
で括ります。 [[ASCII]] [[ラテン文字]]、
[CODE(char)[[[-]]]]、[CODE(charname)@en[[[SPACE]]]]
が[[名前]]に使われています。
:[CODE(ABNF)["[VAR[[[終端記号]]]]"]]:[[終端記号]] (の列) は [CODE(char)[[["]]]]
で括ります。 [CODE(ABNF)["""]] で [CODE(char)@en[[["]]]]
を表している例があります。 (おそらく誤って)
[CODE(ABNF)['%"]] となっているところがあります。
:[CODE(ABNF)@en[octets [VAR@en[n]]-[VAR@en[m]] ([VAR@en[N]]-[VAR@en[M]] hex)]]:
[[十進数]]と[[十六進数]]で示された範囲の[[オクテット]]を[[終端記号]]として指定します。
[[十進数]]は1桁以上です。
[[十六進数]]には1桁以上の[[大文字]]が使われています。
:[CODE(ABNF)[[VAR[[[左辺]]]] [CODE(charname)@en[[[COLON]]]] [CODE(charname)@en[[[COLON]]]] = [VAR[[[右辺]]]]]]:
[VAR[[[左辺]]]]で[VAR[[[右辺]]]]を定義します。
:[CODE(ABNF)[[VAR@en[a]] [VAR@en[b]]]]:[[連接]]
:[CODE(ABNF)[[VAR@en[a]] | [VAR@en[b]]]]:[[選択]]
:[CODE(ABNF)[ [ [VAR@en[a]] ] ]]:単なる[[集団化]]と思われます。
:[CODE(ABNF)[[VAR@en[n]],[VAR@en[m]] [VAR@en[a]]]]:
[VAR@en[n]] 個以上 [VAR@en[m]] 個以下を表します。
:[CODE(ABNF)[[VAR@en[n]]*[VAR@en[a]]]]:
[VAR@en[n]] 個以上を表します。

[[#comment]]

* RFC 4617 の ABNF

[2]
[[RFC 4617]] は、 [[RFC 4234]] の [[ABNF]]
を使うと主張していますが、実際には [[RFC 2141]]
の [[BNF]] の一変種です。

[4] >>3 の他に:
:[CODE(ABNF)[[VAR@en[a]][CODE(charname)@en[[[COLON]]]][VAR@en[b]]]]:
[VAR@en[a]]、[CODE(charname)@en[[[COLON]]]] 
([[終端記号]])、[VAR@en[b]] の[[連接]]です。
:[CODE(ABNF)[([VAR@en[a]])]]:[[集団化]]
:[CODE(ABNF)[{[VAR@en[text]]}]]:[[自然言語]]による記述
([[注釈]]?)

[[#comment]]

* メモ
