Shift-çözümleme ayrıştırma - sorular


10

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.a,b,c,...TA,B,C,...N...X,Y,ZNTα,β,γ,...{NT}Aiωi

Ayrıca, açıklama boyunca, denklik ilişkisi kullanılır.κ0

İ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 .AiαβAiαβ,m,nnmβ

Dilbilgisi kuralı ile ve yapı , başlangıç ​​durumunda vardiya öğesi ile başlar .S0S$S0S$

Şimdi, otomasyonu oluşturmak için, durumundaki her öğe için bu alternatifler arasında karar verin :q

  1. Öğe bir kaydırma öğesi , bir geçiş olacaktır; burada ilk sembolüdür .AiαβqXqXβ

  2. Öğe bitmiş bir kaydırma öğesi , her kural için bir .AiωBjαAβ,i,0BjαAβ

  3. Öğ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çindeAiαβ,m,nXβXNXjωXjωAiαβ,m,nXqXqCiαXβ,m,nqCiαXβ,m,n+1q .

  4. Öğe, bir çözüm öğesi herhangi bir ve atılabilir, ancak önce bir çözüm öğesi ekleyin her kural için .Aiω,m,nBjαAβ,m,nBjαAβ

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 .r0,0$

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ı?κκ0FOLLOWLM

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 :)


bu soruyu sömürgeciliğe taşımayı öneriyor makaleye gelince, "muhtemelen" (?) hiç kimse tarafından uygulanmamış çok karmaşık bir algoritma gibi görünüyor. ana fikir keyfi ileriye bakmakla aynı zamanda doğrusal zaman ayrıştırma ile birleştirmek gibi görünüyor ...? ancak daha basit, daha standart, süper doğrusal bir algoritma ile kaç uygulama iyi olur? herhangi bir fikir, hangi yaklaşım bu yaklaşımla daha iyi çalışır? bir tane var ya da bir tane biliyor musun?
vzn

1
Çok güzel bir teorik alıştırma (tekniklere bakmadım). LR (k) 'nin tam gücünün sıklıkla kullanılmadığı göz önüne alındığında, pratik etki hakkında merak edilebilir. Bu tür çalışmalarda 2 problem görüyorum: (1) algoritma daha karmaşık hale geldiğinden, insan zihninin dilbilgisini düzeltmesi ve işe yaramadığı zaman sonuçlarını anlaması mümkün mü? Oldukça sofistike tekniklerin çalıştıklarında çok faydalı oldukları, ancak çalışmadığı zaman işleri daha da kötüleştirdiği sık sık bir gerçektir. (2) genel CF algoritmalarının doğrusal olmadığı durumlarda doğrusal olacaktır.
babou

Yanıtlar:


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.