Na przykład w gramatyce Lispa funkcja application może być definiowana następująco:

function application = list( symbol , [ { wyrażenie } ] );

Motywacja rozszerzenia BNF

Problemem BNF jest to, że nie można wyrazić bezpośrednio powtórzeń i wystąpień opcjonalnych. Zamiast tego mamy pośrednie reguły i rekurencyjny sposób definiowania powtórzeń i opcji. Możliwość takiego sposobu definicji mamy również w EBNF.

Opcja:

liczba ze znakiem = [ znak , ] liczba ;

może być zdefiniowana w stylu BNF:

liczba ze znakiem = znak , liczba | liczba ;

lub

liczba ze znakiem = znak warunkowy , liczba ; znak warunkowy = ε | znak ; (* epsilon jest tu użyty do zaznaczenia pustej produkcji *)

Powtórzenia:

liczba = { cyfra } ;

mogą być zdefiniowane w stylu BNF:

liczba = cyfra | liczba cyfra;

Tabela symboli Poniżej przedstawiono symbole użyte w standardzie.

Użycie Zapis definicja = złączenie , zakończenie ; alternatywa | zawartość opcjonalna [ ... ] powtórzenie { ... } grupowanie ( ... ) tekst dosłowny " ... " tekst dosłowny ' ... ' komentarz (* ... *) wyrażenie specjalne ? ...