「新しい言語に取り組んでいる」ときに参照 BNF を正しく取得しようとしている場合、参照文法を特定のパーサー ジェネレーターに偏らせたくないでしょう。Bison (LALR(1)) または ANTLR(LL*) のテスト文法を書く際の問題の 1 つは、まさにそれを行うことです。また、「実際に解析できるように BNF ルールをコーディングするにはどうすればよいか」ということにこだわる必要もありません。おそらく、パーサー ジェネレーターではなく、文法の作業に関心があるからでしょう。
したがって、完全なコンテキスト フリー パーサー ジェネレーターを使用することをお勧めします。これにより、最小限の労力で最も自然な形で文法を書くことができます。これは、「テキスト エディター」、「エディター テスト ウィンドウ」などをあきらめることを意味するかもしれませんが、私の経験では (私のスタック オーバーフロー バイオを確認してください)、コンテキスト フリー パーサー ジェネレーターを使用すると、これらの機能が完全に圧倒されます。Edit-save-parse はそれほど手間がかかりません。
Bisonにはコンテキストフリーのパーサー生成を提供するGLRオプションがあり、オープンソースであることを理解しています。したがって、文法をテストするだけでよいかもしれません。
当社のDMS Software Reengineering Toolkitは商用であり、GLR パーサーも提供します。GLR パーサーは、C、C++、COBOL などの 30 以上の完全な言語を多数の方言で実装するために使用されているほか、Python、Ruby、PHP などの最新の言語も実装しています。 、 ....
DMS と Bison の違いは、DMS が完全な言語アナライザー/トランスレーターの構築のすべての側面をサポートするように設計されていることです (Unicode lexing、エラー報告と回復を伴う GLR 解析、自動ツリー構築、シンボル テーブル構築、制御およびデータ フロー分析、変換、プリティプリンティング、...)。「新しい言語」を真剣に評価したい場合は、最終的にはこれらすべてを行う必要があり、Bison はこの道に沿った小さな一歩にすぎません。DMSはあなたをずっと運びます。