Breaking News
القائمة

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

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

محتويات المقال

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

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

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

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

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

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

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

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

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

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

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

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

بحث في الموقع