عن المشروع

PB-Compiler (`pbc`) هو إعادة تنفيذ نظيفة-room لعائلة مترجمات PowerBASIC، مكتوب بلغة C# الحديثة. هدفه الأساسي هو السماح بمترجمة شفرة BASIC القديمة من عصر DOS إلى ملفات تنفيذية حقيقية وقابلة للتشغيل بصيغة 16‑bit MS-DOS `.EXE` على أجهزة 64‑bit الحديثة. يركز المشروع على الولاء الصارم للهجات التاريخية، مما يضمن أن تتعامل البرامج بنفس الطريقة التي تتعامل بها تلك التي تنتجها المترجمات الأصلية الخاصة، بما في ذلك الأخطاء الموثقة. تشمل القدرات الرئيسية: **دعم اللهجات**: يدعم المترجم مجموعة واسعة من اللهجات عبر علم `--dialect`، يغطي lineage بورلاند (Turbo Basic، PowerBASIC 2.0‑3.5) و lineage مايكروسوفت (BASICA، GW‑BASIC، QuickBASIC 1.0‑4.5، QBasic، BASIC PDS). كل dialect يحدّ الميزات الأحدث ويُمكّن سلوكيات خاصة بالإصدار. **عقد الولاء**: بالنسبة للهجات التاريخية، يتم التحقق من المخرجات مقابل الملفات الثنائية الأصلية باستخدام حزام تفاضلي مدفوع بالأوراكل. هذا يضمن أن ينتج الكود المولد مخرجات متطابقة بايتًا بايت، مع الحفاظ على التوافق مع نظم البرمجيات القديمة. **خط أنابيب التحسين**: يتوفر خلفية تحسين تعتمد على SSA متقدمة عبر جميع اللهجات باستخدام علم `--optimize`. يتضمن هذا الخط أنابيب طي الثوابت، إزالة الكود الميت، إزالة التعبيرات الفرعية المشتركة، تقليل القوة، والمزيد. يمكنه تقليل حجم الملف الثنائي بشكل كبير (مثلاً، تصغير برنامج Hello World إلى 25 بايت) دون تغيير السلوك المرئي. **مجموعة PowerBASIC 3.6 الفائقة**: dialect مستقبلي (`pb36`) يضيف ميزات لغة حديثة مثل الدوال ذات التعبير الجسدي، الأز tuples، التحميل الزائد، المعلمات الافتراضية، lambdas/closures، العموميات، الكوروتين (`YIELD`), ومعالجة الاستثناءات المنظمة (`TRY/CATCH`). هذه اختيارية ولا تؤثر على كود PB 3.5 الحالي. **تنسيقات المخرجات**: يولد ملفات تنفيذية DOS MZ `.EXE` قياسية، وحدات مترجمة (`.PBU`), ومكتبات وحدات (`.PBL`). كما يدعم إخراج C99 قابل للنقل أو LLVM IR للمعالجة اللاحقة. **التثبيت والاستخدام**: تم بناؤه باستخدام .NET، يعمل على أي نظام يدعم .NET 6+. المستخدمون يستنسخون المستودع، يبنون باستخدام `dotnet`, ويجمعون مصادر BASIC باستخدام أداة سطر الأوامر `pbc`. يمكن اختبار النتائج في DOSBox أو على أجهزة DOS حقيقية.