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:

Yorumlar

  1. pakize

    Gerçekten çok faydalı oldu. Türkçe kaynak sıkıntısı zaten var bilgisayar bilimleri alanında, sizin siteniz önceden de kullandığım sitelerden biri. İngilizce ifadeleri tam oturtamıyorsunuz kafanıza ingilizce göz atıp en son Türkçe kaynak okumak yararlı oluyor özet, kısa anlatımlarınız var ve sorulara cevap vermekten kaçınmıyorsunuz. Gerçekten çok teşekkür ederim.

  2. Sami

    Hocam konunun üzerinden epey zaman geçmiş ancak aklıma takıldı. Burada tam bir dil yapısı için bölümüne bir de koymamız gerekiyor sanırım. Doğru mudur? Yani;

    ==> | | |

pakize için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir