EBNF (Uzatılmış BNF, Extended Backus Normal Form)
Yazan : Şadi Evren ŞEKER
Bilgisayar bilimlerinde dil tasarımı konusunda kullanılan backus normal şeklinin (backus normal form) özel bir halidir. Basitçe standart BNF’te yazılan kuralların birleştirilerek daha sade yazılmasını hedefler.
Bu durumu aşağıdaki örnek üzerinden görebiliriz:
Örneğin BNF olarak yazılan dilimize göre:
<EGER> ::= if( <KOSUL>) | if( <KOSUL>) else
şeklinde bir satırımız bulunsun. Bu satırın anlamı dilimizde bir EGER döz dizilimi (syntax), if komutu ve parantez içinde bir koşuldan oluşabilir veya bu if ve parantez içerisindeki koşulu bir else komutu izleyebilir.
Yukarıdaki bu BNF yazılımını EBNF olarak aşağıdaki şekilde yazabiliriz:
<EGER> ::= if( <KOSUL>) [else]
Yukarıdaki bu yeni satırda dikkat edileceği üzere köşeli parantezler arasında bir else komutu bulunmaktadır. Bunun anlamı, EGER komutu “if( KOSUL)” olarak tanımlanır ve şayet istenirse bu komuta ilave olarak else komutu eklenebilir. Yani köşeli parantez içerisindeki komut isteğe bağlıdır.
Yukarıdaki bu yeni yazılım aslında sadece gösterimde bir farklılık oluşturmaktadır. Bunun dışında, EBNF’in kullanım alanı ve işlevi BNF ile aynıdır.
EBNF’in BNF’ten farklı olarak getirdiği ifade şekilleri aşağıda listelenmiştir:
| İfade | Kullanımı | |
| Tanımlama | definition | = |
| Üleştirme | concatenation | , |
| Bitirme | termination | ; |
| Seçim (Veya) | separation | | |
| Çift Tırnak | double quotation marks | ” … “ |
| Tek Tırnak | single quotation marks | ‘ … ‘ |
| İsteğe bağlı | option | [ ... ] |
| Tekrarlı | repetition | { … } |
| Gruplama | grouping | ( … ) |
| Yorum | comment | (* … *) |
| Özel dizilim | special sequence | ? … ? |
| Hariç | exception | - |
Yukarıdakitabloda ilk 6 ifade standart BNF gösteriminde de kullanılan ifadelerdir. Ancak son 6, koyu renkle yazılmış ifade EBNF için gelen yeni eklentilerdir.
Bu kullanımlardan isteğe bağlı (option) olma durumunu gördük. Şimdi diğer durumları inceleyelim:
Tekrarlı ifade ( {} işaretleri arasındaki ifadeler), düzenli ifadelerde (regular expression) kullanılan * işlemine benzetilebilir. Bu işlem basitçe bir bilginin istenildiği kadar tekrar edilmesi anlamına gelir.
Örneğin programlama dillerinin çoğunda kullanılan C tipi yorum’u düşünelim (comment). Bu yorumlarda istenilen kelimeler yazılabilir. Bu durumda yorum satırının tanımı aşağıdaki şekilde olabilir
<YORUM> ::= “/*” , { <harf> } , “*/”
<harf> ::= a | b | … | z
Yukarıdaki EBNF tanımında a’dan z’ye kadar olan harfler, <harf> olarak tanımlanmış, ardından bu tanım <YORUM> içerisinde istenildiği kadar tekrarlanabilir anlamında {} işaretleri arasına yerleştirilmiştir.
EBNF’de ilave olarak dil tasarımcısının istediği yere kendi yorumlarını eklemesi de mümkündür. Buna göre tasarımcı (* *) işaretleri arasına istediği bilgiyi yazabilmektedir. Bu bilgi BNF işlemine tabi tutulmamaktadır.
EBNF’in belki de BNF’e göre en büyük eklentisi, hariç (fark) işlemidir. Yani bir bilgi grubundan başka bir bilgi grubunun çıkarılması durumudur.
Mesela bir dizgi (String) tanımı sırasında çift tırnaklar arasında herhangi bir yazı yazılabilir. Ancak bu yazının içerisinde çift tırnak bulunamaz çünkü bu durumda dizginin bittiğini belirten çift tırnak ile karışıklık oluşur. Bunu ifade için aşağıdaki EBNF gösterimini inceleyelim:
<DIZGI> ::= ‘ ” ‘ , { ?bütün karakterler? – ‘ ” ‘ } , ‘ ” ‘
Yukarıdaki yeni kuralda, bütün karakterlerden, çift tırnak karakteri ayrı tutulmuştur. Yine yukarıdaki gösterimde ?bütün karakterler? tanımı, özel bir dizilim görüntüsüdür.
« Kapak Fonksiyonu (Trapdoor Function) | İçerikten bağımsız dil (Context Free Language, CFL) »
Yorumlar
Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'EBNF (Uzatılmış BNF, Extended Backus Normal Form)' isimli yazı 19 Mar 2009 tarihinde, saat: 00:41 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 634 defa okunmuştur.
Benzer yazıları Automata (otomatlar, özdevinirler), Bilgisayar Kavramları, Bilgisayar Standartları, Derleyiciler 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.
Yazarın Kitabı
Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Sıralama işleminiz poligonu...
- Şadi Evren ŞEKER: bahsettiğiniz sıralama algoritması...
- Abdurrahman ulusoy: merhaba hocam. gelişigüzel...
- Oguz Okutan: Merhaba hocam.. Fonksiyonlarda degere göre...
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
Yakın Yazılar
EBNF (Uzatılmış BNF, Extended Backus Normal Form)
İkinci Normal Şekil (Second Normal Form) 2NF
extended euclidean ( uzatılmış öklit veya öklid ) bağlantısı ve algoritması
Uzatılmış Öklit Algoritması (Extended Euclid Algorithm)
Öklit Algoritması (Euclid Algorithm)
Doğrusal Ahenk (Linear Congruence)
Üçüncü normal şekil (Third Normal Form, 3NF)
Bağlantılar