決定論的なコンテキストフリーで目に見えるプッシュダウン言語にはどのような良い表記法がありますか?


10

確定的文脈自由言語(DCFL)と可視プッシュダウン言語(VPL)は、どちらも文脈自由言語(CFL)と通常言語(REG)の間の形式言語のセットです。CFLのBackus-Naur-FormやREGの正規表現のようなプレーンASCIIで表現できる読みやすい表記はありますか?


1
質問のタイトルで「良い」の意味を明確にすると役立つ場合があります。BFLを使用してDCFLを記述することの何が問題になっていますか?
伊藤剛

1
いいことですが、人間にとっては読み書きが簡単で、ASCIIに基づいている必要があります。BNFはすばらしい-正規表現はBNFのコンパクトなサブセットです。しかし、BNFのどのサブセットがDCFLを定義し、どのサブセットがVPLを定義するのでしょうか。
ジェイコブ

回答:


5

DCFLsに関しては、私はより良い書き込むことが明示的にフォームの法則すなわち決定性プッシュダウンオートマトンの遷移関数より表記、表示されていないで内の状態、スタックを記号、スタックシンボルのシーケンス、および入力記号または空の文字列。表記自体は確定性を強制しませんが、簡単にチェックできます。(BNFとしての)文脈自由文法の種類の表記法を使用すると、DCFLはCFLの適切なサブクラスであり、DaniCLによって指摘されているように、CFGがその言語が決定論的であるかどうかを一般的に判断できないため、問題が発生します。q,z,aq,γq,qQzγa

するVPLsについては、のCFGのための括弧/括弧スタイルは、フォームの規則で、良い十分だろうところ、非終端で、コール・シンボルリターンシンボル、および一連の定期的な内部シンボルと非終端記号が混在する式。VPLは(D)CFLでもあるため、プッシュダウンオートマトンの上記の表記を再利用して、スタック操作が呼び出しと戻りに一致することを確認するか、ネストされた単語オートマトンの遷移関係を書き留めることもできます(冗長性は低くなります)。 。AaαbAabα

編集:考えてみるとRelaxNGのコンパクトな構文のようなXMLスキーマの表記法(ASCII表記法)は、VPLに簡単に使用できます。タグにいくつかの命名規則を適用する必要があるだけです。たとえば、呼び出し記号タグ "<ab>"は、戻り記号終了タグ "</ ab>"と一致します。ab


ありがとう!DCFLに関しては、これは正しい方向だと思います。具体的な構文には、正規表現によって解析されるサブセットの便利な省略形があります。VPLについては、XMLのようなツリーモデルとは対照的に、VLPがぶら下がりの呼び出しと戻りシンボルを持つことが許可されているため、まだわかりません。これを、任意のXMLツリーからのSAXイベントの任意のサブシーケンスと比較することができます。RelaxNGがこれを説明できるとは思えません。
ジェイコブ

備考...を使用することは決定論的です。ポイントの横にあります-すべてのDCFLを非常に明確に説明するCFGのサブクラスがあるかどうかについては何も述べていません。LR(k)文法など。
reinierpost

@reinerpost:true、しかし(私の弁護では)LR(1)の状態をチェックする必要があるため、構文表記を提供するためにLR(1)文法を検討しません。
シルヴァン

3

正規表現を見つけるには、次のことを考慮してください。DCFLのクラスは、LR(k)文法によって生成された言語のクラスと同等であり、これもLR(1)と同等です。つまり、DCFLごとにLR(1)文法を見つけることができます。もちろん、LR(1)文法はまだコンテキストフリーの文法ですが、特別なプロパティがあります。LR(1)文法から、パーステーブルを簡単に作成して、決定論的パーサーを導くことができます(1シンボルの先読み、したがってLR (1))。これらの解析テーブルは、多少読みにくくなりますが、別の表現になります。

ちなみに、与えられた文脈自由言語が決定論的であるかどうかは決定できないことに注意してください(Greibachの定理)。

私はVPLについて聞いたことがないことを認めなければなりません。


まあ、正準表現はめったに読みにくいですが、指示に感謝します。グレイバッハの定理がDCFLであると決定できない言語がCFLにあると述べている場合、どのようにこの言語を指定しますか?文法がある場合、それをバッカスナウアフォーム(BNF)で表すことができます。そのため、Greibachの定理は、DCFLを正確に表すBNFのサブセットがないことを示唆しているようです。目に見えるプッシュダウン言語は「ネストされた単語」とも呼ばれます。このクラスの言語は比較的新しいですが、順序付けられたツリーや類似の構造の解析に関連しています。
ジェイコブ

決定不可能性の問題について:文脈自由文法(CFG)がそれを生成している場合、その言語はCFLです。CFGが指定されている場合は、この文法がLR(k)であるかどうか、つまり確定的かどうかを判断できます。(同じことがプッシュダウンオートマトンにも当てはまります-特定のPDAが確定的であるかどうかを確認するのは簡単です)。ただし、LR(k)ではないCFGがあると仮定します-これは、言語がDCFLではないことを意味しません; LR(k)文法を見つけることができないだけかもしれません。
DaniCL

「この文法がLR(k)かどうかは、固定されたkに対して決定できます」。
2010年

@ヤコブ:グレイバッハの定理はそれを述べておらず、たとえそうであっても、任意の CFGが通常の言語の適切な表記法ではないように、DCFGの適切な表記法ではないことを意味します( CFGは、通常の言語も決定不可能であると説明しています)。ただし、CFGのサブクラス(たとえば、通常の言語の通常の文法)を選択しても問題はありません。
reinierpost

ここの教科書には、ずさんな言い回しの伝統があります。彼らは、「CFLが規則的/決定論的であるかどうかがはっきりしないのに、CFLが規則的/決定論的であるかどうかがわからない」という発言をする傾向があります。言語"。
reinierpost 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.