問題タブ [context-free-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
843 参照

programming-languages - 与えられた文法の正しさを証明する方法は?

プログラミング言語の開発者が、自分の文法が正しいことをどのように検証して証明するのか疑問に思っています。新しい言語用の新しい文法を作成したとします。さまざまな種類のテスト プログラムを提供することで、単体テスト ツールで文法をテストできます。ただし、文法が正しいことを 100% 保証することはできません。言語開発者は、自分の文法が現実世界で正しいことをどのように保証しますか?

鉛筆と紙を使って新しい言語の文法を作成したとしましょう。しかし、私の文法は 2+2+ のように + で終わる式を受け入れます。間違いが見つからない場合は、この間違った文法を使用して言語を実装します。実装と単体テストの後、エラーを見つけることができます。実装を開始する前にそれを見つけることは可能ですか?

確かに、鉛筆と紙 (派生など) を使用していくつかのサンプル入力で文法を試すことができますが、いくつかのコーナーケースを見逃す可能性があります。より良いアプローチ、または実際の言語開発者が文法をテストする方法はありますか?