أول لغة برمجة نُظُم مُصرَّفة بصياغة عربية
اكتب تطبيقات أصلية على ويندوز ولينكس باستخدام كلمات مفتاحية وأرقام وعلامات ترقيم عربية
| الميزة | الوصف |
|---|---|
| 🖥️ تصريف أصلي | تُصرِّف الشيفرة إلى ملف تجميع (.s) لمعمارية x86-64 ← ثم تُنتج ملفات تنفيذية أصلية (ويندوز: PE/COFF، لينكس: ELF) |
| 🌐 تعدد الأهداف | دعم أولي لهدفين: x86_64-windows (COFF) و x86_64-linux (ELF) مع خيار --target |
| 🌍 صياغة عربية كاملة | كلمات مفتاحية عربية، وأرقام (٠-٩)، وعلامات ترقيم (. ؛) |
| 🧩 شيفرة معيارية | #تضمين، تصريف متعدد الملفات، وملفات ترويسة .baahd |
| 🔧 المعالج القبلي | #تعريف، #إذا_عرف، #الغاء_تعريف |
| ⚡ الدوال | تعريف الدوال واستدعاؤها مع معاملات وقيم إرجاع |
| 📦 المصفوفات | مصفوفات ثابتة الحجم محلية/عامة مع تهيئة {...} (جزئية + تعبئة بالأصفار) |
| 🔄 تدفّق التحكّم | إذا/وإلا، طالما، لكل |
| 🎯 تحكّم متقدّم | اختر، حالة، افتراضي، توقف، استمر |
| ➕ المعاملات كاملة | معاملات حسابية ومقارنة ومنطقية مع تقييم قصير |
| 📝 دعم النصوص | ثوابت السلاسل النصية ("...") وثوابت المحارف ('...') |
| ❓ منطق بولياني | النوع منطقي مع صواب وخطأ |
| ⌨️ إدخال المستخدم | العبارة اقرأ لقراءة عدد صحيح من المستخدم |
| ✅ سلامة الأنواع | تدقيق ثابت للأنواع (ابتداءً من 0.2.4+) مع تحليل دلالي |
| 🔄 تحديث ذاتي | مُحدِّث مدمج (baa update) — ويندوز فقط حالياً |
| العنصر | مدعوم | ملاحظات |
|---|---|---|
| نظام التشغيل | ويندوز (x86-64) + لينكس (x86-64) | على لينكس يتم إنتاج ELF والربط باستخدام GCC المضيف حالياً |
| سلسلة الأدوات | ويندوز: CMake 3.10+ + MinGW-w64 GCC / لينكس: CMake 3.10+ + GCC/Clang | على ويندوز نستخدم MinGW، وعلى لينكس نستخدم GCC/Clang المضيف |
| ترميز ملفات المصدر | UTF-8 | يتطلب النص العربي ملفات بترميز UTF-8 |
| الطرفية | ويندوز تيرمنال / باورشِل | فعِّل UTF-8 إذا ظهر الإخراج بصورة غير سليمة |
ويندوز (MinGW):
git clone https://github.com/OmarAglan/Baa.git
cd Baa
mkdir build
cd build
cmake ..
cmake --build .لينكس (GCC/Clang):
git clone https://github.com/OmarAglan/Baa.git
cd Baa
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/baa --versionأنشئ ملف hello.baa (
صحيح الرئيسية() {
اطبع "مرحباً بالعالم!".
إرجع ٠.
}
# التصريف
.\baa.exe ..\hello.baa
# التشغيل
.\out.exe# التصريف
./baa ../hello.baa
# التشغيل
./outافتراضياً يختار المُصرِّف هدف النظام المضيف. يمكنك تحديده صراحةً:
baa --target=x86_64-windows البرنامج.baa
baa --target=x86_64-linux البرنامج.baaملاحظة (0.3.2.8.4+):
- عند اختلاف الهدف عن نظام المضيف، يدعم المُصرّف حالياً -S فقط (توليد ملف تجميع). التجميع/الربط العابر للأهداف مؤجل.
- ما زال تمرير معاملات الفاصلة العائمة وSIMD غير ممثل بالكامل. تمرير معاملات الأعداد الصحيحة/المؤشرات عبر السجلات والمكدس يعمل.
-fPIC/-fPIE(لينكس/ELF): خيارات أولية لـ PIC/PIE (حالياً التأثير الأساسي هو وضع الربط PIE عند-fPIE).-fstack-protector/-fstack-protector-all(لينكس/ELF): إضافة كناري حماية المكدس.
المخرجات: مرحباً بالعالم!
// حساب مجموع مصفوفة
صحيح الرئيسية() {
// التصريح بمصفوفة من ٥ أعداد صحيحة
صحيح قائمة[٥].
صحيح مجموع = ٠.
// ملء المصفوفة بالقيم: ٠، ١٠، ٢٠، ٣٠، ٤٠
لكل (صحيح س = ٠؛ س < ٥؛ س = س + ١) {
قائمة[س] = س * ١٠.
}
// جمع جميع القيم
لكل (صحيح س = ٠؛ س < ٥؛ س = س + ١) {
مجموع = مجموع + قائمة[س].
}
اطبع "المجموع هو: ".
اطبع مجموع.
إرجع ٠.
}
المخرجات: المجموع هو: ١٠٠ (٠ + ١٠ + ٢٠ + ٣٠ + ٤٠)
| المستند | الوصف |
|---|---|
| دليل المستخدم | البدء والاستخدام الأساسي |
| الكتاب العربي | تعلّم/مرجع عربي شامل (مسودة) |
| مواصفة اللغة | مرجع كامل للصياغة والمزايا |
| البنية الداخلية للمُصرِّف | المعمارية وتفاصيل التنفيذ |
| مرجع واجهة البرمجة | توثيق الواجهة الداخلية للمُصرِّف |
| خارطة الطريق | خطط التطوير المستقبلية |
| سجل التغييرات | تاريخ الإصدارات |
- CMake 3.10+
- MinGW-w64 مع GCC
- باورشِل (ويندوز)
- Git (لاستنساخ المستودع)
# استنساخ المستودع
git clone https://github.com/OmarAglan/Baa.git
cd Baa
# إنشاء مجلد البناء
mkdir build
cd build
# التوليد ثم البناء
cmake ..
cmake --build .
# أصبح المُصرّف الآن في: build/baa.exe# تشغيل مجموعة اختبارات الانحدار (المقترح)
python .\tests\regress.py
# اختبار سريع بسيط (برنامج صغير)
# توليد ملف test.baa
gcc ..\make_test.c -o make_test.exe
.\make_test.exe
# تصريف وتشغيل
.\baa.exe .\test.baa -o test.exe
.\test.exeالمخرجات المتوقعة:
1
0
0
للتحقق من أمثلة التوثيق مقابل التنفيذ:
cmake -S . -B build
cmake --build build
.\build\baa.exe --help
.\build\baa.exe --versionولفحص سريع طرف-إلى-طرف:
gcc .\make_test.c -o .\build\make_test.exe
.\build\make_test.exe
.\build\baa.exe .\build\test.baa -o .\build\test_suite.exe
.\build\test_suite.exe