確定的文脈自由言語(DCFL)と可視プッシュダウン言語(VPL)は、どちらも文脈自由言語(CFL)と通常言語(REG)の間の形式言語のセットです。CFLのBackus-Naur-FormやREGの正規表現のようなプレーンASCIIで表現できる読みやすい表記はありますか?
確定的文脈自由言語(DCFL)と可視プッシュダウン言語(VPL)は、どちらも文脈自由言語(CFL)と通常言語(REG)の間の形式言語のセットです。CFLのBackus-Naur-FormやREGの正規表現のようなプレーンASCIIで表現できる読みやすい表記はありますか?
回答:
DCFLsに関しては、私はより良い書き込むことが明示的にフォームの法則すなわち決定性プッシュダウンオートマトンの遷移関数より表記、表示されていないで内の状態、スタックを記号、スタックシンボルのシーケンス、および入力記号または空の文字列。表記自体は確定性を強制しませんが、簡単にチェックできます。(BNFとしての)文脈自由文法の種類の表記法を使用すると、DCFLはCFLの適切なサブクラスであり、DaniCLによって指摘されているように、CFGがその言語が決定論的であるかどうかを一般的に判断できないため、問題が発生します。
するVPLsについては、のCFGのための括弧/括弧スタイルは、フォームの規則で、良い十分だろうところ、非終端で、コール・シンボルリターンシンボル、および一連の定期的な内部シンボルと非終端記号が混在する式。VPLは(D)CFLでもあるため、プッシュダウンオートマトンの上記の表記を再利用して、スタック操作が呼び出しと戻りに一致することを確認するか、ネストされた単語オートマトンの遷移関係を書き留めることもできます(冗長性は低くなります)。 。
編集:考えてみると、RelaxNGのコンパクトな構文のようなXMLスキーマの表記法(ASCII表記法)は、VPLに簡単に使用できます。タグにいくつかの命名規則を適用する必要があるだけです。たとえば、呼び出し記号タグ "<ab>"は、戻り記号終了タグ "</ ab>"と一致します。
正規表現を見つけるには、次のことを考慮してください。DCFLのクラスは、LR(k)文法によって生成された言語のクラスと同等であり、これもLR(1)と同等です。つまり、DCFLごとにLR(1)文法を見つけることができます。もちろん、LR(1)文法はまだコンテキストフリーの文法ですが、特別なプロパティがあります。LR(1)文法から、パーステーブルを簡単に作成して、決定論的パーサーを導くことができます(1シンボルの先読み、したがってLR (1))。これらの解析テーブルは、多少読みにくくなりますが、別の表現になります。
ちなみに、与えられた文脈自由言語が決定論的であるかどうかは決定できないことに注意してください(Greibachの定理)。
私はVPLについて聞いたことがないことを認めなければなりません。