Skip to content

الفصل 38: المترجم (sadc)

مقدمة

المترجم sadc يحول كود لغة ص إلى ملفات تنفيذية أصلية باستخدام LLVM.

مراحل الترجمة

كود .ص → تحليل معجمي → تحليل نحوي → AST

   ملف تنفيذي ← LLVM IR ← SIR ← AST

1. التحليل المعجمي

يحول الكود إلى رموز (tokens):

"دالة جمع(أ، ب)" → [KEYWORD_FUNCTION, IDENTIFIER("جمع"), LPAREN, IDENTIFIER("أ"), COMMA, IDENTIFIER("ب"), RPAREN]

2. التحليل النحوي

يبني شجرة AST من الرموز.

3. SIR (Sad Intermediate Representation)

تمثيل وسيط خاص بلغة ص، يدعم 12 تعليمة:

التعليمةالوصف
LOADتحميل قيمة
STOREتخزين قيمة
ADDجمع
SUBطرح
MULضرب
DIVقسمة
CMPمقارنة
JMPقفز
CALLاستدعاء دالة
RETإرجاع
ALLOCحجز ذاكرة
FREEتحرير ذاكرة

4. LLVM IR

تحويل SIR إلى LLVM IR الذي يُحسّن ويُترجم إلى كود أصلي.

استخدام المترجم

bash
# ترجمة بسيطة
sadc برنامج.ص

# إنتاج LLVM IR للفحص
sadc برنامج.ص --emit-llvm

# إنتاج SIR للفحص
sadc برنامج.ص --emit-sir

مقارنة: مفسر مقابل مترجم

الميزةالمفسر (sad)المترجم (sadc)
السرعةأبطأأسرع بكثير
التطويرأسرعيحتاج ترجمة
التوزيعيحتاج المفسرمستقل
التنقيحأسهلأصعب

تمرين

جرب ترجمة برنامج بسيط باستخدام sadc وقارن أداءه مع التشغيل عبر المفسر.

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