Birçok örnekte işe yarayan pratik bir yaklaşım [ancak her zaman değil, biliyorum], dizelerin yuva yapısını dilde bulmaya çalışıyor . "İç içe bağımlılıklar", dizenin farklı bölümlerinde aynı anda üretilmelidir.
Ayrıca temel araç kutumuz var :
bitiştirme: Dili ardışık iki bölüme ayırabilirseniz bu üretimi kullanınS→S1S2
birliği: ayrık parçalara ayrıldıS→S1∣S2
yineleme:S→S1S∣ε
örnek 1
İşte yuvalama için bir örnek (teşekkür ederim Raphael).
L={bkal(bc)manbo∣k,l,m,n,o∈N,k≠o,2l=n,m≥2}
Değiştir tarafından . Şimdi şartlarda düşebiliriz .2 l nn2ln
Değiştir tarafından (karıştırılmamalıdır? is 'oh' değil 'sıfır'). Birliği için araçlar uygulayın. Burada ile çalışıyoruz . Ayrıca iff ve burada yeni bir değişkendir. Değiştir tarafından .k≠ok>o or k<ook>ok>ok=s+os>0sks+o
L1={bs+oal(bc)ma2lbo∣l,m,o,s∈N,s>0,m≥2}
Bazı basit yazılar.
L1={bbsboalbcbc(bc)m(aa)lbo∣l,m,o,s∈N}
Şimdi iç içe geçmiş yapıyı görüyoruz ve bir dilbilgisi oluşturmaya başlıyoruz.
S1→TV , , (bakınız: burada birleştirme ve yineleme)T→bUU→bU∣ε
V→bVb∣W ( her iki tarafta 'ler )o b
W→aWaa∣X
X→YZ , ,Y→bcbcZ→bcZ∣ε
Örnek 2
K={akblcm∣l=m+k}
İlk "açık" bir yeniden yazma.
K={akbm+kcm∣m,k≥0}={akbmbkcm∣m,k≥0}
Dilbilimde buna "çapraz-seri bağımlılık" denir: serpiştirme (genellikle) güçlü bir şekilde bağlamsızlığı gösterir. Tabii ki ve biz kurtulduk.k,m,k,mm+k=k+m
K={akbk+mcm∣m,k≥0}={akbkbmcm∣m,k≥0}
yapımları olan , ,S→XYX→aXb∣εY→bYc∣ε
Benzer şekildeK′={akblcm∣m=k+l}={akblclck∣k,l≥0}
yapımları ile ,S→aSc∣XX→bXc∣ε
Son yorum: bu teknikler, dilinizi ümit edecek bir bağlamsız dilbilgisi konusunda size yardımcı olacaktır. Dilbilgisinin dilinizi tanımak için gerçekten işe yaradığından emin olmak için bir doğruluk kanıtı gerekli olabilir.