ABNF

From Wikipedia, the free encyclopedia

ABNFAugmented Backus–Naur form)は、バッカス・ナウア記法 (BNF) の拡張の一種。構文規則や生成規則はBNFとは異なる。通信プロトコルなどの言語の形式体系を記述するメタ言語として開発された。RFC 5234 で文書化されており、IETF が通信プロトコルを定義する際によく使っている。拡張バッカス・ナウア記法とも呼ばれるが、EBNF(Extended Backus-Naur Form)も同じ訳語となるため、区別するためあえて ABNF としている。

RFC 5234 は、RFC 4234およびRFC 2234 に存在した問題を修正し置換したものである。

ABNFの記述は以下のような生成規則群からなる。

rule = definition ; comment CR LF

ここで、rule は大文字小文字が区別される非終端記号、definition はその rule を定義する記号列、comment は文書化のためのコメントである。最後尾には必ず CRLF による改行コードが付属する。

規則名は大文字小文字を区別しない。<rulename><RULENAME><rUlENamE> も同じ規則を参照している。規則名はいわゆるアルファベット文字で始まり、その後にアルファベット、数字、ハイフンが続く。

山括弧(<>)は規則名を囲むのに必要とはされていない。しかし、規則名を識別しやすいように山括弧で囲むことが多い。

ABNF は 7ビットASCIIで符号化され、最上位の8ビット目はゼロに設定される。

終端記号の値

終端記号は1つ以上の文字コードで表される。

文字コードは、パーセント記号“%”とそれに続く基数を表す文字(b = 2進、d = 10進、x = 16進)、さらに値で示される。文字列は値を “.”で連結することで表される。例えば、復帰コードは %d13 または %x0D で示される。復帰コードの後に改行コードが続く場合、連結を使って %d13.10 などと表される。

リテラルテキストは引用符 (") で囲まれた文字列を使って表される。これら文字列は大文字小文字が区別されず、文字セットとしては US-ASCII が使われる。従って、“abc”という文字列は、“abc”、“Abc”、“aBc”、“abC”、“ABc”、“AbC”、“aBC”、“ABC”とマッチする。大文字小文字を区別したい場合、文字コードを上述の記法で指定するかRFC 7405で導入された“%s”プレフィクスを使用するかする必要がある。“aBc”という大文字小文字の組合せを表したい場合、%d97 %d66 %d99あるいは%s"aBc" とする。

オペレータ

参考文献

Related Articles

Wikiwand AI