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 ? ...