نقدم لكم هذا الكتاب الذي يشرح بطريقة سهلة و مفهومة الخطوات الأساسية لكيفية برمجة مترجم (Compilateur) خاص بك, لا يهم أن تكون مهمة هذا المترجم ترجمة أكواد لغة متقدمة إلى لغة الآلة بل يمكن إستعمال الكتاب لبرمجة برامج تحول الأكواد من لغة إلى أخرى, و لعل من أبرز الأمثلة البرامج المنتشرة التي تحول من اللغة C إلى PASCAL أو إلى JAVA و غيرها.
في هذه المرحلة نتحقق أن ترتيب ال 106805 موافق لتعريف اللغة التي نريد برمجة مترجم
لها, نستطيع أن نقول أننا نتحقق من النحو الخاص باللغة و يكون هذا إنطلاقا من مجموعة من
القواعد أو ما يبسمى 9:307113(66, يقوم المحلل النحوي ببناء شجرة (805:8) باستخدام ال
5 التي يوفرها المحلل المعجمي؛
مصاع
مامتا لفسا يعوا ٍ مطافها
- الشجرة النحوية المستخرجة بعد التحليل النحوي -
أما القواعد المحدد للنحو فإنها نكون معرفة على الشكل التالي:
آثناء التحليل المعنوي (5601308908 758ا803ا) نتأكد مثلا أن القيمة التي سنسندها لأحد
المتغيرات تكون من نفس نوع المتغي, إذ لا يجب إسناد قسمة حقيقية لمتغير صحبح و هكذا.
نقوم هنا بإنتاج كود بلغة الآلة أو لغة التجميع و هذا مثال لكود بلغة قريبة من لغة الآلة:
2 قفص عة”
1 لعولا لمم
عدن) ,20 تام
عق << 1 دمع نوع فده
ع«وكمتء ده ععتلة نة«” 1ه
2. »عا ولا8150 و متطلبات العمل
كانت تلك مقدمة سريعة جدا و مختصرة جدا عن مراحل الترجمة, ماذا بعد, قبل نحدد قواعد
اللغة التي سنستخدمها و نبداً برمجت المحلل المعجمي و النحوي و المعنوي سنلقي نظرة
عا هي أداة تقوم بتوليد محلل معجمي (631ل6١ اا03|/58) أو ما يسمى بد 588008
مكتوب باللغة ©, يستعمل عا قوالب (0888005) لمطابقة السلاسل الحرفية الموجودة في
الكود المصدر و تحويلها إلى 00/805 و من ثم إرسالها إلى المحلل النحوي, ال 00/805 تكون
عبارة عن معرفات عددية ثابتة, أي أن ال :508008 عندما يجد مثلا المتغير * فإنه يرسل
للمحلل النحوي ال 10/680 الممثلة للمتغيرات و لتكن 108/17 و أيضا يرسل له إسم المتغير و
يقوم بإدخاله إلى جدول الرموز 5711150165 65ل 8016 و تعيين خصائصه كنوعه و غيرقا من
815011 أو ©1866 يولد لنا شغرة باللغة © لمحلل نحوي (1158«1008ر5 انا©5/ا203) و يعرف أيضا
بال :08558, يبستعمل 85500 قواعد اللغة لتحليل ال 106805 القادمة من ال 508008 و يبني
عليها شجرة نحوية, تمثل هذه الصورة كيفية التعاون بين ال لاا و 1866:
ٍ مصار يا مر لأفوط
إذا و حسب الشكل السابق الملف .535 يحمل وصف لل :88:58 أما الملف 535.1 فيحمل
وصف لل :508008, الملف .185.لا يولدة ال 1866 و بحوي تعريف ال 0/6605 وهذا تصريح عن
أحد ال 1016805 في الملف 180.0.ل:
بعد ذلك يولد لنا كل من لاا و 1866 (سنستعمل [81501 و هو مشابه لل ©1862) ع.لالالاعا
و 85.6ا.لا و هما على الترتيب المحلل المعجمي (:968008) و المحلل النحوي (:08:58).
وباستعمال أحد مترجمات اللغة © نترحم كل من 6./ا:*16 و 1.85.6 لنحصل على البرنامج
النهاتي 535.66 و هو المترجم الجديد... تهانيناء
ماذا سنحتاج من أدوات لفعل ذلك؟
أولا قم بتحميل 3.0 ++ 1710880 من هذا أحد هذة الروابط ؛
قم بتثبيته في القرص 0:1 بحيث يكون مسار المجلد 0ا كالآتي: لا0:176181, طبعا أنت حر
في تثبيته في أي مكان و لكن الشرح سيكون على أساس أنه في المسار السابق
لأننا سنستعمل البرنامج 0:176018110176.8648 لترجمة أكواد 6.
قم بفغك الضغط عن الملف 1860.200 _*«ع1 وانسخ المجلد ©1786 _«عا في القرص 0:1, ليصبح
لديك المجلد 85ا73601680710_«عا|:0 والذي سيكون مسرح الأحداث.
أنسخ محتويات كل من المجلد 11386©1815001510_لاعاا :0 و المجلد (أطظال«ع1386©11_«عا١:0 إلى
المسار 110/1000017/5:© طبعا هذا إذا كانت الويندوز مثبتة في القرص 6:1, المهم أن تنسخه
إلى المجلد 10/100001/5 الخاص بالنظام أخيرا أنسخ المجلد 1713601815001573:8 لاع 0:1
بأكمله إلى القرص 6:١ ليصبح لديك المسار ©:62:1973 في جهازك, هنا نكون قد ثبتنا الأدوات
قبل البدء في برمجة المترجم سنقوم ببرمجة برنامج صغير باستخدام )لعا و 81501 و 7108580
<10*1002-20+100*3+3 و يقوم بحسابها.
سنتعمل على مستوى المجلد 1860168110185 لاعاا١:0, لنبداً بكتابة المحلل المعجمي أو
ستقدم لل *«عا وصغا معينا ليولد لنا هو كود © لل :568008, كيف يكون ذلك الوصف؟ يكون من
الشكل التالي؛
لوأل بز
الدوال الغرعية عبارة عن كود بلغة ©, أما التعريغات و القواعد فلها نحو خاص + بعض أكواد ©.
إفتح المفكرة واكتب الكود التالي؛
"جل 2 لماع 61 1 مسعارة 2621لا 116 :#15610060
قمنا بكتابة التعريغات, لقد احتجنا إلى إضافة كود بلغة عو لذلك كتبناة بين العلامتين 964 و
901, سنحتاج إلى دالة من المكتبة 55ا80 أما استعمالنا للملف 00.27« فهو لأنه الملف
بالتصريح عن بعض القوالب التي سنستعملها لتصفية ال 104805 من الكود المصدر, ماذا تعني؟
كل الغراغات, فراغ أو أكثر +[ ] عمقاط
كل الأعداد من 0 إلى 9 [-0] ١ وعلط
سلسلة من عدد واحد أوأكثر | +(155<6ظ6)| عمعتغصدع
هذا جدول للحروف التي نستعملها لإنشاء القوالب و معانيها:
كل الأحرف باستثناء زا :
سطر جديد هه
صغر نسخة أو أكثر من العبارة السابقة لها *
نسخة واحدة أو أكثر من العبارة السابقة لها +
نسخة واحدة أو لا شيء من العبارة السابقة لها 7
بداية السطر 38
نهاية السطر 5
قوط طلة
نسخة أو أكثر من السلسلة 85 +(ظطة)
السلسلة 5+ حرفيا "طبع"
فئة من الاحرف, [3-2] تعني كل الاحرف من 8 إلى 2 1
وكمثال عن بعض الأقنعة لاحظ هذا الجدول؛
التطابقات العبارة
أي حرف بين قو 2 [8]
قر زعام
أي شيء باستثناء 8 و5 [ط]
بهذا يصبح الكود الذي كتبته في المفكرة سابقا أكثر وضوحا و سيتضح كلما تقدمت في قراءة
م (10005ط) ماوع عيب
7 0017 معنوع وه
م (01175) معمطوع 3
7 2) معمطوع و"
أضغنا الجزء الخاص بالقواعد و هو بين العلامتين 96968 و 9696, هناك 11 قاعدة, ماذا سيفعل
الفراغات الموجودة في الملف الذي سنقوم بترجمته و حساب ما فيه.
حسب القالب المستخدم(:8088) إلى المحلل النحوي أو :038258, مثلا إذا وجدنا في الملف
الذي سنتحسب ما بداخله العملية -5+5 فآن أول 101680 نعيدها هي 1101188 ولكن,
باسنادها إلى المتغير |3لالالا وهو عبارة عن همزة وصل بين ال 5680708 و ال 03558 ولغعل
ذلك نحول القيمة الحرفية الموجودة في المتغير 17815 الذي يحمل سلسلة الحروف المشكلة
لآخر تطابق إلى عدد صحيح باستعمال الدالة 880 الموجودة داخل المكتبة ط طنالتاي
فقط نعيد ال 50/680 و نذهب إلى القاعدة التالية.
باسم ا.80012, وباستعمال الأمر .0012© اح يولد )عا كود © لل 5080083, حتى لا نبقى في
كل مرة نفتح نافذة الدوس و نكتب الأمر قم بفتح المفكرة و اكتب الأوامر التالية؛
ادام لاقام
ثم أحفظ الملف باسم +2*_2.53ا في المجلد 13860168010165_«عاا:0, دوبل كليك على
الملف الدفعي +016*_2.53 لتحصل على النتيجة التالية؛
لا يوجد أخطاء, في حالة وجود أخطاء سيعرض لك لعا رسالة بالأخطاء و مكان كل خطأً و
وصغه, لقد قام عا للتو بتوليد الملف 6.لالا.*«6ا في المسار 1386016*8010165_«ع 0:11 والذي
ذلك النصف الأول من البرنامج النهاتي, لنكمل.
قبل أن نبداً كتابة وصف 11866 سنحدد القواعد (9:30701318):
5 | عدن 10016 <- 1071
1ع صو | ل10ع <- عدنا
1011886 <- صرع
مع كلنام و |
طعمم صم معذد ا
الرمز 5 يعني فراغ أو لاشيء, الكلمات المكتوبة بحروف كبيرة تمثل ال 106805 التي سيعيدها
ال568008 , أما باقي الكلمات فهي رموز غير نهائية (100-6277171037 01865 1175ر5).
أحسن طريقة لغهم القواعد السابقة هي تتبع مثال, مثلا هل السلسلة -5+5*9 تحقق
شروط ال 91311013116 السابق؟
ععنا 1101 -< 10906
صرع <-
لان م0 لام صورع <-
مع تانا1ا دوق لنام صورع <-
١ 11011886 اناا 11011888 كلام 11011885 <-
القواعد التي سنستخدمها لاحقا.
نعود, إفتح المفكرة و اكتب الكود التالي:
2 661267:60016516012 3:11:75" تعمل
لتم لاع :عد
6 ج5علة
عتمت لعفاف
أثناء كتابة القواعد, هناك قسمين من التعاريف, قسم مكتوب باللغة © وهو بين العلامتين 964
القسم الثاني من الكود هو وصف خاص, باستعمال الكلمة المحجوزة 9680680 قمنا بالتصريح
هناك أولوية أثناء إجراء عمليات الحساب, فالقسمة أقوى من الضرب الذي هو أقوى من الجمع
و الطرح, وأقصد بكلمة أقوى أولوية الحساب, مثلا عند حساب 5+5*6 فإننا نحسب 5*6 ثم
نضيف إلى النتيجة العدد 5, ولهذا أضغنا السطور ؛