Zápis gramatiky použitý v předchozí kapitole můžeme považovat za svého druhu programovací jazyk.
K tomuto jazyku můžeme napsat gramatiku:
Celá gramatika je poslouplností pravidel
grammar : ( rule )* ;
Pravidla zapisujeme pomocí jména pravidla následovaného dvojtečkou, popisem pravidla a středníkem.
rule : identifier ":" description ";" ;
Dvojtečka a středník v uvozovkách jsou dvojtečkou a středníkem zmíněným v předcházející větě.
Dvojtečka a středník bez uvozovek jsou součástí právě definovaného pravidla.
Popis pravidla je posloupnost jedné nebo více alternativ oddělených svislou čarou.
description : alternative ( "|" alternative )* ;
Svislou čáru (nebo) můžeme považovat za jakousi aditivní operaci
Alternativa je posloupnost jednoducých položek.
Může být i prázdná.
alternative : ( simple )* ;
Zápis položek za sebou můžeme považovat za obdobu multiplikativní operace, znak násobení také ovykle vynecháváme
Jednoduchá položka může být řetězec v dvojtých uvozovkách (terminal),
identifikátor (neterminál) nebo výraz v závorkách.
simple : string_literal | identifier | ebnf ;
Výraz v závorkách rekurzivně používá již zavedený výraz pro popis pravidla (description).
Za závorkami může následovat otazník, hvězdička nebo plus.
ebnf : "(" description ")" ( "?" | "*" | "+" | ) ;