Ortam-Bağımsız Gramerler (OBG)

Slides:



Advertisements
Benzer bir sunumlar
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Advertisements

Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
SAYISAL DEVRELER BÖLÜM-2 Sayı Sistemleri ve Kodlar
% A10 B20 C30 D25 E15 Toplam100.  Aynı grafik türü (Column-Sütun) iki farklı veri grubu için de kullanılabilir. 1. Sınıflar2. Sınıflar A1015 B20 C3015.
T.C. ORDU VALİLİĞİ İlköğretim Müfettişleri Başkanlığı TAM ÖĞRENME MODELİ TAM ÖĞRENME MODELİ.
Metrik koşullarını sağlıyor mu?
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Graf Teorisi Pregel Nehri
EĞİTSEL OYUNLAR DOÇ. DR. GÜLTEN HERGÜNER BÖLÜM: 2
OLASILIK TEOREMLERİ Permütasyon
MATEMATİK PROJE ÖDEVİ Adı-Soyadı:Nihat ELÇİ Sınıfı-Numarası:7/C 1057
ARAYÜZLER(INTERFACE) Öğr.Gör. Murat ASLANYÜREK. ARAYÜZ KAVRAMINA GİRİŞ  Arayüzler, soyut sınıflara benzer. Ancak yapı olarak bazı yönleriyle farklılıklar.
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ Dil Çevrimi (Hafta4) 1.
Probleme Dayalı Öğrenme (Problem Based Learning) Programlama Dilleri 2.
Bölüm 2 C Dilinin Temelleri
0-1 Sırt Çantası Problemi
Algoritma ve Programlamaya Giriş
Tarih Felsefesi.
TEK BOYUTTA HAREKET.
Bölüm 2: Bir Boyutta Hareket. Bölüm 2: Bir Boyutta Hareket.
ÜREME, BÜYÜME VE GELİŞME
Tüm ikililer arasında en kısa yollar
Yrd. Doç. Dr. Mustafa Akkol
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
DOĞAL SAYILAR TAM SAYILAR
BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ
Derinlik öncelikli arama (Depth-first Search(DFS))
İleri Algoritmalar 2. ders.
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
MAT – 101 Temel Matematik Mustafa Sezer PEHLİVAN *
X=(X,d) metrik uzayında bazı özel alt kümeler
Bu 10 arkadaş en güzel fikrin Eğitim Fakültesinin ön kapısında fotoğraf çekinmek olduğunu düşünürler ve okul bitmek üzere olduğundan bu işi her hafta yapmaya.
TEMEL GEOMETRİK KAVRAMLAR VE ÇİZİMLER
KÜMELER HAZIRLAYAN : SELİM ACAR
Sentaks ve Semantiği tanımlama
Pascal’da Kullanılan Standart Prosedür ve Fonksiyonlardan Bazıları
Bölüm 7 İfadeler ve atamalar.
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
İleri Algoritma Analizi
NİŞANTAŞI ÜNİVERSİTESİ
Komut düzeyi kontrol yapıları
NİŞANTAŞI ÜNİVERSİTESİ
ÖLÇME-DEĞERLENDİRME 1.DERS
LOJİK KAPILAR (GATES) ‘Değil’ veya ‘Tümleme’ Kapısı (NOT Gate)
Ayrıştırma Ağaçları Tanımlar Soldan ve Sağdan Türemeler ile İlişkisi
Düzenli Diller Hakkında Sorular (“ Karar Özellikleri ”)
Sonlu Özdevinirlere Giriş
NİŞANTAŞI ÜNİVERSİTESİ
İKİNCİ DERECEDEN DENKLEMLER
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Bilgisayar Bilimi Fonksiyon Yazma.
Değerler ve Değişkenler
Prof. Dr. Eşref ADALI Doç. Dr. Şule Gündüz Öğüdücü Sürüm-B
NİŞANTAŞI ÜNİVERSİTESİ
Evren-Örneklem, Örnekleme Yöntemleri 1
OBG’nin ABÖ’ye Dönüştürülmesi ABÖ’nün OBG’ye Dönüştürülmesi
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
Pascal’da Kullanılan Standart Prosedür ve Fonksiyonlardan Bazıları
Düzenli Dillerin Kapalılık Özellikleri
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Tanımlar Sonlu Özdevinirlerle Eşdeğerlik
MTM216 GÖRSEL PROGRAMLAMA
NİŞANTAŞI ÜNİVERSİTESİ
İleri Algoritma Analizi
OLASILIK Uygulamada karşılaşılan olayların birçoğu kesin olmayan diğer bir ifadeyle belirsizlik içeren bir yapıya sahiptir. Olasılık kavramı kesin olmayan.
8. Ders Tüm ikililer arasında en kısa yollar
RASTGELE DEĞİŞKENLER Herhangi bir özellik bakımından birimlerin almış oldukları farklı değerlere değişken denir. Rastgele değişken ise tanım aralığında.
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Ortam-Bağımsız Gramerler (OBG) Formalizm Türemeler Backus-Naur Şekli Soldan ve Sağdan Türemeler

