タグ付けされた質問 「parsing」

5
Earleyパーサーから解析フォレストを回復しますか?
私は最近Earleyパーサーを読んでいて、これまで見た中で最もエレガントなアルゴリズムの1つだと思います。ただし、従来の意味でのアルゴリズムは認識機能であり、パーサーではありません。つまり、文字列が特定のCFGに一致するかどうかを検出できますが、解析ツリーは作成できません。私の質問は、解析ツリーではなく、指定された入力文字列のすべての可能な解析の解析フォレストを回復する方法です。 GruneとJacobの「Parsing Techniques:A Practical Guide」では、Earleyレコグナイザーの結果から解析フォレストを回復するために使用できるアルゴリズムを示していますが、実行時間はO(n k + 1)、ここでkは文法の最長の生成の長さです。これは、ランタイムが文法のサイズの多項式ではないことを意味します。さらに、解析フォレストを回復するためのアルゴリズムを示唆するアルゴリズムに関するEarleyの元の論文は間違っています(例えば、富田によるこの記事の 762ページを参照)が、多くのソースはまだ解析フォレストを回復する適切な方法としてそれを引用していますが。 私の質問は、与えられた入力文字列の解析フォレストを多項式時間で回復できるかどうかです。私はここで、PDAのシミュレーションを使用して任意の解析用のキュービックサイズの解析フォレスト表現を生成するアルゴリズムを提供する論文を見つけました。理想的には、入力文法をCNFに変換せずにこれを実行したいです(実際に問題を解決します)。結果の解析フォレストはかなり乱雑になるからです。 あなたが提供できる助けをありがとう!

1
すべての明確な文法を線形時間で解析できますか?
非標準のLR解析をいじくり回すとき、O (n 2)時間の明確な文法を正確に解析できる解析方法(無限サイズのテーブルを使用し、多少実用的ではありません)を考え出しました。 :O (n2)O(n2)O(n^2) すべての明確な文法を線形時間で解析できますか? 私はどこかにこれが事実であることを読んだと確信していますが、インターネットを検索するときにそれは現れません。ここでも同じ質問がされましたが、私の知る限り答えはありませんでした。

3
スペースを使用したCFG解析
時間で文脈自由文法を解析できる多数のアルゴリズムがあります。行列乗算を使用すると、それよりも漸近的に高速化することもできます。O (n3)O(n3)O(n^3) ただし、私が知っている任意のCFGを解析するためのすべてのアルゴリズムは、最悪の場合のスペース使用量が(ただし、確かに、その行列乗算アルゴリズムのスペース使用量はわかりません)。私は、このスペース使用量を改善するアルゴリズムがあるかどうか疑問に思っていました(時間制限は無視します)。Ω (n2)Ω(n2)\Omega(n^2) 精神的に連結した後、私の心にポップアップ質問とΩ (N 2)全てのCFG解析アルゴリズムに結合した空間知っていた。おそらく実用的な関心はありませんが、単に知りたいと思うものです。CSG = ND SPA CE(N )⊆ D SPA CE(n2)CSG=NDSPACE(n)⊆DSPACE(n2)CSG = NDSPACE(n) \subseteq DSPACE(n^2)Ω (n2)Ω(n2)\Omega(n^2)

3
正規表現を文法に導いたBrzozowskiの方法の一般化?
Brzozowskiの微分法は、正規表現から決定的なオートマトンをうまく代数的に構築するための非常にきれいな手法です。私はこの手法のいくつかのキュートな一般化を行って、いくつかのより大きなクラスの文法を処理しましたが、アルゴリズムは簡単で、以前に発見された可能性が十分にあります。しかし、この手法の子孫へのグーグル参照はあまり現れていないようです。誰でも何か知っていますか?

2
LR解析を使用した順列フレーズ
置換語句は、標準(E)BNF文脈自由文法定義の拡張である:置換語句含まNプロダクション(または同等に、非終端)スルー。順列句の位置で、これらの生成物のすべてを正確に1回ずつ見たいと思いますが、これらの非終端記号の順序には興味がありません。{A1,…,An}{A1,…,An}\{ A_1, \dots, A_n \}nnnA nA1A1A_1AnAnA_n 例えば: S <- X { A, B, C } Y と同等です: S <- X A B C Y S <- X A C B Y S <- X B A C Y S <- X B C A Y S <- X C A …

2
解析ツリーを更新するための効率的なアルゴリズム
すでに字句解析されたコードの大きなブロックがあるとしましょう。 文字が1つだけ変更されたとします。私は解析を更新したいと思いますが、変更は全体に比べて非常に小さいため、再度全体を解析しないことが可能かどうかを知りたいのですが、再解析する範囲を決定するアルゴリズムがある場合、およびトークン境界の移動に適切に対処するため。 前もって感謝します!


1
shift-reduce解析と区切られた継続の関係?
シフト削減構文解析手法と区切られた継続との間の関係を公式化した人はいますか? ボトムアップパーサー(たとえば、LRパーサー)を構築するとき、文法を取り、解析状態をアイテムのセットとして表します:形式の拡張された生成。ここで、αとβは終端と非終端のシーケンスです。マーカー∙は、パーサーが文字列に到達した距離を表し、αはこれまでに見たものを表し、βはまだ解析される可能性があるものの予測を表します。A → α ∙ βA→α∙βA \to \alpha \bullet \betaαα\alphaββ\beta∙∙\bulletαα\alphaββ\beta LR解析オートマトンの遷移におけるシフトアクションは、スタックのプレフィックスをに一致させ、それをAに置き換えます。このようなスタックの深い操作は、制御演算子の効果に似ていますが、これは定性的な観察にすぎません。αα\alphaAAA シフトリデュース解析とシフト/リセットなどの区切られた制御演算子との関係を研究した人はいますか?


4
パーサー理論に関する良い本は?
私のJavaプロジェクトの1つはパーボイルドのフォークであり、AntlrやJavaCCなどとは異なり、パーサーは実行時に生成されます。生成された文法は、解析式文法、またはPEGです(別の用語は「packrat」です)。 ランタイム生成は複雑さを追加しますが(バイトコード生成が含まれます)、別の側面はパーサー理論自体に関連します。残念ながら、私にはコンピューターサイエンスの確かな背景がないため、既存のコードを既存の概念(この場合はパーサー)にマッピングするための理論的な知識が不足しています。 私の購入したり読んだりできるパーサーに関する優れた参考書や、インターネット上のリンクさえあれば、理論的な知識が足りないため、このような「マッピング」を構築するのに役立ちますか?

2
チョムスキー正規形法:CYKパーサーのパフォーマンスへの影響?
チャートパーサーは、Chomsky正規形に基づいて実装することも、プロダクションルールに直接基づいて実装することもできます。とりあえず、チョムスキー正規形を使用するCYKチャートパーサーがあると仮定しましょう。2値化は一意に定義されていません。これはCYKチャート解析のパフォーマンスに影響しますか?これを利用して、CYKチャートパーサーのパフォーマンスを改善できますか?

1
完全線形時間の正規表現マッチング
固定サイズのアルファベットが重要であると仮定して、サイズnの正規表現がサイズmの文字列と一致するかどうかをチェックするアルゴリズムはありますか?O(n+m)O(n+m)O(n+m)nnnmmm 標準のNFAアルゴリズムは最悪の場合です。Groz et al。すべてではなく、さまざまな正規表現クラスの線形時間を実現します。より良い結果はありますか?O(nm)O(nm)O(nm) Groz、B.、Maneth、S.&Staworko、S.(2012年5月)。線形時間での決定論的な正規表現。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.