4. ABNF Definition of ABNF (ABNFのABNF定義)
このセクションでは、ABNF自体のABNF定義を提供します。構文はABNF表記を使用して定義されています。
rulelist = 1*( rule / (*c-wsp c-nl) )
rule = rulename defined-as elements c-nl
; 次の行が空白で始まる場合は続く
rulename = ALPHA *(ALPHA / DIGIT / "-")
defined-as = *c-wsp ("=" / "=/") *c-wsp
; 基本ルール定義と
; 増分代替
elements = alternation *c-wsp
c-wsp = WSP / (c-nl WSP)
c-nl = comment / CRLF
; コメントまたは改行
comment = ";" *(WSP / VCHAR) CRLF
alternation = concatenation
*(*c-wsp "/" *c-wsp concatenation)
concatenation = repetition *(1*c-wsp repetition)
repetition = [repeat] element
repeat = 1*DIGIT / (*DIGIT "*" *DIGIT)
element = rulename / group / option /
char-val / num-val / prose-val
group = "(" *c-wsp alternation *c-wsp ")"
option = "[" *c-wsp alternation *c-wsp "]"
char-val = DQUOTE *(%x20-21 / %x23-7E) DQUOTE
; SPとVCHARの引用文字列
; DQUOTEを除く
num-val = "%" (bin-val / dec-val / hex-val)
bin-val = "b" 1*BIT
[ 1*("." 1*BIT) / ("-" 1*BIT) ]
; 連結されたビット値のシリーズ
; または単一のONEOF範囲
dec-val = "d" 1*DIGIT
[ 1*("." 1*DIGIT) / ("-" 1*DIGIT) ]
hex-val = "x" 1*HEXDIG
[ 1*("." 1*HEXDIG) / ("-" 1*HEXDIG) ]
prose-val = "<" *(%x20-3D / %x3F-7E) ">"
; SPとVCHARの角括弧文字列
; 角括弧を除く
; 散文記述、最後の手段として
; 使用される
ABNF定義に関する注記
ABNFのABNF定義は、表記法の自己記述的な性質を示しています。ルールは、ABNF構文がABNF自体を使用してどのように正式に定義されているかを示しています。
主な観察:
- ルールは、それらが記述するのと同じ演算子を使用して定義されます
- 表記法は再帰的で自己参照的です
- これにより、ABNFメタ言語の正式な仕様が提供されます