‘Gevşek’ Yorumlar Ortam-bağımsız gramer dilleri tanımlamak için bir notasyondur. Sonlu özdevinirlerden daha güçlüdür, ama yine de tüm dilleri tanımlayamaz. İçiçie geçmiş yapılar için faydalıdır. Ör: programlama dillerindeki parantezler.

‘Gevşek’ Yorumlar – (2) Temel fikir, dizi kümelerini (yani dilleri) temsil eden “değişkenler” kullanmak. Bu değişkenler özyinelemeli olarak birbirleri cinsinden tanımlanırlar (genellikle). Özyinelemeli kurallarda (“üretimler”) sadece bitiştirme vardır. Bir değişken için alternatif kurallar birleşime de izin verir.

Örnek: { 0n1n | n > 1} için OBG Kurallar: S -> 01 S -> 0S1 Temel: 01 dilin içindedir. Tümevarım: w dilin içinde ise, 0w1 de dilin içindedir.

OBG Bileşenleri Terminaller = tanımlanan dilin alfabesinde olan semboller. Değişkenler = terminal-olmayanlar = her biri bir dili temsil eden sonlu sayıda semboller kümesi. Başlangıç Sembolü = dili tanımlamakta olduğumuz dil olan değişken.

Üretimler (kurallar) Üretim değişken -> değişkenler ve terminaller dizisi şeklindedir. Gelenek: A, B, C,… değişkenler. a, b, c,… terminaller. …, X, Y, Z terminal veya değişken. …, w, x, y, z sadece terminallerden oluşan diziler. , , ,… terminallerden ve/veya değişkenlerden oluşan diziler.

Örnek: Resmi (Formel) OBG { 0n1n | n > 1} için formel bir OBG. Terminaller = {0, 1}. Değişkenler = {S}. Başlangıç Sembolü= S. Kurallar = S -> 01 S -> 0S1

Türemeler – İçgüdü Bir OBG’in dizilerini başlangıç sembolü ile başlayıp, tekrar tekrar değişkenleri kurallarının sağ tarafları ile değiştirierek türetiriz. “A’nın kuralları” -> işaretinin solunda A olan kurallardır.

Türemeler – Şeklen A ->  bir kural ise, A =>  deriz. Örnek: S -> 01; S -> 0S1. S => 0S1 => 00S11 => 000111.

Tekrarlayan Türeme =>* “sıfır veya daha fazla türeme adımı” demektir. Temel: herhangi bir  dizisi için,  =>* . Tümevarım:  =>*  ve  =>  ise, o zaman  =>* .

Örnek: Tekrarlamalı Türeme S -> 01; S -> 0S1. S => 0S1 => 00S11 => 000111. So S =>* S; S =>* 0S1; S =>* 00S11; S =>* 000111.

Cümlesel Şekiller (Sentential Forms) Başlangıç sembolünden türeyen herhangi bir değişken ve/veya terminal dizisine cümlesel şekil denir. Resmi olarak,  bir cümlesel şekildir ancak ve ancak S =>* .

Bir Gramerin Dili G bir OBG ise, G’nin dili L(G) = {w | S =>* w}. Not: w bir terminal dizisi olmalı, S de başlangıç sembolü. Örnek: G’nin kuralları şöyle olsun. S -> ε and S -> 0S1. L(G) = {0n1n | n > 0}. Not: ε sağ tarafta kullanılabilir.

Ortam-Bağımsız Diller Bir OBG tarafından tanımlanan bir dile ortam-bağımsız dil (OBD) denir. Düzenli olmayan OBD’ler vardır (mesala, bir önceki örnekte verilen dil). Ancak OBD olmayan diller de vardır. İç güdüsel olarak: OBD’ler sadece iki şeyi sayabilir, üç değil.

