シフト解決解析-質問


10

私は最近、タイトルで言及されている解析手法を説明する論文に出くわしました。残念ながら、上記の論文で使用されている用語は、私の理解をいくらか超えているため、構築アルゴリズムをより直感的に把握するように努めています。私は成功したと思います(このプレゼンテーションはah-haモーメントのソースでした)が、このテクニックに慣れている人またはそこに含まれる用語のどちらかからの正しさの検証は非常にありがたいです。

ソリューションに対する私の見方を説明し(それが正しい場合は、この手法を理解しようとしている他の人々の助けになると思います)、後で追加の質問をします。:何の誤解がありません確実にするために、私は次の標準表記法を使用するつもりだ、B 、Cを、。。。∈ T、A 、B 、C 、。。。∈ N、、と、紙のようにはルール番号を示しますa,b,c,...∈TA,B,C,...∈Nα 、β 、γ 、。。。∈ { N ∪ T } * A I → ω I...X,Y,Z∈N∪Tα,β,γ,...∈{N∪T}∗A→iωi。ただし、コンセプトには、元の論文とは異なる名前を使用します。

また、説明全体を通じて、同値関係が使用されています。κ0

建設

構文解析オートマトンの内部には2種類のアイテムがありますというフォームの単純なLR(0)アイテムと、シフトアイテム と呼ぶのフォームのアイテム私が呼び出すアイテムは解決アイテムです。これらは、パーサーにシンボルを入力ストリームに戻し、次にルール番号だけ最初のシンボルで減らすように指示します。A I → α ∙ β 、M 、NA→iα∙βA→iα∙β,m,nM βnmβ

文法はルールで拡張され、初期状態のシフト項目で構築が始まります。S ′ 0 → ∙ S $S′→0S$S′→0∙S$

ここで、オートマトンを構築するために、状態各アイテムに対してこれらの選択肢を決定します。q

  1. アイテムがシフトアイテム場合、オートマトンに遷移があり、 は最初のシンボルです。Q X → Q " X βA→iα∙βq→Xq′Xβ

  2. アイテムが完成したシフトアイテム場合、解決アイテム for each rule。B J → α A ∙ β 、I 、0A→iω∙B→jαA∙β,i,0B→jαAβ

  3. アイテムが解決アイテム場合、を最初のシンボルとします。場合、シフトアイテムを各ルールに追加します。もし以外の項目有する、そのドット先読みとして遷移追加オートマトンに。すべて解決項目でqは解決項目をもたらすC I → α X ∙X β X ∈ N X J → ∙ ω X J → ω A I → α ∙ β 、M 、nはXのQ X → Q ' C I → α ∙ X β 、M 、んA→iα∙β,m,nXβX∈NX→j∙ωX→jωA→iα∙β,m,nXq→Xq′C→iα∙Xβ,m,nqにおいて Q '。C→iαX∙β,m,n+1q′

  4. アイテムは解決項目がある場合は任意の先読み情報に寄与せず、廃棄することができるが、最初の解決項目の追加Bのjは → α A ∙ β 、M 、Nそれぞれのルールのための B J → α A β。A→iω∙,m,nB→jαA∙β,m,nB→jαAβ

もちろん、これは単なるスケッチです。実際には、状態のクロージャを最初に計算する必要があり、それからのみ遷移/シフトと解決を処理できます。

r0,0$

ご質問

1つ目は、明らかに、上記のプロセスが正しいかどうかです。

κκ0FOLLOWLM

そして最後は紛争解決についてです。この論文は、シフト分解オートマトンの不適切性を構成するものをよく説明しています。従来のLRパーサーでの競合を解決する方法と同様に、これらの不備を解決する方法はありますか?優先順位と結合性によるyaccスタイルの競合解決のようなものをShReパーサージェネレーターに実装できますか?

これをすべて読んでくださればありがとうございます。


この質問をcstheoryに移行することをお勧めします。論文に関しては、「おそらく」(?)が誰も実装していない非常に複雑なアルゴリズムのようです。主なアイデアは、任意の先読みを組み合わせるだけでなく、線形時間解析と組み合わせることです...?しかし、より単純で、より標準的な、超線形アルゴリズムで何のアプリケーションが問題ないでしょうか?どんなアイデアでも、このアプローチでどのアプリケーションがよりうまく機能するでしょうか?持っているか知っていますか?
— vzn 2013

1
非常に素晴らしい理論的な演習(私は専門性を調べていませんでしたが)。LR(k)の全能力がしばしば使用されないことを考えると、実際の影響について疑問に思うかもしれません。この種の作業には2つの問題があります。(1)アルゴリズムがより複雑になるため、人間の心が文法をいじって結果が理解できない場合でも、うまくいかない場合があります。高度に洗練されたテクニックは、うまくいくとやりがいがありますが、うまくいかないと状況が悪化することはよくあることです。(2)一般的なCFアルゴリズムが線形でない場合、線形になります。
— babou 2014

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.