[ About | Licence | Contacts ]
Written by Oleksandr Gavenko (AKA gavenkoa), compiled on 2024-04-01 from rev 052223c22317.

BNF

What is BNF?

BNF is an acronym for "Backus Naur Form". John Backus and Peter Naur introduced for the first time a formal notation to describe the syntax of a given language (ALGOL 60 programming language).

See: RFC 2234.

BNF syntax

The meta-symbols of BNF are:

::=
Meaning "is defined as".
|
Meaning "or".
<, >
Angle brackets used to surround category names (some times skipped).
[, ]
Optional items are enclosed in.
{, }
Repetitive items (zero or more times) are enclosed in.
"abc..."
Terminals are enclosed in to distinguish them from meta-symbols.

BNF in BNF

syntax     ::=  { rule }
rule       ::=  identifier  "::="  expression
expression ::=  term { "|" term }
term       ::=  factor { factor }
factor     ::=  identifier |
                quoted_symbol |
                "("  expression  ")" |
                "["  expression  "]" |
                "{"  expression  "}"
identifier ::=  letter { letter | digit }
quoted_symbol ::= """ { any_character } """