مرحلة التحليل الدلالي في عملية ترجمة الكود Semantic Analysis

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


توفر دلالات اللغة معنى لبنائها، وتساعد الدلالات في تفسير الرموز وأنواعها وعلاقاتها مع بعضها البعض. في عملية ترجمة الكود يحكم التحليل الدلالي ما إذا كانت البنية النحوية التي تم إنشاؤها في البرنامج المصدر تستمد أي معنى أم لا. إذ لا ينبغي أن يُصَدر خطأ في مرحلة التحليل المعجمي أو مرحلة تحليل بناء الجملة؛ لأنه صحيح من الناحية المعجمية والهيكلية، لكن يجب أن يولّد خطأً دلاليًا نظرًا لاختلاف نوع المهمة.

ما هو التحليل الدلالي

التحليل الدلالي هو المرحلة الثالثة من عملية ترجمة الكود، إذ يقوم التحليل الدلالي بالتأكد من أن تعريفات المتغيرات والجمل في البرنامج صحيحة لغويًا، والتحليل الدلالي عبارة عن مجموعة من الإجراءات التي يتم استدعاؤها بواسطة المحلل اللغوي عند الاقتضاء بواسطة القواعد، ويتم استخدام كل من شجرة بناء الجملة للمرحلة السابقة وجدول الرموز للتحقق من تناسق الكود المحدد. يعد فحص النوع جزءًا مهمًا من التحليل الدلالي حيث يتأكد المترجم من أن كل عامل (مثل &، =، ^، +،…) لديه مُعاملات مطابقة.

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

الأخطاء الدلالية

الأخطاء التي يتعرف عليها المحلل الدلالي هي كما يلي:

  • عدم تطابق النوع.
  • المتغيرات غير المُعرّفة.
  • إساءة استخدام المُعرف المحجوز.
  • تعريفات متعددة لنفس المتغير في الـ (scope).
  • الوصول إلى متغير خارج الـ (scope).

وظائف التحليل الدلالي

فحص النوع: يضمن استخدام أنواع البيانات بطريقة تتفق مع تعريفها.

فحص المُلصق: يجب أن يحتوي البرنامج على مراجع تسميات.

فحص التحكم في التدفق: يحتفظ بالتحقق من استخدام هياكل التحكم بطريقة مناسبة، على سبيل المثال: لا يوجد جملة “break” خارج عبارات التكرار.

أنواع التحليلات الدلالية

تقسم التحليلات إلى:

  • التحليل الدلالية الثابتة: وسميت بذلك بسبب حقيقة أنه يتم فحصها في وقت الترجمة. ترتبط الدلالات الثابتة بمعنى البرنامج أثناء التنفيذ بشكل غير مباشر.
  • التحليل الدلالي الديناميكي: يحدد معنى وحدات البرنامج المختلفة مثل التعبيرات والبيانات. يتم فحصها في وقت التشغيل على عكس الدلالات الثابتة.

المصدر: Semantic Analysis in Compiler DesignCompiler Design - Semantic Analysis


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