Cs802 compiler spring 2017 محاضرة 1

Page 1

‫‪Sebha University‬‬ ‫‪Faculty of Sciences‬‬ ‫‪Computer Department‬‬

‫جامعة سبها‬ ‫كلية العلوم‬ ‫قسم الحاسوب‬

‫املترج ـم ـ ـ ـ ـ ـ ـ ـ ــات ‪CS802:‬‬ ‫‪The Compilers‬‬ ‫اعداد‬ ‫د‪ .‬مبروكه علي معيوف‬

‫ربيع ‪7102‬‬


‫‪CS802: Compliers‬‬

‫‪Spring 2017‬‬

‫‪Dr. Mabroka A. M.‬‬

‫محتويات املقرر‬ ‫املقدمة‬ ‫محاضرة ‪2،1‬‬

‫‪ ‬تعريف املترجم‪ ،‬مهمة املترجم‪ ،‬انواع املترجمات‪.‬‬ ‫التحليل و التركيب‬ ‫‪ ‬معنى التحليل‬ ‫‪ ‬معنى التركيب‬ ‫‪ ‬التحليل و التركيب في عملية الترجمة‬ ‫مراحل املترجم‬ ‫‪ ‬جزء التحليل‬ ‫‪ o‬مرحلة التحليل اللفظي (الخطي) ‪lexical analysis‬‬ ‫‪ o‬مرحلة التحليل اللغوي (النحوي) ‪syntax analysis‬‬ ‫‪ o‬مرحلة التحليل الداللي (املنطقي)‪semantic analysis‬‬ ‫‪ ‬جزء التركيب‬ ‫‪ o‬توليد الشفرة الوسطية‪intermediate code generation‬‬ ‫‪ o‬مقلص الشفرة ‪code optimization‬‬ ‫‪ o‬مولد الشفرة ‪code generation‬‬ ‫‪ ‬ادارة جدول الرموز ‪symbol table management‬‬ ‫‪ ‬معالج الخطأ ‪error handler‬‬

‫محاضرة ‪3‬‬

‫‪ ‬نظام معالجة اللغة ‪language processing system‬‬ ‫‪ ‬املراحل التي يمر بها برنامج هدف مركب ‪structured source program phases‬‬ ‫‪ o‬املعالج القبلي ‪preprocessor‬‬ ‫‪ o‬املترجم ‪Compiler‬‬ ‫‪ o‬املجمع ‪assembler‬‬ ‫‪ o‬محرر املحمل‪/‬الرابط ‪loader/linker editor‬‬


‫‪Spring 2017‬‬

‫‪CS802: Compliers‬‬

‫‪Dr. Mabroka A. M.‬‬

‫ً‬ ‫تصنيف مراحل املترجم وفقا لبرنامج مصدر أو برنامج هدف‬ ‫‪Front end phases ‬‬ ‫محاضرة ‪6،5،4‬‬

‫‪Back end phases ‬‬ ‫مرحلة التحليل اللفظي‬ ‫‪ ‬محلل اللفظ ‪lexical analyzer‬‬ ‫‪ ‬تعريفه‪ ،‬مهمته‪ ،‬طريقة عمله‪ ،‬العالقة بين ال‪ lexical‬و ال‪syntax‬‬ ‫‪ ‬ال‪ token‬و ال‪ lexeme‬و ال‪pattern‬‬ ‫‪ ‬مواصفات ال‪token‬‬ ‫‪ ‬كيف يتعرف ال‪ lexical analyzer‬على ال‪token‬‬ ‫‪ ‬التعابير القياسية‪regular expression‬‬ ‫‪ ‬اللغات‪languages‬‬ ‫‪ ‬السالسل ‪strings‬‬ ‫‪ ‬الخواص الجبرية للتعابير القياسية‬ ‫‪ ‬اختصارات التعابير القياسية‬ ‫‪ ‬كيف يتعرف ال‪ lexical analyzer‬على ال‪token‬‬ ‫‪ ‬االوتوماتة املحدودة ‪( Finite Automata) FA‬‬ ‫‪ ‬االوتوماتة و التعابير القياسية‬ ‫‪ ‬مخطط االنتقال ‪transition diagram‬‬ ‫‪ ‬انواع االوتوماتة املحدودة‬ ‫‪NFA ‬‬ ‫‪DFA ‬‬ ‫‪ ‬التعابير القياسية و ال‪NFA‬‬ ‫‪From NFA to DFA ‬‬ ‫‪ ‬تصميم برنامج محلل لفظي بسيط ‪the design of simple lexical analyzer‬‬ ‫‪ ‬وصف ال‪ token‬باستخدام التعابير القياسية‪.‬‬ ‫‪ ‬استخدام ال‪ DFA‬للتعرف على ال‪token‬‬ ‫‪ ‬كتابة ال‪ code‬لتجميع ال‪token‬‬


‫‪Spring 2017‬‬

‫‪CS802: Compliers‬‬

