كيف تُترجِمُ وتُشغِّل
هدفُك: تحويلُ ملفٍّ .ص إلى ملفٍّ تنفيذيٍّ ثمّ تشغيلُه.
الوصفةُ في سطرَين
sad-build برنامجي.ص -o برنامجي.exe
./برنامجي.exeخطوتانِ دائمًا. لا يُوجَدُ أمرٌ يقرأُ المصدرَ ويُنفِّذُه، لأنّ للّغةِ محرّكًا واحدًا: المترجِّمُ إلى كودٍ أصيلٍ عبرَ LLVM.
كيف تعرفُ أنّ الترجمةَ نجحت
المترجِّمُ صامتٌ عندَ النجاح: لا يطبعُ شيئًا، ورمزُ خروجِه 0، ويظهرُ ملفُّ الإخراجِ الذي سمّيتَه بـ-o. وأيُّ نصٍّ يظهرُ فهو تشخيصٌ — اقرأْه بـدليلِ الأخطاء.
إن نسيتَ -o
سمِّ ملفَّ الإخراجِ دائمًا. الوسيطُ الذي يلي -o هو الاسمُ الناتج:
sad-build برنامجي.ص -o مخرَج.exeتشغيلُ الناتج
على Windows في PowerShell أو في 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.
تحقّقٌ سريعٌ من التثبيت
sad-build --إصداروقد قِيسَ مخرَجُ المترجِّمِ نفسِه:
sadc - Sad Compiler 1.0.0
...
LLVM support: enabledأخطاءٌ شائعةٌ في هذه الخطوة
الملفُّ ليس UTF-8
مصدرُ لغةِ ص عربيٌّ، فاحفظْ ملفَّك بترميزِ UTF-8. محرِّرٌ يحفظُ بترميزِ نظامٍ محلّيٍّ يُفسِدُ الحروفَ قبلَ أن يراها المترجِّم.
غيّرتَ المصدرَ ولم يتغيّرِ السلوك
الملفُّ التنفيذيُّ لا يُعادُ بناؤه من تلقاءِ نفسِه. أعِدْ sad-build بعدَ كلِّ تعديل، ثمّ شغِّلِ الناتجَ من جديد.