A summary of the ISO EBNF notation

The Backus-Naur Form (BNF) is a convenient means for writing down the grammar of a context-free language. Niklaus Wirth’s Extended Backus-Naur Form (EBNF) adds the regular expression syntax of regular languages to the BNF notatation, in order to allow very compact specifications. Context-free grammars are frequently used to specify programming languages, operating system commands, and other types of computer input. Numerous variants of BNF and EBNF have been introduced and practically every compiler-design textbook and programming-language standard defines its own version. While a BNF notation can be specified in a few sentences, the proper definition of EBNF requires a little bit more explanation, and therefore frequently only BNF is used although the result is much less readable.

The ISO 14977 standard finally defines a common uniform precise EBNF syntaxt, such that not every textbook and standard has to define its own BNF flavour, but can easily reference a comprehensive standard EBNF form. For more information, have a look at a final draft version (SC22/N2249) of the standard, which the project editor has fortunately made available, such that readers who encounter the ISO EBNF in the literature can make themself more easily familiar with the notation. For some more background information, you might also want to have a look at Roger Scowen’s draft paper.

Special thanks to Roger Scowen for providing the SC22/N2249 text.

Update: The official ISO/IEC 14977:1996(E) document is now freely available online from ISO’s web server.

Markus Kuhn

created 1998-09-14 – last modified 2006-01-12 – http://www.cl.cam.ac.uk/~mgk25/iso-ebnf.html