[1] RFC 4011 (PolicyScript) は EBNF で PolicyScript (C++ の部分集合) を定義しています。
仕様書:
[2] RFC 4011 で英語で記述された説明に基づく RFC 4011 の EBNF の構文:
終端 := "'" 1*<ASCII 文字集合の文字> "'" / "<" 1*<説明する語句: ASCII 文字集合の文字> ">"
非終端 := 1*(letter / "_")
生成規則 := 非終端 ":" 定義
注釈 := "--" 注釈内容 改行
定義の中で:
明確に説明されているのはこれだけで、自明だと思って説明しなかったのでしょうが、 途中に空白を自由に挿入できるなどの 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 ')'