EBNF
EBNF は次のような BNF の欠陥を排除している。
BNF は記号として (<, >, |, ::=) を使っている。定義対象の言語にもこれらの記号が使われている場合、BNF はそれを何かに置き換えて表現する必要があった。
BNF では1つの規則を一行で表す必要があった。
EBNF はこれらの問題を次のように解決している。
終端記号は必ず引用符("..." または '...')で囲まれる。非終端記号を囲んでいた山括弧("<...>")は省略されている。
規則の最後にセミコロンなどの記号を付与して、規則の範囲を明確化している。
他にも様々な拡張がされているが、定義できる言語の範囲という意味では BNF に比べて「強力」というわけではない。実際、EBNF で定義可能な文法は、基本的に BNF でも表現できる。ただし、その場合 BNF での表現は非常に大きくなってしまう。
EBNF はISOが ISO/IEC 14977:1996(E) として標準化した。
BNF に何らかの拡張をしたものを EBNF と呼ぶこともある。例えば、W3C は XML の文法記述に 独自の EBNF を使っている。