* RFC 2141 の ABNF [1] [[RFC 2141]] は、構文の定義のために [[BNF]] の一種を使っています。この [[BNF]] 自体の定義は明記されていません。 ;; [[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]] * メモ