مراحل عمل مترجم الكود Phases of a Compiler

اقرأ في هذا المقال


عملية ترجمة الكود عبارة عن سلسلة من المراحل المختلفة، حيث تأخذ كل مرحلة مدخلات من مرحلتها السابقة، ولها تمثيلها الخاص للبرنامج المصدر، وتغذي مخرجاتها إلى المرحلة التالية من المترجم. دعونا نفهم مراحل المترجم.

مراحل عمل مترجم الكود:

1- التحليل المعجمي Lexical Analysis

تعمل المرحلة الأولى من الماسح كماسح ضوئي للنص. تقوم هذه المرحلة بمسح الكود المصدري كتدفق من الأحرف وتحويله إلى مفاهيم ذات معنى. يمثل المحلل المعجمي هذه المعجم في شكل الرموز المميزة على النحو التالي:

<token-name, attribute-value>

2- تحليل بناء الجملة Syntax Analysis

المرحلة التالية تسمى تحليل بناء الجملة أو التفسير. يأخذ “الرمز المميز” الناتج عن التحليل المعجمي كمدخلات ويولد شجرة التحليل (أو شجرة بناء الجملة). في هذه المرحلة، يتم التحقق من ترتيبات “الرمز المميز” مقابل قواعد كود المصدر، أي يتحقق المحلل اللغوي مما إذا كان التعبير الذي تم إنشاؤه بواسطة الرموز المميزة صحيحًا من الناحية التركيبية.

3- التحليل الدلالي  Semantic Analysis

يتحقق التحليل الدلالي مما إذا كانت شجرة التحليل التي تم إنشاؤها تتبع قواعد اللغة. على سبيل المثال، يتم تعيين القيم بين أنواع البيانات المتوافقة، وإضافة (string) إلى عدد صحيح. يقوم المحلل الدلالي أيضًا بتتبع المعرفات وأنواعها وتعبيراتها؛ سواء تم تعريفها قبل الاستخدام أم لا وما إلى ذلك. ينتج المحلل الدلالي شجرة بناء الجملة مشروحة كمخرجات.

4- تحسين الكود Code Optimization

المرحلة التالية تقوم بتحسين الكود للشفرة الوسيطة. يمكن افتراض التحسين على أنه شيء يزيل أسطر الكود غير الضرورية، ويرتب تسلسل العبارات من أجل تسريع تنفيذ البرنامج دون إهدار الموارد (وحدة المعالجة المركزية، والذاكرة).

5- كود الجيل Code Generation

في هذه المرحلة، يأخذ مُنشئ الكود التمثيل الأفضل للشفرة الوسيطة ويرسمها إلى لغة الآلة المستهدفة. كما يقوم مُنشئ الكود بترجمة الكود الوسيط إلى سلسلة من كود آلة يمكن إعادة تحديد موقعه. يؤدي تسلسل تعليمات كود الآلة المهمة كما يفعل الكود الوسيط.

6- جدول الرموز Symbol Table

إنها بنية بيانات يتم الحفاظ عليها في جميع مراحل المترجم. يتم تخزين جميع أسماء المعرفات وأنواعها هنا، حيث يسهل جدول الرموز على المحوّل البرمجي البحث بسرعة في سجل المعرف واسترداده. يستخدم جدول الرموز أيضًا لإدارة النطاق.


شارك المقالة: