Compiler | المُترجم / المحوّل البرمجي [1]

ihanan95منذ 8 سنوات

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

المحوّل البرمجي أو المترجم بلغتنا العربية، المعروف بالـ Compiler على ألسنة اهل الحاسب، هو برنامج يقوم بـتحويل وترجمة برنامج مكتوب بــلغة من المستوى العالي ( High-level language  التي تكون سهلة الفهم للإنسان لكن الآلة لا تفهمها ) و تحويلها الى لغة ذات مستوى منخفض ( Low-level language  التي تكون مفهومة للآلة لكن معقدة الفهم بالنسبة للإنسان ) وتسمى لغة الآلة أو Machine Language.

pic1.jpg

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

pic2.jpg

  • مرحلة التحليل |  Analysis Phase

وتسمى أيضا بـ لغة الواجهة الأمامية المحددة (Front-end language specific ) وهذه المرحلة تُعنى بقراءة وتحليل الرموز البرمجية وتقسيمها الى أجزاء تسمى tokens والتأكد من صحتها وخلوها  من الأخطاء تبعا لقوانين اللغة.

مثال :                                                 

result = X * Y + Z

resultXY and Z هي tokens من نوع القيم المعرّفة identifier

+=*   هي tokens من نوع العمليات operators

ومرحلة التحليل تحوي ثلاث خطوات:

pic3.jpg

  1. مرحلة التحليل المعجمي (Lexical Analysis) ويسمى أيضا بـ ( Scanner ) ومهمته هو أن يقرأ المدخل input ويحللها الى tokens وكل من هذه الكلمات تمثل جزء محدد من اللغة سواء أكان متغير ام من الكلمات الثابتة في اللغة ( reserved word ) مثل if, while and else. ويقوم ايضاً بمسح المسافات وحفظ الـ tokens في جدول الرموز  .symbol table.                                                                                                                 
  2. مرحلة بناء الجملة ( Syntax Analysis ) ويسمى أيضا بـ ( Parser ) ومهمته ان يأخذ الـ tokens  الناتجة عن مرحلة Lexical Analysis ويكونها في جمل برمجية ويختبر صحتها على أساس قواعد اللغة. وهذه المرحلة ينتج عنها هيكل دلالي يدعى بـ semantic structure  وتكون الجمل البرمجية على شكل شجري يسمى بـ parser tree.                                                                                                     
  3. مرحلة التحليل الدلالي (semantic analysis) ويسمى ايضاً بـ (Intermediate Code Generators)، وفي هذه المرحلة يتم التحقق من الأخطاء المتعلقة بالمنطق ، مثل صحة اسناد القيمة لنوع المتغير وغيرها.

pic4.jpg

  • مرحلة التركيب | Synthesis Phase

في هذه المرحلة يتم تحويل اللغة المتوسطة ( Intermediate Language ) الى لغة تفهمها الآلة (Machine Language) ويتم ذلك على النحو التالي :

  1. مرحلة تحسين الأكواد ( Code Optimization ) وهذه الخطوة تتولى مسألة تحسن الكود وابعاد التكرار وتطوير البرنامج والتأكد بأن يكون البرنامج في أحسن حالاته و هذه الخطوة هي التي تميز مترجم عن مترجم آخر.
  2. مرحلة مولّد الأكواد ( Code Generation )  وهنا يتم تحويل الكود بشكل نهائي الى شكل تفهمه الآلة.

مثال عام: عندما نريد أن نترجم برنامج مكتوب بلغة جافا ، يمكننا عن طريق الـterminal  كتابة مايلي :


> javac hello.java 

javac هو اسم مترجم لغة جافا ، وبعد إتمام مراحل الترجمة سينتج لنا ملف hello.class وهذا الملف مترجم الى لغة الآلة.

كلمات دليلية:
8
إعجاب
21414
مشاهدات
0
مشاركة
6
متابع
متميز
محتوى رهيب

التعليقات (0)

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !