Kısa bir süre önce başlıkta belirtilen ayrıştırma tekniğini açıklayan bir makaleye rastladım . Ne yazık ki, söz konusu makalede kullanılan terminoloji benim kavrayışımın biraz ötesinde, bu yüzden inşaat algoritmasını daha sezgisel olarak kavramaya çalışıyorum. Başarılı olduğuma inanıyorum ( bu sunum ah-ha anının kaynağıydı), ancak tekniğe veya içerdiği terminolojiye aşina olan bir kişinin doğruluğunun doğrulanması büyük ölçüde takdir edilecektir.
Çözümü ele almamı açıklayacağım (eğer doğruysa, tekniği anlamaya çalışan diğer insanlara yardımcı olabileceğine inanıyorum) ve daha sonra başka sorular soracağım. Yanlış anlama olmadığından emin olmak için şu standart gösterimi kullanacağım: , , , ve gazetede olduğu gibi, kuralı belirtmek için sayı . Ancak, muhtemelen orijinal kağıttan farklı kavramlar kullanacağım.
Ayrıca, açıklama boyunca, denklik ilişkisi kullanılır.
İnşaat
Ayrıştırma otomat içindeki öğeler iki çeşidi vardır: bir şekilde basit LR (0) ürün Aramaya kaydırma ürün formu ve ürün diyorum ben çözmek öğeleri ; bunlar ayrıştırıcıya sembollerini giriş akışına geri itmesini ve ardından ilk sembolü üzerine kural numarasıyla azaltmasını söyler .
Dilbilgisi kuralı ile ve yapı , başlangıç durumunda vardiya öğesi ile başlar .
Şimdi, otomasyonu oluşturmak için, durumundaki her öğe için bu alternatifler arasında karar verin :
Öğe bir kaydırma öğesi , bir geçiş olacaktır; burada ilk sembolüdür .
Öğe bitmiş bir kaydırma öğesi , her kural için bir .
Öğe, bir çözüm öğesi , in ilk sembolü olsun . Eğer , bir kayma öğesi eklemek her kural için . Eğer başka ürün sahip , onların nokta lookahead gibi bir geçiş eklemek Otomaton'a. Her çözmek madde de bir çözülmesine et neden olur içinde .
Öğe, bir çözüm öğesi herhangi bir ve atılabilir, ancak önce bir çözüm öğesi ekleyin her kural için .
Bu elbette sadece bir taslak; aslında, önce devletin kapanması hesaplanmalıdır ve ancak o zaman geçişler / kaymalar ve kararlarla baş edebiliriz.
Daha sonra otomatın bir vardiya-çözüm ayrıştırma tablosuna dönüştürülmesi önemsizdir; sadece küçük bir varyasyon olarak, makalenin yazarları çözünürlüğünü kabul etme eylemi olarak yorumlamaktadır . Ortaya çıkan otomasyon göz önüne alındığında, kabul eylemi olarak bir kaymayı tedavi etmenin daha kullanışlı olduğunu gördüm .
Sorular
Birincisi, yukarıda açıklanan sürecin doğru olup olmadığı açıktır.
İkincisi denklik ilişkileri hakkında. Sadece denklem ilişkisinin , bitmiş bir vardiya kalemi görüldüğünde hangi çözüm öğelerinin getirildiğine karar vermekten sorumlu olduğunu tahmin edebilirim . , LSLR ayrıştırıcılarının setlerine çarpıcı bir şekilde benzer şekilde ortaya gibi görünüyor . Bu makalede "daha ince eşdeğerlik ilişkisi" sayfa 11 anlatılmaktadır; bu ilişkiyi sezgisel olarak yorumlamanın bir yolu var mı? Bilinen başka ilişkiler var mı?
Ve sonuncusu çatışma çözümü ile ilgilidir. Bu makale, bir vardiya-çözme otomatında neyin yetersizlik teşkil ettiğini iyi açıklamaktadır; geleneksel bir LR ayrıştırıcısındaki çatışmaları çözme yollarına benzer şekilde bu yetersizlikleri çözmenin bir yolu var mı? Öncelik ve ilişkilendirilebilirlik yoluyla yacc tarzı çakışma çözümlemesi gibi bir şey bir ShRe ayrıştırıcı üretecinde uygulanabilir mi?
Eğer tüm bunları okuduysanız teşekkürler ve herhangi bir cevap büyük takdir edilecektir :)