120 likes | 499 Views
Bağlama Duyarlı Diller. Context-Sensitive Languages. Chomsky Hiyerarşisi. Düzenli Diller. Deterministik veya deterministik olmayan sonlu durum otomatlarıyla (FSA) modellenebilirler. Düzenli ifadeler , bu düzeyde yer alırlar.
E N D
Bağlama Duyarlı Diller Context-Sensitive Languages
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.
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,Nkü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 }
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.
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
Örnek aaabbbccc aaabbbbcc
Örnek (devam) {anbncn | n ≥ 0}
Örnek (devam) aaabbbccc
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.