‫‪Dr. Mabroka A. M.‬‬

‫‪ ‬امثلة تطبيقية ملا سبق‬ ‫محاضرة ‪8،7‬‬

‫‪ ‬ال‪ : Lex‬تعريفه‪ ،‬مهمته‪ ،‬مواصفاته‬ ‫مرحلة التحليل اللغوي (النحوي)‬ ‫‪ ‬محلل لغوي ‪syntax analyzer‬‬ ‫‪ o‬تعريفه‪ ،‬مهمته‪ ،‬طريقة عمله>‬ ‫‪ ‬القواعد النحوية‪ :‬قاعدة ‪Context-Free Grammar‬‬ ‫‪ ‬قواعد اللغات البرمجية‬ ‫‪ o‬نحو التعابير الرياضية ‪syntax of expressions‬‬ ‫‪ o‬نحو الجمل ‪syntax of statements‬‬ ‫‪ ‬الشجرة النحوية‪syntax tree‬‬

‫محاضرة ‪9,10‬‬

‫‪ ‬ترجمة النحو املباشر‪syntax-directed translation‬‬ ‫‪ ‬تصميم محلل لغوي ‪the design of simple syntax analyzer‬‬ ‫ادارة جدول الرموز‪symbol table management‬‬ ‫‪ ‬العالقة بين جدول الرموز و ‪lexical‬‬ ‫‪ ‬العالقة بين جدول الرموز و ‪syntax‬‬ ‫معالج الخطأ ‪error handler‬‬

‫محاضرة ‪22‬‬

‫‪ ‬العالقة بين معالج الخطأ و ‪syntax‬‬ ‫مرحلة التحليل الداللي (املنطقي) ‪semantic analysis‬‬ ‫‪ ‬محلل اللفظ ‪semantic analyzer‬‬ ‫‪ ‬تعريفه‪ ،‬مهمته‪ ،‬طريقة عمله‬ ‫‪ ‬الفاحص ‪type checker‬‬

‫محاضرة ‪12,13,14‬‬

‫‪ ‬العالقة بين ‪ semantic‬و ‪error handler‬‬ ‫مولد الشفرة الوسطية ‪intermediate code generator‬‬ ‫‪ ‬لغات وسطية ‪intermediate languages‬‬ ‫مقلص الشفرة ‪code optimizer‬‬ ‫‪ ‬مصادر التقليص‪sources of optimization‬‬


Dr. Mabroka A. M.

CS802: Compliers

Spring 2017

code generator ‫مولد الشفرة‬ the target machine ‫ االلة الهدف‬ a simple code generator‫ مولد شفرة بسيط‬ mini project ‫تصميم مترجم بسيط‬ ‫ على الطالب تصميم مترجم بسيط يقرأ تعليمة بلغة ما ثم‬:‫ ورقة عمل‬ .‫يطبق عليها مراحل املترجم كمخرجات‬

‫جدول اعمال السنة واالمتحان النهائي‬ ‫االسبوع املستحق‬

‫التقييم‬

% ‫النسبة‬

1528/55/28

‫امتحان نصفى‬

20

‫كل اسبوع‬

‫ والواجبات‬،‫الحضور‬

10

‫قبل االمتحان النهائي‬

‫ورقة العمل‬

25

‫حسب جدول االمتحانات‬

‫االمتحان النهائي‬

45

‫املراجع االنجليزية‬ [1] Alfred V. Abo, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Compliers, Principles, Techniques & Tools, 2nd ed. , Pearson Education, 2007. [2] Torben Egidius Mogensen, Basics of Compiler Design, Anniversary edition, Published through lulu.com., c Torben Ægidius Mogensen 2000 – 2010.

Websites: http://www.bookboon.com Download free books at Bookboon.com.


‫‪Spring 2017‬‬

‫‪Dr. Mabroka A. M.‬‬

‫‪CS802: Compliers‬‬

‫املقدمة‬ ‫يستجيب الحاسب االلي ملهمة ما إثر تنفيذه ألمر ما او مجموعة من االوامر املكتوبة بلغة يفهمها هذا‬ ‫الحاسب (لغة االلة ‪ .)machine language‬و تتعدد أوامر اللغة التي يفهمها الحاسب بشكل كبير‪،‬‬ ‫فقد يتطلب تنفيذ مهمة معينة كتابة االالف من االسطر مما يؤدي للضجر و امللل و التعرض لألخطاء‪.‬‬ ‫كما تختلف لغة االلة من جهاز حاسب ألخر حسب نوع نظام التشغيل مما يتطلب الدراية التامة و‬ ‫ً‬ ‫الخبرة بهذه اللغة من قبل اي مبرمج‪ .‬و من عيوب لغة االلة أيضا انها أقرب للغة الحاسب (رموز) منها‬ ‫للغة االنسان‪ .‬و مع التطور املستمر للغات الحاسب و لغات البرمجة (الراقية)‪ ،‬اصبح من الضروري‬ ‫خلق جسر للتواصل فيما بين الحاسب (لغة االلة) و االنسان (لغة البرمجة الراقية) عن طريق وسيط‬ ‫(مترجم) لترجمة لغة البرمجة الراقية الى لغة يفهمها الحاسب أو الى أي لغة أخرى مناسبة‪ .‬من هنا‪،‬‬ ‫تطلب االمر بناء مترجم (‪ )compiler‬للقيام بهذه املهمة‪.‬‬ ‫‪ ‬تعريف املترجم ‪ : compiler definition‬هو برنامج يقرأ برنامج آخر مكتوب بلغة ما (اللغة‬ ‫ً‬ ‫املصدر ‪ )source language‬و يحوله الى برنامج آخر مكافئ له وفقا للغة الهدف ‪target‬‬ ‫‪.language‬‬ ‫‪ ‬الحز املهم في عملية الترجمة هو أن ‪ compiler‬يبلغ املستخدم عن وجود أي أخطاء في‬ ‫البرنامج املصدر‪.‬‬ ‫‪target program‬‬

