Belirleyici bağlamdan bağımsız ve gözle görülür aşağı itilen diller için hangi iyi gösterimler var?


10

Deterministik bağlamdan bağımsız diller (DCFL) ve görünür şekilde aşağı itilen diller (VPL), bağlamdan bağımsız diller (CFL) ve normal diller (REG) arasındaki biçimsel diller kümesidir. CFL için Backus-Naur-Form ve REG için düzenli ifadeler gibi düz ASCII'de ifade edilebilen okunabilir bir gösterim var mı?


1
Sorunun başlığında “iyi” nin anlamını açıklığa kavuşturmak yararlı olabilir. DCFL'yi tanımlamak için BNF kullanmanın nesi yanlış?
Tsuyoshi Ito

1
İyi anlamda, insanlar için okunması ve yazılması kolay olmalı, bu yüzden ASCII'ye dayanmalıdır. BNF harika - düzenli ifadeler BNF'nin kompakt bir alt kümesidir. Fakat hangi BNF alt kümesi DCFL'yi ve hangisi VPL'yi tanımlar?
Jakob

Yanıtlar:


5

DCFLs ile ilgili olarak, daha iyi bir yazma açık bir şekilde kurallarını yani kararlı aşağı açılan otomatın geçiş fonksiyonu daha gösterimde, bkz yok ile devletler , , bir yığın sembol, yığın sembollerin bir dizisi ve giriş sembol ya da boş bir dizge. Gösterimin kendisi determinizmi zorunlu kılmaz, ancak kolayca kontrol edilir. Bağlamdan bağımsız bir dilbilgisi türünü (BNF olarak) kullanarak, DCFL'ler CFL'lerin uygun bir alt sınıfı olduğundan ve DaniCL tarafından not edildiği gibi, bir CFG'nin dilinin deterministik olup olmadığına genel olarak karar veremezsiniz.q , q Q z γ aq,z,aq,γq,qQzγa

VPLS ile ilgili olarak, CFGS bir parantez içi / parantez tarzı şeklinde kurallarına iyi yeterli olacaktır burada , bir uç-olmayan bir göstergesini, bir çağrı sembolü dönüş sembolü ve bir dizisi normal karışık iç semboller ve terminal olmayanlar üzerinde ifade. Herhangi bir VPL aynı zamanda bir (D) CFL olduğundan, aşağı itme otomata için yukarıdaki gösterimi tekrar kullanabilir ve yığın işlemlerinin çağrılarla ve geri dönüşlerle eşleşip eşleşmediğini kontrol edebilir veya iç içe sözcük otomatının (daha az gereksiz) geçiş ilişkisini yazabilirsiniz. .A a b αAaαbAabα

Düzenleme: düşünmek için, XML şemaları için bir gösterim, gibi RelaxNG --- gibi bir sözdizimi ASCII notasyonu ---, kolayca VPLs için kullanılabilir. Sadece bir çağrı sembolü için "<ab>" örneğin, bir açılış etiketiyle, etiketler için bazı adlandırma kurallarına uygulamak gerekiyordu dönüş sembolü için eşleştirme bir kapatma etiketi "</ ab>" .bab


Teşekkürler! DCFL'lerle ilgili olarak bunun doğru bir yön olduğunu düşünüyorum. Somut bir sözdiziminde, normal ifadelerle ayrıştırılan altkümeler için bazı kullanışlı kısaltmalar bulunur. VPL'lerle ilgili olarak henüz emin değilim, çünkü VLP'nin XML gibi ağaç modellerinin aksine sarkan çağrı ve dönüş sembolleri olmasına izin verilir. Bunu, keyfi bir XML ağacından SAX olaylarının keyfi bir alt dizisiyle karşılaştırabilirsiniz. RelaxNG'nin bunu tarif edebileceğinden şüpheliyim.
Jakob

