Skip to content
/ Baa Public

لغة برمجة نُظُم مُصرَّفة بصياغة عربية

Notifications You must be signed in to change notification settings

OmarAglan/Baa

Repository files navigation

شعار باء

الإصدار المنصة الرخصة

أول لغة برمجة نُظُم مُصرَّفة بصياغة عربية

اكتب تطبيقات أصلية على ويندوز ولينكس باستخدام كلمات مفتاحية وأرقام وعلامات ترقيم عربية


✨ المزايا

الميزة الوصف
🖥️ تصريف أصلي تُصرِّف الشيفرة إلى ملف تجميع (.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 إذا ظهر الإخراج بصورة غير سليمة

🚀 البدء السريع

1) بناء المُصرِّف

ويندوز (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

2) اكتب برنامجك الأول

أنشئ ملف hello.baa (⚠️ مهم: احفظ الملف بترميز UTF-8):

صحيح الرئيسية() {
    اطبع "مرحباً بالعالم!".
    إرجع ٠.
}

3) صرِّف وشغِّل

# التصريف
.\baa.exe ..\hello.baa

# التشغيل
.\out.exe
# التصريف
./baa ../hello.baa

# التشغيل
./out

4) اختيار الهدف (تعدد الأهداف)

افتراضياً يختار المُصرِّف هدف النظام المضيف. يمكنك تحديده صراحةً:

baa --target=x86_64-windows البرنامج.baa
baa --target=x86_64-linux   البرنامج.baa

ملاحظة (0.3.2.8.4+):

  • عند اختلاف الهدف عن نظام المضيف، يدعم المُصرّف حالياً -S فقط (توليد ملف تجميع). التجميع/الربط العابر للأهداف مؤجل.

القيود الحالية (0.3.4)

  • ما زال تمرير معاملات الفاصلة العائمة وSIMD غير ممثل بالكامل. تمرير معاملات الأعداد الصحيحة/المؤشرات عبر السجلات والمكدس يعمل.

خيارات نموذج الكود (0.3.2.8.3+)

  • -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

About

لغة برمجة نُظُم مُصرَّفة بصياغة عربية

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages