Skip to content

كيف تُترجِمُ وتُشغِّل

هدفُك: تحويلُ ملفٍّ إلى ملفٍّ تنفيذيٍّ ثمّ تشغيلُه.

الوصفةُ في سطرَين

bash
sad-build برنامجي.ص -o برنامجي.exe
./برنامجي.exe

خطوتانِ دائمًا. لا يُوجَدُ أمرٌ يقرأُ المصدرَ ويُنفِّذُه، لأنّ للّغةِ محرّكًا واحدًا: المترجِّمُ إلى كودٍ أصيلٍ عبرَ LLVM.

كيف تعرفُ أنّ الترجمةَ نجحت

المترجِّمُ صامتٌ عندَ النجاح: لا يطبعُ شيئًا، ورمزُ خروجِه 0، ويظهرُ ملفُّ الإخراجِ الذي سمّيتَه بـ-o. وأيُّ نصٍّ يظهرُ فهو تشخيصٌ — اقرأْه بـدليلِ الأخطاء.

إن نسيتَ -o

سمِّ ملفَّ الإخراجِ دائمًا. الوسيطُ الذي يلي -o هو الاسمُ الناتج:

bash
sad-build برنامجي.ص -o مخرَج.exe

تشغيلُ الناتج

على Windows في PowerShell أو في bash:

bash
./برنامجي.exe

ورمزُ خروجِ البرنامجِ رمزُك أنت — والبرنامجُ الذي ينتهي طبيعيًّا يُرجِعُ 0. أمّا الخطأُ الزمنيُّ فيُرجِعُ رمزًا غيرَ صفر ويطبعُ رسالةً برمزٍ من الكتالوج، مثلًا:

[RUN002] الفهرس 10 خارج نطاق مصفوفة (الطول 3)

أعلامٌ تحتاجُها فعلًا

الأعلامُ التاليةُ مقيسةٌ على المترجِّمِ نفسِه (sad-build، ويُسمّي نفسَه sadc في مخرَجِ مساعدتِه):

العَلَمماذا يفعل
-o <ملفّ>اسمُ ملفِّ الإخراج
-O0-O3 · -Os · -Ozمستوى التحسين — والافتراضيُّ -O2
-cترجمةٌ بلا ربط ⇒ ملفُّ كائن
-gمعلوماتُ تنقيح
--لغة=ar · --لغة=enلغةُ رسائلِ المترجِّم
--اشرحشرحٌ مفصَّلٌ للخطأِ بدلَ السطرِ الموجَز
--بلا-ألوانتشخيصاتٌ بلا ترميزِ ألوانٍ (مفيدٌ في سجلّاتِ CI)
--إصدارإصدارُ المترجِّم
-hقائمةُ الأعلامِ كاملةً
الأعلامُ الطويلةُ عربيّةٌ بلا مرادفاتٍ إنجليزيّة

--إصدار لا --version، و--مساعدة لا --help. وقد قِيسَ: --version و--help و--verbose تُرفَضُ بـ«خيار غير معروف / unknown option». والأعلامُ القصيرةُ (-o، -O2، -c، -g، -h) قياسيّةٌ كما في أيِّ مترجِّمِ C.

تحقّقٌ سريعٌ من التثبيت

bash
sad-build --إصدار

وقد قِيسَ مخرَجُ المترجِّمِ نفسِه:

sadc - Sad Compiler 1.0.0
...
LLVM support: enabled

أخطاءٌ شائعةٌ في هذه الخطوة

الملفُّ ليس UTF-8

مصدرُ لغةِ ص عربيٌّ، فاحفظْ ملفَّك بترميزِ UTF-8. محرِّرٌ يحفظُ بترميزِ نظامٍ محلّيٍّ يُفسِدُ الحروفَ قبلَ أن يراها المترجِّم.

غيّرتَ المصدرَ ولم يتغيّرِ السلوك

الملفُّ التنفيذيُّ لا يُعادُ بناؤه من تلقاءِ نفسِه. أعِدْ sad-build بعدَ كلِّ تعديل، ثمّ شغِّلِ الناتجَ من جديد.

ثمّ

مُرخَّص بموجب رخصة MIT