RFC 4011のEBNF

RFC 4011のEBNF

[1] RFC 4011 (PolicyScript) は EBNFPolicyScript (C++ の部分集合) を定義しています。

仕様書:

[2] RFC 4011 で英語で記述された説明に基づく RFC 4011 の EBNF の構文:

定義の中で:

|
選択
(・・・)
集団化
[・・・]
省略可能
項目?
省略可能
項目*
零個以上
項目+
一個以上

明確に説明されているのはこれだけで、自明だと思って説明しなかったのでしょうが、 途中に空白を自由に挿入できるなどの BNF 各種で一般的な規則を採用しています。

実例を見ると、終端表記ではアポストロフィ1つを表すのに ]] と平気で書いています。 <> を使った終端は <TAB> のように制御文字の表現に使われています。 定義に記号を一切使わずに直接英語で説明しているものもあったりします。

[3] 使用例 [RFC 4011

   hex_constant:      ( '0x' | '0X' ) hex_digit+

   integer_constant:  decimal_constant | octal_constant | hex_constant

   identifier:        letter ( letter | digit )*

-- Phrase Structure Grammar

   -- Expressions

   primary_expr:      identifier | integer_constant | char_constant
                    | string_literal  |  '(' expression ')'