Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Otomata Teorisinin Uygulama Alanları

Benzer bir sunumlar


... konulu sunumlar: "Otomata Teorisinin Uygulama Alanları"— Sunum transkripti:

1 Otomata Teorisinin Uygulama Alanları
ve DİlİMLEyİCİ(LEXİCAL ANALYSER) ÖrNEĞİ

2 Sunumun sebebi hakkında

3 Uygulama Alanları Doğal dil işleme(nlp) Biyoloji
Uygulama Alanları = q'lar ve 1 ve 0'lar ne olabilir? Doğal dil işleme(nlp) Biyoloji (Hücresel Otomat, Game of Life) Sıvı akışları Kozmoloji  Derleyiciler Bu sunuda derleyiciler alanındaki uygulamasını göreceğiz.

4 Bizim sunumuzun içeriği
Derste öğrendiklerimizin derleyicilerde nasıl kullanıldığı Basit bir dilimleyici projesi  Derste gördüğümüz NFA-Boş Kısacık bir Jflap özeti ve NFA-Boş'tan NFA'ya NFA'dan Jflap ile DFA'ya geçiş  DFA geçiş tablosu ve önemi  Teoriden koda TürkÇE'nin dilimleyicisinden örnek

5 Derste öğrendiklerimiz makineler
Alfabe = {a,b}

6 Derleyicilerde kullanılan makineler
Alfabe = {a,b,c,ç,d,e...z,A,B,C...Z} Tabi bu sadece bir anahtar kelime için verilmiş bir örnek, ileride ne kadar karmaşık olacağını göreceğiz.

7 Bizim sonlu sayıda(finite-state) makinasını anlamak için yapacağımız küçük proje
Proje kendisine gelen bir kaynak dosyasından, belli formatlardaki e- posta adreslerini, telefon numaralarını ve adresleri ayıklayan ve yanlarına e-posta, tel ve adres yazdıran küçük bir uygulama olacak. Bu formatlar aşağıdaki gibidir: ==> ==> ==> Apt:..../No: İzleyeceğimiz yol: bizim gereksinimlerimize göre Regular Expression == > NFA ==> DFA ==> Geçiş Tablosu ==> Tabloda gezen for döngüsü

8 Regular Expression Derste gördüğümüz bir regular expression
r = a(a+b)*aa Bu regular expression'un ürettiği diziler: L = { aaaaa,abbabaa..}  Fakat bize iki harf yetmeyeceğinden  r = (a+b+c+d+e+f+..+z),   r yerinede harf diyelim  harf = (a+b+c+d..+z) rakam = ( ) isim = (harf)(harf+rakam)*

9 Projemizin Regular Expression'ları
==> ==> ==> Apt:..../No:.... harf = (a+b+c+d..+z) rakam = ( ) isim = (harf)(harf+rakam)* Basit bir regular exp. örneği r = a(a+b)*aa e-posta = isim isim '.' com tel = '+90' (rakam)^3 '-' (rakam)^3 '-' (rakam)^2 '-' (rakam)^2 adres = 'Apt:' isim '/No:' isim  Not: (^ işareti üssüyü ifade etmektedir. 'x' tırnak işareti ise x'in mutlaka dizgide olacağını ifade eder. Biraz önceki regular expression'u hatırlayalım: 

10 E-posta için NFA e-posta = isim '@' isim '.' com

11 E-posta için NFA'dan DFA'ya e-posta = isim '@' isim '.' com

12 DFA'dan Geçiş Tablosu Bu tablo iki boyutlu A dizisi olsun
örnek olarak input[] = {abc} olsun

13 Sonuç Bir e-posta regular expression'u için bu kadar karmaşık işlemler gerektiriyor, hem e-posta hem adres hemde telefon için veya bir derleyicideki anahtar kelimeler, sabitler, değişkenler için pazar ne kadar karışır siz tahmin edin. Peki çözümü yok mu?  Bunun için sizin regular expressionlarınızı veren ve size java kodunu döndüren Jflex'e veya C++ için olanu flex'e müracaat edebilirsiniz. 


"Otomata Teorisinin Uygulama Alanları" indir ppt

Benzer bir sunumlar


Google Reklamları