Sözler kullanarak ... deterministik olduğunu. noktanın yanında - CFG'nin tüm DCFL'leri ve başka hiçbir şeyi açıkça tanımlayan bir alt sınıf olup olmadığı hakkında hiçbir şey söylemiyor. LR (k) gramerleri gibi.
reinierpost

@reinerpost: true, ama (savunmamda) LR (1) dilbilgisinin sözdizimsel bir gösterim sağladığını düşünmem , çünkü LR (1) koşulunu kontrol etmek gerekiyor.
Sylvain

3

Kanonik bir temsili bulmak için aşağıdakileri göz önünde bulundurun: DCFL sınıfı, yine LR (1) 'e eşdeğer olan LR (k) dilbilgisi tarafından üretilen dil sınıfına eşdeğerdir. Bu, her DCFL için bir LR (1) dilbilgisi bulabileceğiniz anlamına gelir. Tabii ki, bir LR (1) dilbilgisi hala bağlamsız bir dilbilgisidir, ancak özel bir özelliğe sahiptir: LR (1) dilbilgisinden, bir deterministik ayrıştırıcıyı yönlendirmek için kolayca ayrıştırma tabloları oluşturabiliriz (1 sembolün bakışıyla, bu nedenle LR (1)). Bu ayrıştırma tabloları, daha az okunabilir olsa da, başka bir temsil olacaktır.

Bu arada, belirli bir bağlamsız dilin deterministik olup olmadığının kararlaştırılamayacağını unutmayın (Greibach Teoremi).

İtiraf etmeliyim ki hiç VPL duymadım.


Kanonik temsillerin okunması nadiren kolaydır, ancak talimatlar için teşekkürler. Greibach Teoremi CFL'de DCFL'de olmaya karar verilemeyen diller olduğunu belirtirse - bu dilleri nasıl belirlersiniz? Bir grameriniz varsa, Backus Naur Formunda (BNF) ifade edebilirsiniz, bu yüzden Greibach Teoremi, DCFL'yi tam olarak ifade eden BNF'nin alt kümesi olmadığını ima ediyor gibi görünüyor? Görünür olarak aşağı itilen diller "iç içe kelimeler" olarak da bilinir. Bu dil sınıfı nispeten yenidir ancak sıralı ağaçları ve benzer yapıları ayrıştırmakla ilgilidir.
Jakob

Kararsızlık sorunu hakkında: dili oluşturan bağlamsız bir dilbilgisi (CFG) varsa dil CFL'dir. Size bir CFG verilirse, bu dilbilgisinin LR (k) olup olmadığına karar verebilirsiniz, bu nedenle deterministiktir. (Aynı durum aşağı itme otomatik verileri için de geçerlidir - belirli bir PDA'nın deterministik olup olmadığını kontrol etmek kolaydır.) Bununla birlikte, LR (k) olmayan bir CFG'niz olduğunu varsayalım - bu, dilin DCFL olmadığı anlamına gelmez ; bunun için bir LR (k) dilbilgisi bulamayabilirsiniz.
DaniCL

sabit k için "bu dilbilgisinin LR (k) olup olmadığına karar verebilirsiniz".
Sylvain

@ Jakob: Greibach teoremi, bunu söylemese bile, sadece keyfi CFG'lerin DCFG'ler için uygun bir gösterim biçimselliği olmadığı anlamına gelir , tıpkı normal diller için iyi bir gösterim biçimciliği olmadığı için ( CFG, normal bir dilin de kararsız olduğunu açıklar). Bununla birlikte, CFG'lerin bir alt sınıfının seçilmesinde yanlış bir şey yoktur (örneğin, normal diller için normal gramerler).
reinierpost

Burada ders kitaplarında özensiz ifadeler geleneği vardır: "CFL düzenli / deterministik olup olmadığına karar verilemez" gibi bir ifadeye sahip olma eğilimindedirler. "Bir CFG düzenli / deterministik tarif ederse karar verilemez dil".
reinierpost
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.