‫‪Compiler‬‬

‫‪Source program‬‬

‫‪Error messages‬‬ ‫مالحظات‪:‬‬ ‫ً‬ ‫‪ ‬اللغة املصدر تختلف من لغة الى أخرى بدا من اللغات التقليدية مثل ‪Fortran & Pascal‬‬ ‫ً‬ ‫وصوال الى اللغات املتخصصة مثل ‪.Java‬‬ ‫ً‬ ‫‪ ‬اللغة الهدف تختلف أيضا من لغة الى اخرى‪ ،‬قد تكون لغة االلة أو لغة أخرى (مثال من‬ ‫لغة ‪ C++‬الى لغة ‪ )Java‬او العكس‪.‬‬ ‫‪ ‬لغة االلة تختلف من جهاز الى آخر حسب نوع نظام التشغيل‪.‬‬


‫‪Spring 2017‬‬

‫‪CS802: Compliers‬‬

‫‪Dr. Mabroka A. M.‬‬

‫‪ ‬مهمة املترجم‪ :‬ترجمة برنامج مصدر مكتوب وفق قواعد اللغة املصدر الى برنامج هدف‬ ‫حسب روية املترجم ‪.compiler‬‬ ‫‪‬‬ ‫‪.2‬‬ ‫‪.1‬‬ ‫‪.3‬‬ ‫‪.6‬‬ ‫‪.5‬‬

‫انواع املترجمات ‪:types of Compilers‬‬ ‫‪Single-pass‬‬ ‫‪Multi-pass‬‬ ‫‪Load-and –go‬‬ ‫‪Optimizing‬‬ ‫‪Debugging‬‬

‫مالحظة‪:‬‬ ‫يعتمد نوع ال‪ compiler‬على الطريقة التي ُيبنى ُ(يشيد) بها‪ ،‬او الوظيفة التي ُيفترض أن يقوم بها‪.‬‬ ‫التحليل و التركيب‬

‫‪ ‬معنى التحليل ‪ُ :analysis‬يقصد بالتحليل القيام بفصل العناصر االساسية املكونة للبرنامج ٌ‬ ‫كل‬ ‫على حدة‪ ،‬ثم قياس مستوى تواجد هذا العنصر في البرنامج و مقارنته باملستويات االخرى بهدف‬ ‫التعرف على مدى مساهمة هذا العنصر في أداء البرنامج‪ ،‬كذلك التعرف على العالقات بين‬ ‫املتغيرات و تأثير كل منها على االخر‪.‬‬ ‫‪ ‬معنى التركيب ‪ُ :synthesis‬يقصد بالتركيب تجميع االجزاء لتكوين البرنامج الكامل الذي يستطيع‬ ‫ان يؤدي الوظيفة املطلوبة‪.‬‬ ‫‪ ‬التحليل و التركيب في عملية الترجمة ‪the analysis-synthesis model of compilation‬‬ ‫هناك جزئيين مهمين في عملية الترجمة و همل التحليل ‪ analysis‬و التركيب ‪ ،synthesis‬و ُيقصد‬ ‫بالتحليل تقسيم البرنامج املصدر الى اجزاء اساسية و تكوين شفرة وسيطية ‪intermediate code‬‬ ‫للبرنامج املصدر‪ .‬أما التركيب في عملية الترجمة ُ‬ ‫فيقصد به بناء البرنامج الهدف املطلوب من الشفرة‬ ‫ً‬ ‫الوسيطية التي تم الحصول عليها سابقا‪.‬‬


Dr. Mabroka A. M.

CS802: Compliers

Spring 2017

:‫ يمكن اختصار مراحل املترجم في الشكل التالي‬:the phase of Compiler ‫مراحل املترجم‬ Source Program Lexical analyzer Scanner Linear analyzer

Syntax analyzer

Semantic analyzer Symbol table manager

Error handler Intermediate code generation

Code optimizer

Code generator

Target program

The phases of Compiler


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.