私は、プログラミング言語開発者がどのように文法が正しいかを検証し、証明する方法を知っています。私が新しいlangaugeのための新しい文法を作ったとします。私は、さまざまな種類のテストプログラムを提供することによって、単位テストツールで文法をテストできます。しかし、私は文法が正しいことを決して100%保証しません。どのようにして言語デベロッパーは文法が現実世界で正しいことを保証しますか?与えられた文法の正しさを証明するには?
たとえば、鉛筆と紙を使って新しい言語の文法を作成しました。しかし、私は間違いを犯し、文法は2 + 2 +のような+で終わる式を受け入れます。私は間違いを見つけなければ、この誤った文法を使って自分の言語を実装します。実装とユニットテストの後、私はエラーを見つけることができます。実装を開始する前にそれを見つけることは可能でしょうか?
間違いなく、鉛筆と紙(派生など)を使っていくつかのサンプル入力を使って文法を試すことができますが、いくつかのコーナーケースが見逃されることがあります。実際の言語開発者が文法をテストする上で、より良いアプローチがありますか?
文法が「正しい」とはどういう意味ですか?あるいは、パーサーが予想される文法を正しく認識しているかを確認する方法を尋ねることを意味しましたか? – rici
理論的には、正確性の証明を生成します。これが現実世界で行われているかどうかは分かりませんが、私はそれを疑っています。しかし、正しさの証明がなければ、あなたは文法が正しいことを知らない。だから、文法が正しいかどうか、あるいは文法が正しいと定義されているのか、実際にどの言語が記述されているのかは分かりません。 – Patrick87
私の質問が更新されました。文法の正当性を証明するにはどうすればいいですか?リンクや説明はありますか? –