Compiler | المُترجم / المحوّل البرمجي [1]
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
المحوّل البرمجي أو المترجم بلغتنا العربية، المعروف بالـ Compiler على ألسنة اهل الحاسب، هو برنامج يقوم بـتحويل وترجمة برنامج مكتوب بــلغة من المستوى العالي ( High-level language التي تكون سهلة الفهم للإنسان لكن الآلة لا تفهمها ) و تحويلها الى لغة ذات مستوى منخفض ( Low-level language التي تكون مفهومة للآلة لكن معقدة الفهم بالنسبة للإنسان ) وتسمى لغة الآلة أو Machine Language.
واذا اردنا ان نفهم مرحلة الترجمة أو التحويل البرمجي بشكل أوضح، يمكننا ان نقسمها الى مرحلتين كل مرحلة تتضمن عدة خطوات:
- مرحلة التحليل | Analysis Phase
وتسمى أيضا بـ لغة الواجهة الأمامية المحددة (Front-end language specific ) وهذه المرحلة تُعنى بقراءة وتحليل الرموز البرمجية وتقسيمها الى أجزاء تسمى tokens والتأكد من صحتها وخلوها من الأخطاء تبعا لقوانين اللغة.
مثال :
result = X * Y + Z
result, X, Y and Z هي tokens من نوع القيم المعرّفة identifier
+, =, * هي tokens من نوع العمليات operators
ومرحلة التحليل تحوي ثلاث خطوات:
- مرحلة التحليل المعجمي (Lexical Analysis) ويسمى أيضا بـ ( Scanner ) ومهمته هو أن يقرأ المدخل input ويحللها الى tokens وكل من هذه الكلمات تمثل جزء محدد من اللغة سواء أكان متغير ام من الكلمات الثابتة في اللغة ( reserved word ) مثل if, while and else. ويقوم ايضاً بمسح المسافات وحفظ الـ tokens في جدول الرموز .symbol table.
- مرحلة بناء الجملة ( Syntax Analysis ) ويسمى أيضا بـ ( Parser ) ومهمته ان يأخذ الـ tokens الناتجة عن مرحلة Lexical Analysis ويكونها في جمل برمجية ويختبر صحتها على أساس قواعد اللغة. وهذه المرحلة ينتج عنها هيكل دلالي يدعى بـ semantic structure وتكون الجمل البرمجية على شكل شجري يسمى بـ parser tree.
- مرحلة التحليل الدلالي (semantic analysis) ويسمى ايضاً بـ (Intermediate Code Generators)، وفي هذه المرحلة يتم التحقق من الأخطاء المتعلقة بالمنطق ، مثل صحة اسناد القيمة لنوع المتغير وغيرها.
- مرحلة التركيب | Synthesis Phase
في هذه المرحلة يتم تحويل اللغة المتوسطة ( Intermediate Language ) الى لغة تفهمها الآلة (Machine Language) ويتم ذلك على النحو التالي :
- مرحلة تحسين الأكواد ( Code Optimization ) وهذه الخطوة تتولى مسألة تحسن الكود وابعاد التكرار وتطوير البرنامج والتأكد بأن يكون البرنامج في أحسن حالاته و هذه الخطوة هي التي تميز مترجم عن مترجم آخر.
- مرحلة مولّد الأكواد ( Code Generation ) وهنا يتم تحويل الكود بشكل نهائي الى شكل تفهمه الآلة.
مثال عام: عندما نريد أن نترجم برنامج مكتوب بلغة جافا ، يمكننا عن طريق الـterminal كتابة مايلي :
> javac hello.java
javac هو اسم مترجم لغة جافا ، وبعد إتمام مراحل الترجمة سينتج لنا ملف hello.class وهذا الملف مترجم الى لغة الآلة.
التعليقات (0)
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !