ترويض التكرار الأيسر: إصلاح قواعد نحوية لبرنامج فك تشفير C++

2025-02-02

تتناول هذه المقالة رحلة الكاتب في حل مشاكل التكرار الأيسر والتكرار الأيسر المتبادل ضمن قواعد نحوية بلا سياق (CFG) أثناء إعادة كتابة برنامج فك تشفير C++ من RizinOrg، وهو rz-libdemangle. يبدأ بشرح مفاهيم التكرار الأيسر والتكرار الأيسر المتبادل، مع توضيح ذلك من خلال أمثلة بسيطة ورسوم بيانية توضح كيفية تحويل القواعد النحوية التكرارية اليسرى إلى قواعد نحوية تكرارية يمنى لمنع التكرار اللانهائي. بعد ذلك، يشارك الكاتب مشكلة حقيقية واجهها في برنامج فك تشفير Itanium ABI، مع عرض قواعد نحوية معقدة ذات تكرار أيسر وتكرار أيسر متبادل، وكيف استخدم ماكروات وتحويلات نحوية ذكية لحل هذه المشاكل، مما يحول دون حدوث أخطاء في تجاوز سعة المكدس.