つまり、特定の文法の完全な言語を自動的に表示するツールはありますか?
2 に答える
BNF スタイルの文法にはいくつかの特殊性があるかもしれませんが、一般に、特定の文脈自由文法 (BNF など) が曖昧であるかどうかを判断することはできません。
要するに、一般にそのツールは数学的に不可能であるため、ツールは存在しません。ただし、あなたのために働くことができるいくつかの特別なケースがあるかもしれません.
一般的に、いいえ。
しかし、実際的なアプローチとして、文法が与えられ、ルールごとに、有効な端末/非端末の可能な文字列を列挙し、ルールに2つ以上の同等の派生があるかどうかを確認することができます(あいまいになります)。
当社のDMS Software Reengineering Toolkitは、明示的な文法記述によって駆動される、任意のコンピューター言語用のプログラム変換システムです。DMS は、パーサー ジェネレーターを使用して GLR 解析エンジンを駆動します。
DMS のパーサー ジェネレーターは、オプションで、すべての文法規則にわたって反復的な深化検索を実行することにより、上記のあいまいさチェックを行います。これは、選択肢の列挙を効率的にガイドする解析テーブルがあるため、実用的です。選択した深さまでこのチェックを実行するように指示できます。興味深いサイズの深さを選択すると、長い時間がかかる可能性がありますが、実際には、大規模な文法で導入された多くのばかげたあいまいさを見つけるには、深さ 3 または 4 で十分です。通常、これは最初の文法のデバッグ中に、ほぼ正しいと思われる時点で行います。