BNF Gösterimi Programlama dilleri için gramerler çoğunlukla BNF (Backus-Naur Form ) göserimi ile yazılırlar Değişkenler, <…> içinde sözcüklerdir; Örnek: <statement>. Terminaller çoğunlukla kalın yazılmış, veya altı çizilmiş çok karakterli dizlerdir; Örnek: while veya WHILE.

BNF Gösterimi – (2) -> yerine ::= kullanılır. | sembolü “veya” anlamında kullanılır. Sol tarafı ayni olan kurallar için kısa yol. Örnek: S -> 0S1 | 01 S -> 0S1 ve S -> 01 için kısa yoldur.

BNF Gösterimi – Kleene Kapatması … sembolü “bir veya daha çok” anlamında kullanılır. Örnek: <digit> ::= 0|1|2|3|4|5|6|7|8|9 <unsigned integer> ::= <digit>… Not: DD’lerin *’ı ile tam ayni şey değil. Anlamı: ’yı … yeni bir değişken A ve A -> A |  kuralları ile değiştirin.

Örnek: Kleene Kapatması Unsigned integers (işaretsiz tamsayılar) grameri aşağıdaki ile değiştirilebilir: U -> UD | D D -> 0|1|2|3|4|5|6|7|8|9

BNF Gösterimi: Seçmeli Elemanlar Onları seçmeli hale getirmek için, bir veya daha çok sembolü […] ile çevreleyin. Örnek: <statement> ::= if <condition> then <statement> [; else <statement>] Anlamı: [] terimini yeni bir değişken A ve A ->  | ε kuralları ile değiştirin.

Örnek: Seçmeli Elemanlar if-then-else grameri aşağıdaki ile değiştirilebilir: S -> iCtSA A -> ;eS | ε

BNF Gözterimi – Gruplama Bir ünite olarak işlem görmesi gereken sembol dizilerini {…} ile çevreleyin. Tipik olarak, onlardan sonra … kullanılır ( “bir veya daha çok”) Örnek: <statement list> ::= <statement> [{;<statement>}…]

Anlamı: Gruplama Dilerseniz, {} için yeni bir A değişkeni ve A ->  kuralı yaratabilirsiniz. {} yerine A kullanın.

Örnek: Gruplama L -> S [{;S}…] L -> S [A…] A -> ;S ile değiştirin. A stands for {;S}. Sonra L -> SB B -> A… | ε A -> ;S ile değiştirin B, [A…]’nın yerini tutar (sıfır veya daha çok A). Son olarak L -> SB B -> C | ε C -> AC | A A -> ;S ile değiştirin C, A…’nın yerini tutar .

Soldan ve Sağdan Türemeler Türemeler, dizi içindeki herhangi bir değişkeni kuralının sağı ile değiştirmemize izin verir. Netice olarak bir dizinin birçok türemesi olabilir. En soldaki (veya sağdaki) değişkenin seçilmesini zorunlu kılarak, bu “önemsiz farklılıkları” önlemiş oluruz.

Soldan Türemeler w bir terminaller dizisi ise ve A ->  bir kural ise, o zaman wA =>lm w olarak yazarız. Ayni zamanda,  0 veya daha çok =>lm adımında  olursa, o zaman  =>*lm  olarak yazarız. (lm = leftmost = soldan)

Örnek: Soldan Türeme Dengeli-parantezler grameri: S -> SS | (S) | () S =>lm SS =>lm (S)S =>lm (())S =>lm (())() Böylece, S =>*lm (())() S => SS => S() => (S)() => (())() bir türemedir, ama soldan değil.

Sağdan Türeme w bir terminaller dizisi ise ve A ->  bir kural ise, o zaman Aw =>rm w olarak yazarız. Ayni zamanda,  0 veya daha çok =>rm adımında  olursa, o zaman  =>*rm  olarak yazarız. (rm = rightmost = sağdan)

Örnek: Sağdan Türeme Dengeli-parantezler grameri: S -> SS | (S) | () S =>rm SS =>rm S() =>rm (S)() =>rm (())() Böylece, S =>*rm (())() S => SS => SSS => S()S => ()()S => ()()() ne soldan, ne de sağdan bir türemedir.