مرحلة تحليل بناء الجملة في عملية ترجمة الكود Syntax Analysis

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


ما هو تحليل بناء الجملة

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

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

محللات بناء الجملة

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

أخطاء تحدث أثناء التحليل اللغوي

الأخطاء الشائعة التي تحدث في التحليل اللغوي في برامج النظام:

معجمي: الاسم المُعرّف مكتوب بشكل غير صحيح.

نحوي: قوس افتتاح ليس له قوس إغلاق أو العكس، أو فاصلة منقوطة مفقودة.

الدلالة: اسناد قيمة للمتغير غير متوافقة.

منطقي:جملة دوران لا نهائية أو كود غير قابل للوصول.

استراتيجيات استرداد الأخطاء

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

1- استرداد وضع الجملة Statement mode

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

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

2- استرداد حالة الذعر Panic-Mode

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

3- استرداد مستوى العبارة Phrase-Level

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

4- استرداد إنتاج الخطأ

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

5- استرداد التصحيح الشامل

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

لماذا تحتاج إلى محلل بناء الجملة

  • التحقق مما إذا كان الكود صحيحًا نحويًا.
  • يساعدك المحلل النحوي على تطبيق القواعد على الكود.
  • يساعدك على التأكد من أن كل قوس افتتاح له قوس إغلاق مناظر له.
  • كل تعريف له نوع، وهذا النوع يجب أن يكون موجود.

محلل بناء الجملة مقابل محلل معجمي

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

المصدر: Compiler Design - Syntax AnalysisSyntax Analysis: Compiler Top Down & Bottom Up Parsing TypesSyntax Analysis


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