SlideServe
Menu
Préférences
© SlideServe · v2026

Sözdizimsel Çözümlemeye Giriş

zia avatar
43 diapositives · 779 Views · Oct 21, 2014

Sözdizimsel Çözümlemeye Giriş. Taslak. Düzgün Diller Sözdizimsel Analiz Anahatarı Context-free gram erler (CFG’s) Türetmeler( türetmeler ). Diller ve Makineler( Automata ). Bilgisayar Biliminde formal diller çok önemlidir Özellikle programla ma dillerinde RL(düzgün diller)

Sözdizimsel Çözümlemeye Giriş - slide 1
01 / 43Sözdizimsel Çözümlemeye Giriş
1 / 17

Télécharger la présentation

Sözdizimsel Çözümlemeye Giriş
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Sözdizimsel Çözümlemeye Giriş

  2. Taslak • Düzgün Diller • Sözdizimsel Analiz Anahatarı • Context-free gramerler (CFG’s) • Türetmeler(türetmeler)

  3. Diller ve Makineler(Automata) • Bilgisayar Biliminde formal diller çok önemlidir • Özellikle programlama dillerinde • RL(düzgün diller) • En çok kullanılan en zayıf biçimsel dil türüdür • Pek çok uygulaması vardır • Ayrıca CFGler işlenecektir

  4. RL’lerin Kısıtlamaları • Sezgi: Yeterince uzun zaman çalışan bir sonlu durum makinesinde durumların tekrar edilmesi gerekir • Bir sonlu durum makinesi belli bir durumu kaçıncı defa ziyaret ettiğini hatırlayamaz • Sonlu makinede sonlu hafız vardır. Bu hafıza • sadece bulunulan durumu saklar • Belli bir sayının dışında sayma yapamaz • Örnek:dengeli parantezlerden oluşan dil düzgün bir dil değildir: { (i )i | i>= 0}

  5. Çözümleyicinin fonksiyonu • Girdi: Sözcüksel analizden çıkan bir dizi token • Çıktı: Programın çözümleme ağacı(Çözümleme ağacı)

  6. IF-THEN-ELSE = INT INT ID ID Örnek • İlk if x = y then 1 else 2 fi • Çözümleyici girdi IF ID = ID THEN INT ELSE INT FI • Çözümleyici çıktı

  7. Sözcüksel Analizci ile karşılaştırma

  8. Çözümleyicinin rolü • Herhangi bir token dizisi bir program olamaz. . . • . . . Çözümleyici geçerli ve geçersiz token dizilerini ayırdedebilmelidir • İhtiyacımız olan • geçerli token dizilerini tanımlayacak bir dil ve • geçerli ve geçersiz token dizilerini ayırdedecek bir metottur

  9. Programlamadillerinin yapısı • programlama dilleri tekraralamalı(recursive) yapıya sahiptir • Matematiksel ifadelerden oluşan dili ele alalım: integer, +, * ve ( ) • Bir ifade(ifade) şunlardan biri olabilir: • Bir tamsayı • Bir ifade sonra “+” sonra başka bir ifade • Bir ifade sonra “*” sonra başka bir ifade • Bir ‘(‘ sonra bir ifade sonrabir ‘)’ • int , int + int , ( int + int) * int ifadelerdir

  10. Programlama dilleri için gösterim • Alternatif gösterim: E --> int E --> E + E E --> E * E E --> ( E ) • Bu kuralları yeniden yazma kuralları olarak kabul edebiliriz • E ile başlarız ve E’yi her gördüğümüz yerde sağ taraftaki alternatiflerden birini yazarız • E --> E * E --> ( E ) * E --> ( E + E ) * E --> (int + int) * int

  11. Gözlem • Bütün aritmetik ifadeler bir dizi yer değiştirmeyle elde edilebilir • Herhangi bir dizi yerdeğiştirme geçerli bir aritmetik ifade oluşturur • Bu aşağıdaki ifadeyi hiçbir şekilde elde edemeyeceğimizi de gösterir ( int ) ) Niçin? • Bu gösterim bir CFG’dir

  12. CFG’ler • Bir CFG aşağıdakilerden oluşur: • Bir küme sonlandırıcı olmayan değişken(non-terminals-sonlandırıcı olmayanlar)N • Genel olarak büyük harfler kullanılır • Bir küme sonlandırıcı(terminals-sonlandırıcı olanlar)T • Genel olarak küçük harfler veya noktalama işaretleri kullanılır • Başlangıç sembolü(start symbol-başlangıç sembolü)S (non-terminal -sonlandırıcı olmayanlar) • Bir küme üretim kuralı(productions) • E Є Nve E -->e , veya E --> Y1 Y2 ... Yn YiЄ N U T

  13. Örnekler:CFG Basit aritmetik ifadeler: E --> int E --> E + E E --> E * E E --> ( E ) • Birtane sonlandırıcı olmayan: E • Pek çok terminal: int, +, *, (, ) • Terminal denmesinin nedeni yerlerine başka bir şey yazılamamasından kaynaklanmaktadır • Genel olarak ilk üretim kuralında kullanılan sonlandırıcı olmayan sembol başlangıç sembolü olarak kabul edilir

  14. Bir CFG dili Üretim kurallarını yerdeğiştirme kuralları olarak düşünebiliriz: X --> Y1 ... Yn demek Xdeğişkeninin Y1 ... Yn ile değiştirilebileceğini gösterir X -->e iseXdeğişkeninin silinebileceğini ya da boş stringle değiştirilebileceğini gösterir

  15. Önemli Nokta • Başlangıç sembolü “S” içeren bir stringle başlanır • Stringteki sonlandırıcı olmayanX sembolleri üretim kurallarındaki bir sağ taraf ile değiştirilir X --> Y1 … Yn • Basamak (2) stringteki bütün semboller terminal olana kadar tekrarlanır

  16. Bir CFG Dili(Devam.) Daha teorik bir gösterimle X1 … Xi-1 Xi Xi+1… Xn--> X1 … Xi-1Y1 … Ym Xi+1 … Xn şekline aşağıdaki üretim kuralı varsa dönüştürülebilir Xi--> Y1 … Ym

  17. Bir CFG Dili(Devam.) Şu ifade X1 … Xn-->* Y1 … Ym eğer X1 … Xn--> … --> … --> Y1 … Ym O veya daha fazla basamakta elde edilebiliyorsa yazılabilir.

  18. Bir CFG Dili(Devam.) Gbaşlangıç sembolü Solan bir CFG olsun. Bu Ggramerinden oluşacak dil şu şekilde gösterilir: { a1 … an | S -->* a1 … anve her aibir terminaldir }

  19. Örnekler: • S --> 0ayrıca şöyle de yazılabilirS --> 0 | 1 S --> 1 Ürettiği dil { “0”, “1” } • Bu ne üretir?S --> 1 A A --> 0 | 1 • Bu ne üretir?S --> 1 A A --> 0 | 1 A • Bu ne üretir?S --> | ( S )

  20. Aritmetik Örnek Basit aritmetik ifadeler: Dilin bazı elemanları:

  21. Cool Örnek COOLdan bir parça:

  22. Cool Örnek (Devam) Dilin bazı elemanları

  23. Notlar CFG fikri önemli bir gelişmedir. Ancak: • Bir dile ait olup olmama “evet” veya “hayır” cevabı gerektirir • Fakat girdinin çözümleme ağacı da gereklidir • Hataları incelikle ele almalıdır • CFG yazabilecek uygulama aracı gereklidir (Örnek, bison)

  24. Notlar • Gramerin biçimi önemlidir • Pek çok gramer aynı dili üretebilir • Araçlar gramere duyarlıdır. • Not: Düzgün Diller(Örnek, flex) için kullanılan araçlar da düzgün ifade biçimine duyarlıdır, ancak pratikte bu genelde bir sorun teşkil etmez

  25. Türetmeler ve Çözümleme ağaçları Türetmebir üretim dizisidir S --> … --> … Bir türetme ağaç yapısı şeklinde gösterilebilir • Başlangıç sembolü ağacın kçküdür • X --> Y1 … Ynşeklindeki üretim kuralı için Y1, …, YnçocuklarıXdüğümünün altına eklenir

  26. Türetme Örnek • Gramer • String

  27. Türetme Örnek (Devam)

  28. Türetme Detaylar (1) E

  29. Türetme Detaylar (2) E E + E

  30. Türetme Detaylar(3) E E + E E * E

  31. Türetme Detaylar(4) E E + E E * E id

  32. Türetme Detaylar(5) E E + E E * E id id

  33. Türetme Detaylar(6) E E + E E * E id id id

  34. Türetmelerle İlgili Notlar • Bir Çözümleme ağacında şunlar vardır: • Yapraklarda sonlandırıcılar(Terminaller) • Ara düğümlerde sonlandırıcı olmayan değişkenler(Non-terminaller) • Yapraklarda soldan sağa gidiş orijinal girdidir • Çözümleme ağacı işlemlerdeki ilişkileri gösterir, ancak girdi stringi göstermez!

  35. Soldan(left-most)veSağdan(right-most) türetmeler • Örnek:soldan türetme • Her basamakta en soldaki değişken yerine başka bir ifade yerleştirilir • Sağdan türetme de benzer şekilde en sağdakinde değişiklik yapılarak elde edilir

  36. Sağdan Türetme Detayları (1) E

  37. Sağdan Türetme Detayları(2) E E + E

  38. Sağdan Türetme Detayları(3) E E + E id

  39. Sağdan Türetme Detayları(4) E E + E E * E id

  40. Sağdan Türetme Detayları(5) E E + E E * E id id

  41. Sağdan Türetme Detayları(6) E E + E E * E id id id

  42. Türetmeler ve Çözümleme ağaçları • Her çözümleme ağacı için soldan ve sağdan bir türetme vardır • Aradaki fark sadece dalların eklenme sırasıdır

  43. Türetmeler Özet • İlgilendiğimiz konu sadece şu soru değildir: s ЄL(G) • Aynı zamanda s için bir çözümleme ağacı gerekir • Bir türetme çözümleme ağacını tanımlar • Ancak bir çözümleme ağacı için pek çok türetme olabilir • Soldan ve sağdan türetmeler çözümleyici yazılımı için önemlidir