このプロジェクトについて

PB-Compiler (`pbc`) は、モダンな C# で書かれた PowerBASIC ファミリのコンパイラのクリーンルーム再実装です。主な目的は、DOS 時代のヴィンテージ BASIC ソースコードを、現代の 64 ビット ハードウェア上で実際に実行可能な 16 ビット MS-DOS `.EXE` バイナリにコンパイルできるようにすることです。プロジェクトは歴史的な方言への厳格な忠実度を強調し、オリジナルのプロプライエタリコンパイラが生成したプログラムと同一の動作を保証し、文書化されたバグも含めます。 主な機能は以下の通りです: **方言サポート**:`--dialect` フラグを通じて、Borland 系統(Turbo Basic、PowerBASIC 2.0‑3.5)および Microsoft 系統(BASICA、GW‑BASIC、QuickBASIC 1.0‑4.5、QBasic、BASIC PDS)を含む幅広い方言をサポートします。各方言は新しい機能をゲートし、バージョン固有の動作を有効にします。 **忠実契約**:歴史的な方言については、オラクル駆動の差分ハーネスを用いてオリジナルバイナリと出力を検証します。これにより、生成されたコードはバイト同一のプログラム出力を生み出し、レガシーソフトウェアエコシステムとの互換性を維持します。 **最適化パイプライン**:`--optimize` フラグにより、すべての方言で利用可能な SSA ベースの最適化バックエンドが提供されます。このパイプラインは定数畳み込み、デッドコード除去、共通部分式除去、強度削減などを含み、観測可能な動作を変更せずにバイナリサイズを大幅に削減できます(たとえば、Hello World プログラムを 25 バイトに縮小可能)。 **PowerBASIC 3.6 スーパーセット**:先進的な方言 `pb36` では、式本体関数、タプル、オーバーロード、デフォルトパラメータ、ラムダ/クロージャ、ジェネリクス、コルーチン (`YIELD`)、構造化例外処理 (`TRY/CATCH`) といった最新言語機能が追加されます。これらはオプトインであり、既存の PB 3.5 コードに影響を与えません。 **出力フォーマット**:標準の DOS MZ `.EXE` ファイル、コンパイルユニット (`.PBU`)、ユニットライブラリ (`.PBL`) を生成します。さらに、移植可能な C99 または LLVM IR を出力してさらなる処理に供することも可能です。 **インストールと使用方法**:.NET を使用して構築され、.NET 6+ をサポートするあらゆる OS で実行できます。ユーザーはリポジトリをクローンし、`dotnet` でビルドし、`pbc` CLI ツールで BASIC ソースをコンパイルします。結果は DOSBox または実際の DOS ハードウェアでテストできます。