بعد انتهاء مراحل التحليل النحوي وتحليل الألفاظ للبرنامج المصدري الكثير من المترجمات تقوم بإنتاج تمثيل
وسيط منخفض المستوى يشبه إلى حد كبير شفرة الآلة ع«نط318 ع00© وهذا التمثيل يمكن اعتباره برنامج
"له مجردة وليست مخصصة لآلة محددة. هذا التمثيل الوسيط له ميزتان مهمتان أن تكون الشفرة
الوسيطة سهلة الإنتاج والميزة الأخرى أن يكون سهلا ترجمتها إلى الآلة الهدف.
ة «متامعذ«نام0 00 : بشكل عام يقصد بتحسين الشفرة إدخل ميزات جديدة عليها بحيث
يتم الوصول إلى أفضل شكل للشفرة الهدف تتميز بسرعة التنفيذ من خلال تصغير حجم هذه الشفرة مثلا.
تنفيذي أو
1. مع أن كتابة مترجم هي عملية صعبة ومعقدة فإن دراسة المترجمات وفهم كيفية بنائها وطريقة عملها يساعد
ن البرنامج والآلة التي تنفذ البرنامج وبالتالي على حل الكثير من المشاكل المتعلقة بكتابة البرامج
وتطويرها وزيادة سرعة تنفيذها.
. المترجم هو عبارة عن نظام كبير ومعقد لذلك فإن تصميمه يحتاج إلى توصيف دقيق لهذا النظام واستخدام
الأسس النظرية بشكل كامل ودقيق للحصول على نظام يعمل بشكل صحيح.
3. تركيب المترجم يتطلب الربط بين تقنيات مختلفة نظرا للتباين الكبير بين علوم الحاسوب المختلفة التي يرتبط
بها تصميم المترجم.
4. يعتبر المترجم تصميما هندسيا له أهداف محددة سلفا لذلك يجب تصميمه مع وضع الأهداف منه ومعرفتها
5. عند بناء المترجم يجب الأخذ بعين الاعتبار وجود عدد كبير من طرق التصميم والقرارات التي يؤثر كل منها
على بناء المترجم وعلى المترجم نفسه بعد الانتهاء من تصميمه.
6. يجب تصميم المترجم بشكل يمنع أي اختراق له.
التعريف النحري حمتدصر5 زه «منانمت1:
يمكن تعريف <5:018 بأنه علم النحو أو علم قواعد اللغة . في علوم الحاسوب *53018 هو مجموعة القواعد
التي تبحث في تركيب وبناء جمل لغات البرمجة المستخدمة في كتابة البرامج وفي ترتيب الكلمات
الجملة. مجموعة القواعد توضج أيضا التركيبات المختلفة للرمرز 8011015» التي تشكل الكلمات التي تجعل بناء
البرنامج صحيحا ويمكن البحث في *<59018 اللغة من خلال الشكل الخارجي للبرنامج.
لغات البرمجة النصية مثل © ,©1551 ,17018716411 يتم بناء كلماتها وجملها باستخدام متسلسلات من
الرموز التي تنتمي إلى أبجدية هذه ١ تعريف «89048 لغات البرمجة النصية باستخدام تراكيب من التعبير
الربط بين رموز اللغة وأشكال خاصة أخرى.
<50 اللغة يصف أو يوضح الشكل الصحيح للغة ولكنه لا يعطي أية معلومات عن معاني الكلمات في البرنامج
أو عن النتائج بعد التنفيذ. ويمكن تحديد 5/040 أغلب لغات البرمجة باستخدام نوع من القواعد 7106-2
:00 يعتبر من ضمن مجموعة أكبر من القواعد هي 680100088 ع©:0001©51-17 وتقوم هذه القواعد
بوصف البناء الطبقي لأغلب لغات البرمجة.
على سبيل المثال جملة 1-6188 في لغة 3/2173 تكون على النحر التالي:
عماء تسعسعتهاد (سمتمت عمرت) أذ
هذه الجملة هي عبارة عن تسلسل 00081808100 أو توالي من: الكلمة المحجوزة 12 ؛ قوس مفتوح؛ مقدار
جبري («0نه©«»)؛ قرس مغلق. تصريح (5484601©014)؛ الكلمة المحجوزة عوا» ثم تصريح آخر
| تم استخدام المتغير «رودع للدلالة على ر«متجوع«دز«ع والمتغير )دو)و للدلالة على )548460160
في بناء الجملة يمكن التعبير عن الجملة السابقة على نحو جديد:
فإنه وباستخدام هذه القاعدة |
مع ملاحظة أن السهم يقرأ "يمكن أن تأخذ شكل" نجد أنه يمكن التعبير عن نفس الجملة ١
دون فقدان المعنى الأصلي للجملة أي اختلاف الشكل دون اختلاف المضمون.
تمتلك كل جملة في اللغة بنية معينة تحددها مجموعة قواعد. فمثلا في اللغة العربية الجملية الفعلية تتكرن من فعل
يكون اسم إنسان أو جماد وغيره ذلك. لو فرضنا أن للفعل قيمتان هما ذهب/حضر وللفاعل قيمتان أحمد/علي فسوف
نكرن قادرين على تشكيل أربع جمل صحيحة من هذه القيم:
مثل آخر على تشكيل الكلمات والجمل هو إن
ابجدية الأرقام- (1؛ 2 3
اج عدد صحيح باستخدام القواعد التالية:
قاعدة تكوين العدد - تكرين متسلسلة من هذه الأرقام
هذه القاعدة تعني أنه باستخدام أي رقم من أ؛
جميعها تحقق القاعدة ويمكن اعتبارها أعداد صحيحة:
الأرقام وبناءً على قاعدة تكوين العدد فإن المتسلسلات التالية
نستنتج مما سبق أن أية لغة تحتوي على عدد لا نهائي أو غير محدود من الكلمات والجمل ولكنها ليست بحاجة
إلى عدد لا نهائي من الرموز أو من القواعد لتشكيل هذه الجمل بشكل صحيح. يمكن القول أن تعريف أو توصيف أي
هطمله: وهي عبارة عن مجموعة محدودة من الرموز تستخدم في بناء الكلمات والجمل
بحيث أن أية كلمة صحيحة يجب أن تكون مشكلة من رموز إلى أبجدية اللغة.
عند دراسة الخصائص النحوية للغة البرمجة يمكن استخلاص ما يلي:
1. التحليل النحوي 5ة5(لة« 8704826 للبرنامج المصدري أو الشفرة المصدرية يتطلب تحويل التسلسل
الخطي للرموز إلى بنية طبقية تسمى الشجرة.
2. تركيب الجملة قواعديا بشكل صحيح لا يعني بالضرورة أن يكون لهذه الجملة معنى صحيح بمعنى أن الجملة
الصحيحة قواعديا قد لا تحمل معنى مفهوم أو صحيح.
4. الفرق بين <53048 وبين 5000011©5 هو أن الكثير من لغات البرمجة لها خصائص مشتركة أي أنها قد
تشترك في الألفاظاذات المعاني المتشابهة ولكن يتم التعبير عنها بشكل مختلف.
يمكن تعريف 5801001 بأنه علم دلالات الألفاظ أو معانيها أما 13001041 فهي فلسفة الذرائع والأسباب
وتعتبرها مقياسا لقيمة الشيء وهما عبارة عن مرحلتين متتابعتين لتحليل الألفاظ
المرحلة الأولى 50018165 التمثيل الجزئي للمعنى يتم الحصول عليه بالاعتماد على الأشكل التركيبية
المحتملة للجملة وكذلك على معاني الكلمات المختلفة في الجملة ويعتبر هذا أمرا أكثر تعقيدا وصعوبة من كتابة الجمل
في المرحلة الثانية 165 ««ع178 يتم توضيح المعنى بشكل موسع أو أكثر دقة بالاعتماد على القرائن في سياق
الكلام وعلى معرفة الكلمات وذلك من خلال ربط معنى الكلمة بالسياق العام للجملة أي بالمعنى العام للجملة التي
وردت فيها الكلمة بحيث لا يتناقض معنى الكلمة مع المعنى العام للجملة وهذه مسالة ليست سهلة على الإطلاق .
نظرية اللغة الشكلية
يقصد بللغات الشكلية اللغات المتداولة في الحديث والكتابة وتعتبر الأيجديات (410:815) والمتسلسلات
(501085) من المفاهيم الأساسية التي تعتمد عليها نظرية اللغات بشكل عام. المجموعة المرتبة الغير خالية تسمى
إذا كانت عناصرها عبارة عن رموز أو حروف لها إشكل تعرف بها ويعرف الرمز 100001
أصغر وحدة للتعامل مع اللغة وهو غير قابل للتفكك. أما التوالي المحدود للرموز المأخوذة من الأبجدية فيسمى
إذا كانت المتمسلسلة
ي على الحروف المتتلية 81,82,.....,00 فيمكن أن نرمز لها بالرمز 8182-80 . أما
المتسلسلة التي تحتوي على صفر من الرموز فإنها تسمى متسلسلة خالية ع«5 1701 ويرمز لها بالرمز.
دادا هي متسلسلة تنتمي إلى 11
3 هي متسلسلة تنتمي إلى 12
2 ليست متسلسلة تنتمي إلى 51 لأنها تحتوي على رموز غير موجودة في 11
4 ليست متسلسلة لأنها ليست محدودة
لأنها لاتحتري على أي عنصر
مجموعة الأعداد الطبيعية ليست
بشكل عام إذا كانت 2 أبجدية وكات ,1 مجموعة جزئية 5015©6 من *2 ._ فأنه يمكن القول أن ,1 هي لغة
©00ع«1.8 تنتمي إلى 1 وكل عنصر في ,1 يسمى جملة 800400 أو كلمة 170:8 أو متسلسلة و5801 .
© هي عبارة عن لغة لا تحتوي على آية متسلسلة
(©) هي عبارة عن لغة تحتوي على متسلسلة خالية
اتحاد 00ل« اللغتين 1,1,1,2 يمثل على النحو التالي1,2 ل1 1,1 هي عبارة عن اللغة التي تحتوي على جميع
المتسلسلات الموجودة في 1,1 أو في 1,2 بحيث تحقق (1:2 صت ف 32 :110 متكا | ا
تقاطع «من»ع:101 12 ,1,1 والذي يمثل 1101-2 هو عبارة عن اللغة التي تحتوي على جميع المتسلسلات
المرجودة في 11,1 1,2 في نفس الرقت بحيث تحقق (122 ص 0صة 1ن هتكا «| )
متممة 000160160101100 اللغة ,1 التي تنتمي إلى 1 وتمثل كالتالي ,1 هي عبارة عن جميع المتسلسلات
الفرق ©1100 بين 1:1 د 1:2 والذي يمثل (1,1-12) هو عبارة عن جميع المتسلسلات الموجودة في 1,1
حاصل ضرب )©1000 085« اللغتين 1.1 و 1,2 ويمثل (.1 * 1.1) هو عبارة عن المتسلسلة التي تحتوي على
جميع الأزواج المرتبة (ي,:ه) بحيث تكون * من 1,1 وتكون © من 1,2 وتحقق العلاقة التالية:
تركيب 0000510000 1.1 مع 1,2 الذي يمثل (1,11.2) هو عبارة عن لغة تحقق العلاقة ١|
(111 011,101 ,11,001 ,01) - ملم
تستخدم 17 لتمثيل التركيب «0ة08م20 المتكرن من العدد ز من نسخ اللغة ,1 حيث .1 تعرف على أنها (48 ,
أما المجموعة ".01 !101,201 ..... فتسمى نهاية كلين ©0507» ع«ع»106 أو ببساطة نهاية ,1 وتمثل *,1
أما المجموعة !.1,3(1,2001 <-<فتسمى النهاية المرجبة عسوم 0511676
التحليل اللفظي
هي أول مرحلة من مراحل الترجمة وتسمى أيضا مرحلة المسح بع5»00010 وفيها تتم قراءة الرموز التي
منها البرنامج المصدري من اليسار إلى اليمين رمزا تلو الآخر وبعد ذلك يتم تجميعها في سلاسل ذات معنى
تسمى 65<«ع:©.1. لكل »1,6 يقوم المحلل اللفظي بإنتاج مخرجات من الوحدات اللفظية تسمى 101:05 يمكن
تعريف «:701 بأنه وحدة لفظية تكون على شكل سلسلة جزئية من البرنامج المصدري يمكن معالجتها والتعامل
الجزء الأول (©101:00-08©03 ) هو نمط الوحدة اللفظية وهو عبارة عن رمز مجرد يتم استخدامه خلال عملية
التحليل اللفظي. أما المكون الثاني (©00200148-8810) فهو عبارة عن مؤشر يشر إلى قيد أو سجل اه في
جدول الرموز يحتوي على معلومات عن «©:01) كالاسم والنوع. هذه المعلومات يحتاجها محلل المعاني 56012065
«©2 اهل وكذلك مولد الشفرة :6606810 0008 في مراحل لاحقة.
على سبيل المثل إذا كان البرنامج المصدري يحتوي على جملة التعيين 5661600606 أصعسمع و التالية:
الحروف أو الرموز في هذه الجملة يتم تجميعها في 1,2810185 على النحو التالي:
1050 هي ©<«م«م.1 يمكن تحويله إلى «»:01 التالي (1 ,10) حيث 10 هو رمز مجرد يدل على المعرف
1007# (والمعرف هو اسم يتم إطلاقه على المتغيرات 9ع70:1801 والثوابت 0849015 والدوال
0«5نا©00) أما الرقم 1 فهو مزشر يزشر على قيد أو سجل في جدول الرموز يحتوي على معلومات خاصة
بلمعرف «1705100 مثل اسمه ونوعه.
2. رمز التعيين وهو في هذه الحالة إشارة المساواة - هو أيضا ««ع«1,8 يتم تحويله إلى «101:8 على الشكل
<> . وبما أن هذا «01:8 لا يحتاج إلى إعطائه صفة أو قيمة فإنه يتم حذف المكون الثاني.
3. لماص هر عدوع»,1 يتم تحويله إلى «01:8 على الشكل (2 ,10)
. الرمز + الذي يدل على الجمع يتم تحويله إلى الشكل <+>
6. الرمز * الذي يدل على عملية الضرب يتم تحويله إلى الشكل <*>
7. العدد الثابت 60 يتم تحويله إلى الشكل <60>
بالنسبة للفراغات التي تفصل بين 1,2©:«65 يقوم المحلل ١
التعيين السابق ذكرها على شكل السلسلة اللفظية التلية:
بتجاهلها وبناءً على ذلك يتم تمثيل جملة
أما جدول الرموز فسوف يكون على النحو التالي:
كما قلنا سابقا 101:85 هي سلسلة جزئية من البرنامج المصدري تحتوي عليها لغات البرمجة منها:
- الكلمات المحجرزة 1667170505
- المعاملات 00801
في هذه المرحلة يتم تحديد إذا كان فيض المدخلات يمكن تقسيمه إلى رمرز صحيحة في البرنامج المصدري أم لا
ولكن لا يمكن تحديد فيما إذا كانت هذه الرموز واقعة في المكان الصحيح الذي يجب أن توجد فيه أي أنه لا يمكن
الرموز المستخدمة في البرنامج المصدري غير مفهومة أر غير مسموح استخدامها. وفي حلة إذا كانت هناك أخطاء
إملائية في كتابة المعرفات أو الكلمات المحجو:
إذا كان البرنامج المصدري يحتوي على الجملة التالية
فسوف يتم تقسيم هذه المدخلات إلى 1016605 على النحو التالي:
310111010 ,117700574311 ,قناناط 11711
فإنه لن يتم تحديدها .
التحليل القواعدي تك رلفصة مار
هي المرحلة الثانية من مراحل عمل المترجم وتسمى أيضا مرحلة الإعراب ع«:28«5 وفيها يقوم المحلل
. التأكد أن الوحدات اللفظية 101:»«5 الموجودة على مدخله والتي هي في الوقت نفسه مخرجات المرحلة
السابقة لا تتنافى مع الصيغ المحددة المسموح بها في اللغة المصدرية. على سبيل المثل التعبير الرياضي التالي:
عندما يقوم المحلل القواعدي بمسح «0»» للتعبير سوف يشير إلى وجود خطأ قواعدي في صياغة التعبير وذلك
لوجود الرمز + متبوعا مباشرة بالرمز / وهذه الصيغة لا تتطابق مع الشكل القواعدي الصحيح الذي لا يسمج بوجود
عمليتين رياضيتين
2. تكوين بنية قواعدية على شكل شجرة يتم استخدامها في المراحل اللاحقة حيث يقوم بتوضيح البنية الهيكلية.
عندما يبدأ المحلل القواعدي أو المُعرّبٍ «©10«8 عمله فإنه سيقرم باستخدام المكون الأول الذي نتج عن مرحل
التحليل اللفظي في تكوين تمثيل وسيط يصف البنية القواعدية للرموز 1016605
القراعدية م178 <59010 . هذا يعني أنه يتم في هذه المرحلة تجميع الوحدات ١
(التحليل اللفظي) في بُنية قواعدية تسمى تعبير «1108©550 ومجموعة التعبيرات يتم تجميعها في بُنية أوسع
تسمى عبارة أو جملة 500400104 . يتم مثيل هذه البنية على شكل شجرة توضح كيفية ترتيب
المهمة الواحدة وكيفية ارتباطها مع بعضها البعض. مثلا للعبارة
نلاحظ أن عملية الضرب الممثلة بالرمز * ترتبط من جهة مع 818+ والذي أصبح ممثلا بالمعرف (10,3) ومن الجهة
الأخرى ترتبط مع العدد الثابت الصحيح 60 وهذا يعني أنه يجب أولا القيام بعملية الضرب ثم عملية الجمع بعد ذلك
لأن هذه هي القواعد المتبعة في إنجاز العمليات الحسابية.
القواعدية عملية المساواة الممثلة بالرمز - وهذا أنه يجب تخزين ناتج عملية الجمع في
الموقع الخاص بالمعرف 08680 هذا الترتيب في تنفيذ العمليات وعلى هذا النحو يتطابق مع ما هو متعارف عليه
من أولويات تنفيذ العمليات الحسابية. في النهاية سوف تتم إعادة تمثيل مدخلات هذه المرحلة لتصبح مخرجات وعلى
النحر التلي: