كيف يفهم الحاسب لغات البرمجة؟ تعرف على المترجمات وكيف تبنى وما مبدأ عمله

الكاتب: سامي -
كيف يفهم الحاسب لغات البرمجة؟ تعرف على المترجمات وكيف تبنى وما مبدأ عمله

كيف يفهم الحاسب لغات البرمجة؟ ما هي المترجمات وكيف تبنى وما مبدأ عملها؟

 
إن كنت مبرمجاً أو قد تعاملت مع لغات البرمجة ونفّذت برنامجًا يقدم عملك، فأنت بالتأكيد استعملت أحد البرامج التي تكتب بواسطتها شفرتك البرمجية. هذه البرامج هو حديثنا في هذا المقال، فهي استثنائية بصنعها وليست كأي برنامج عادي، فكلنا نستخدمها لنقوم ببناء برامج أخرى وبالتالي تُعدّ برامج الأم، وتدعى &ldquoالمترجمات&ldquo.
فبفرض لدينا برنامج مكتوب بلغة عالية المستوى (كـ جافا أو C) ونريد تنفيذه من قبل الحاسوب، هذا يتطلب أن يكون لدينا مرحلة وسيطية تجعل الحاسوب قادرًا على فهم هذه اللغة نظرًا لأن الحاسوب يعمل على لغة الآلة (أصفار وواحدات)، وبالتالي عملية الترجمة هي تحويل الكود من لغة المصدر إلى لغة الآلة.
 

وبالطبع للقيام بذلك يجب أن يمر بعدة مراحل:

 
 التحليل اللفظي (المفردات)
 التحليل القواعدي
 تحليل المعاني
توليد الشيفرة الوسيطية
توليد الشيفرة النهائية
وبذلك نحصل على برنامج الهدف.
 

المرحلة الأولى- التحليل اللفظي

عندما تقوم بتنفيذ برنامجك، يقوم المترجم أولًا باستخراج الكلمات التي تُسمى في عالم الحوسبة &ldquoالمفردات Tokens&rdquo انطلاقًا من سلسلة الحروف، فإذا كان لدينا الشيفرة البرمجية التالية:
 
For( i = 1 i < 10 i++)
 
فهنا سيستخرج أي سلسلة محرفية والتعرف على ماهيتها، مثلاً For  هي كلمة محجوزة، i هي معرّف، إشارة = عملية إسناد، 1 هو معرف وهكذا&hellip ومن ثم يقوم ببناء جدول للرموز، وهي عبارة عن قائمة من تركيبات تحمل خصائص المفردات التي تم تحديدها سابقاً، مثلاً  10 هو معرف ونوعها integer أي رقم صحيح وهكذا.
 
 

المرحلة الثانية &ndash مرحلة التحليل القواعدي

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

المرحلة الثالثة- مرحلة تحليل المعاني

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

المرحلة الرابعة- مرحلة توليد الشيفرة الوسيطية

وهنا وبعد كل ما سبق يقوم المترجم بإنتاج الشيفرة البرمجية إما بلغة الآلة أو لغة Assembly.
 
قد تسأل نفسك الآن ما هي الأدوات التي ساعدت في بناء هذا المترجم ليقوم بكل هذه المراحل والتدقيقات؟
في الحقيقة كما قلنا سابقًا، تُعدّ هذه البرامج برامج خاصة، وطريقة بنائها ليس اعتياديًا، فهناك عدة أدوات خاصة لبنائها. ولكن الآن سنتكلم عن أهم أداتين وتعدان الأداتين الأساستين والأكثر شهرة، وهما:
 
     LEX
     BISON
الأداة البرمجية (LEX) 
وهي أداة تقوم بتوليد محلل المفردات أو ما يسمى بالماسح Scanner مكتوب بلغة c، حيث يستخدم قوالب جاهزة لمطابقة السلاسل المحرفية للشيفرة التي كتبتها ومن ثم يقوم بتحويلها إلى مفردات tokens وهي معرفات عددية ثابتة ترسل إلى محلل القواعدي.
 
فعندما يصادف الماسح متغيراً x مثلًا في سلسلة الدخل، فسيقوم بإرساله كـ token إلى المحلل القواعدي، ومن ثم يقوم بإدخاله إلى جدول الرموز وتعيين خصائصه مثل اسمه وقيمته ونوعه وحجمه وغير ذلك.
 
الأداة البرمجية (BISON)
وهي أداة تولد شيفرة بلغة C لمحلل القواعد، يعرف أيضًا بالمعرب Parser. يقوم المعرب باستخدام قواعد اللغة لتحليل الـ Tokens الآتية من الماسح، ومنها يبني شجرة الإعراب الموافقة حسب تسلسل الـ Tokens ليتسنّى من خلالها تحديد فيما إذا كانت العبارة تنتمي للنحو أم لا. وفي حال عدم مطابقتها للنحو، سيرسل الـ Bison رسالة خطأ.
من ثم وباستخدام أحد مترجمات لغة الـ  C سيتم الحصول على البرنامج النهائي base.exe وهو المترجم الجديد.
هنا تعبر تمامًا عن مراحل بناء مترجم بسيط.
وبالطبع هذا ليس كل شيء عن بناء المترجم، هذا فقط تعريف بسيط عنه، فهنالك الكثير من العمل والكثير من الشيفرات والقواعد وملفات c التي يجب عليك كتابتها وبناؤها لتصل للنهاية.
شارك المقالة:
927 مشاهدة
هل أعجبك المقال
0
0

مواضيع ذات محتوي مطابق

التصنيفات تصفح المواضيع
youtubbe twitter linkden facebook