BNF
![]() |

Elle a été utilisée pour la première fois pour spécifier le langage ALGOL.
La BNF a été largement étendue depuis ses débuts, reprise par exemple pour les base de données avec leurs célèbres formes normales numérotées de 1 à 3, voire 5 pour les spécialistes, et peut maintenant utiliser la récursion ainsi que divers symboles et wildcards.
On rencontre aussi parfois une version française (FBN ou FNB).
Exemple
Elle permet par exemple de décrire une adresse ainsi:
elle est composée d'un NOM suivi d'un RUE puis d'un VILLE.
Un NOM est composé soit:
- d'un prénom et d'un nom,
- d'un statut civil (Madame, Mademoiselle, Monsieur, etc.) d'un prénom et d'un nom,
- d'un statut civil et d'un nom.
Un NOM est toujours terminé par une fin de ligne. Un RUE est un numéro (d'ordre dans la rue), une virgule, un nom de rue et une fin de ligne. Enfin, un VILLE est un code postal suivi du nom de la ville correspondante et d'une fin de ligne.
Voici l'équivalent sous BNF:
<adresse> ::= <NOM> <RUE> <VILLE> <NOM> ::= <prenom-equivalent> <nom> <EOL> | <statut-civil> <prenom-equivalent> <nom> | <statut-civil> <nom> <statut-civil> ::= "Madame" | "Mademoiselle" | "Monsieur" | "M" | "Mme" | "Docteur" | "Maître" <prenom-equivalent> ::= <prénom> | <initiale> "." <RUE> ::= <numéro>"," <type-de-voie> <nom-de-voie><EOL> <VILLE> ::= <code-postal> <nom-de-ville><EOL>