Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Bağlama Duyarlı Diller
Context-Sensitive Languages
2
Chomsky Hiyerarşisi a* anbn anbncn Tip Dil Makine Karmaşıklık Örnek 3
Düzenli Diller FSA Doğrusal a* 2 Bağlam-Bağımsız Diller PDA Polinomial anbn 1 Bağlama Duyarlı Diller LBA Üstel anbncn Özyinelemeli Sayılabilir Diller Turing Makinesi Karar verilemez Herhangi bir hesaplanabilir fonksiyon
3
Düzenli Diller Deterministik veya deterministik olmayan sonlu durum otomatlarıyla (FSA) modellenebilirler. Düzenli ifadeler, bu düzeyde yer alırlar. Derleyicilerde, düzenli ifadeler kullanılarak, sözlüksel çözümleme aşamasında tokenlar belirlenir. Eğer A bir düzenli ifade ise, L(A) bu ifade ile tanımlanan dildir.
4
Bağlam – Bağımsız Diller
Sonlu sayıda terminal elemandan oluşan bir alfabe vardır (S). Sonlu sayıda terminal olmayan elemanları içeren bir küme vardır (N). S, N kümesinin elemanı olup, başlangıç sembolüdür. Dilin üretebileceği ifadeleri içeren kurallar kümesi vardır (R). Derleyicilerde, sözdizim çözümlemesi aşamasında bağlam bağımsız diller belirtilirken BNF notasyonu kullanılır. S = {a,b} N = {S} R = {S aSb, S }
5
Bağlama Duyarlı Diller
G = (N, Σ, R, S) A bir terminal olmayan sembol olmak üzere (A є N), bağlama duyarlı bir gramere ait üretim kuralları şu şekilde ifade edilir αAβ → αγβ α ve β, terminal veya terminal olmayan dizgiler (string) olmak üzere, α,β є (N U Σ)* γ, terminal veya terminal olmayan sembollerin boş olmayan bir dizgisi olmak üzere, γ є (N U Σ)+ |u|≤|v| olduğu sürece, u → v şeklindeki her üretim kuralı bağlama duyarlı bir gramere dahildir. Bağlama duyarlılık kavramı, α ve β dizgileri A’nın bağlamını oluşturduğundan ve A’nın γ ile değiştirilip değiştirilemeyeceğini belirledikleri için ortaya çıkar. Bağlam-bağımsız gramerlerde, terminal olmayan bir sembolün bağlamı dikkate alınmaz. Deterministik olmayan Turing makineleri olan LBA’lar ile ayrıştırılabilirler.
6
Bağlama Duyarlı Diller
S → ε S → aSBC S → aBC CB → BC aB → ab bB → bb bC → bc cC → cc Bu gramer, {anbncn | n ≥ 0} şeklindeki bir dili üretir. Bu dil karmaşıklık açısından bağlam-bağımsız düzeyden yukarıdadır. S → aSBc → aaSBcBc → aaabcBcBc → aaabBcBcc → aaabbBccc → aaabbbccc
7
Örnek aaabbbccc aaabbbbcc
8
Örnek (devam) {anbncn | n ≥ 0}
9
Örnek (devam) aaabbbccc
10
Anlamsal Çözümleme Programlama dilleri sadece bağlam-bağımsız yapılarla oluşturulamaz. Örneğin; bir değişkenin kullanımdan önce tanımlanmış olması veya ilerideki işlemlerde kullanılırken bu değişkenin tipinin bilinmesi gerekliliği yazılan kodda bağlamı oluşturur. Yazılan kodda belirli bir sözdizim kuralı sağlandığında, bu kuralın yorumlanması ve sonucunda neler yapılacağı da belirtilmelidir. Bu yorumlama işi de belirlenen bir yapının bağlamı içinde ne anlama geldiğinin çözümlenmesine bağlıdır. Derleyicilerde bağlama duyarlı bilgi kullanılarak analiz safhası tamamlanır.
11
Anlamsal Çözümleme ÜRETİM KURALI ANLAMSAL KURAL E: E ‘+’ E
{ $$ = $1 + $3; } E: E ‘*’ E { $$ = $1 * $3; } E: ‘(‘ E ‘)’ E { $$ = $2; } E: intcon { $$ = $1.val; }
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.