Backus Normal Form (BNF)

Yazan : Şadi Evren ŞEKER

Bilgisayar bilimlerilnde genellikle bir dil tanımlamada ve bu dilin gramerini (Dil bilgisini) belirlemekte kullanılan gösterim biçimidir.

Basitçe dil bir dil tanımında başlayarak Terminal (sonuncu) ve Non-Terminal (Devamlı) terimler kullanarak tanılmanmaktadır.

Örneğin aşağıda basit bir örneği verilmiştir:

<dil> ::= <harf>|<imla>

<harf> ::= a|b|…|z

<imla> ::= .| |,|?

Yukarıda bir dil tanımı yapılmış ve bu dilde harf veya imlalar bulunduğu söylenmiştir. Buna göre dilimizdeki harfler a’dan z’ye kadar olup imla işaretleri de “. ,?” işaretleridir.  Bir ifadenin (nonterminal veya terminal) alabileceği alternatifler | işareti ile ayrılır. Yani harf ya “a”, ya “b” ya… şeklinde sayılan alternatiflerden birisi olabilir demektir. (aralarında veya (or) bağlantısı varmış gibi düşünülebilir)

Yukarıda da görüldüğü üzere BNF gösteriminde nonterminal’ler (devamlılar) <> işaretleri arasında belirtilmektedir.

Yukarıdaki dilimize aşağıdakine benzer bir ek yapılırsa:

<dil> ::= <harf><dil> |<harf>|<imla>

<harf> ::= a|b|…|z

<imla> ::= .| |,|?

Yukarıda fark edilsin diye koyu gösterilen ek marifetiyle dilimizde bir dögü elde edilmiş ve bu sayede dilimizdeki harfler istenildiği kadar tekrar edilmiştir. Yani ilk örnekte dilimizde sadece tek bir harf veya tek bir imla işareti bulunabilirken yeni eklentimiz ile dilimizde istediğimiz kadar harf bulunudurabiliriz. Elbette bu durumun bir harf veya imla ile bitmesi gerekmektedir.

BNF ayrıca döngü miktarını belirlemek için de {}ij sembollerini kullanır. Bu gösterim i’den j’ye kadar tekralanacağı anlamındadır:

Bu yazıyı beğendiyseniz, başkalarının da ilgisini çekebilirsiniz:


192 views

Leave a Reply


6 + yedi =

Benzer Yazılar:

Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'Backus Normal Form (BNF)' isimli yazı 09 Dec 2008 tarihinde, saat: 14:18 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam192 defa okunmuştur.

Benzer yazıları algoritma analizi (teory of algorithms), Automata (otomatlar, özdevinirler), Derleyiciler, Programlama Dilleri, Sistem Programlama (System Programming) kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.


Category: algoritma analizi (teory of algorithms), Automata (otomatlar, özdevinirler), Derleyiciler, Programlama Dilleri, Sistem Programlama (System Programming)