Transcript
Page 1: Introduction to Compilers : Second Edition

Compilers Introduction | Mr_Ahmed Elmasry;Eng_Nazira alshaar

FANNIA

BACKBONE المترجمات عن مقدمة : األول الباب

Page 2: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

1 الباب األول

Table of Contents 2 ................................................................................................ المترجمات عن مقدمة

Our Goals : ................................................................. 2: مترجماتال دراسة من الهدف

Computer: .................................................................................... 2 اآللي الحاسب

4 ................................................................... (األول الجيل: ) Machine Code اآللة لغة

4 ...................................................................................... : ومستوياتها البرمجة لغات

4 ................................................................................................... : األول الجيل

Assembly language: ..................................................................... 5 الثاني الجيل

high level language : ..................................................................... 5 الثالث الجيل

Non procedural language: ............................................................. 5 الرابع الجيل

Natural language: ................................................... 5 الطبيعية لغاتال الخامس الجيل

6 ................................................................................................ : هامة تساؤالت

Algorithm : ......................................................................... 6 برنامج كتابة خوارزمية

7 ............................................................................... البداية من برنامج كتابة خوارزمية

Compilers ......................................................................................... 9 المترجمات

Cousins Of Compilers ................................................ 01: بالمترجمات المرتبطة البرامج

Compiler Stages........................................................................ 01 : المترجم مراحل

06 ..................................................................................: الهامة المصطلحات بعض

09 .............................................................................................. : موازية حلمرا

21 ......................................................................................................... : مثال

20 ........................................................................................ : األول الباب علي اسئلة

.Error! Bookmark not defined .................................................. : سئلةاأل لبعض إجابات

Page 3: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

2 الباب األول

ترجماتمقدمة عن الم

: Our Goals: الهدف من دراسة المترجمات

لغةة األس سةة ةةط الةةا الاةةرامب الم ت لةة ل Compilersترجمةة الم همةة مإن

و نظةة ا التيةةغ Hardware للحاسبب لرمجةة تا موةةت ل بةة ن ل لات ةة الت ت ةة

Operating System . الموتخدا بل ه

اوةةد مةةر لرمجةة مورو ةة ة لغةة ل لرمجةة جدةةةد و لغةة كمةة ن لتةة ر متةةرجي ل ةةط ل

وة د ة تصر بلةط اليةرك ال اةرل و المراكةب الا ة الصو ل الدق و ط غ ة . ل ة هةةي قرة ة لتة ر وك م ةة بمة المترجمة لهةة اجةد بدةةد نةة جب والج موة

ةلط : لوضه م

الارمجةةة لغةةة هةةةي وإسةةةت و ا الميةةة ك المتول ةةة ل ت لةةة الاةةةرامب والت ا ةةة ل

المختلم .

األشةةةخ ل الةةعة ةوملةة ن بلةةط إنتةة لةةةرامب دااسةة المترجمةة ك ةةرا م ةةد ت

. Hardware Drivers التورةف "الت ص ف"

لغةة وةةهي وليةة وةة ن ةةط ن نةةرل موةةت ا دااسةة المترجمةة وكمةة ن مةة ست

.برل لرمج

:Computer الحاس اآللي

العلمية , تختلف تعريفات الحاسب اآللي بإختالف تخصص وخلفيات معرفيه

الحاسنب عنرف وي, يحسنب بمعنني Compute الفعن من ةمشتق Computer كلمة

الةياننات معالجنة يمكنهنا متناهينة دقنة و ةالينة سنرةة ذات لكترونيةة إ حاسنةة آلة بأنه

Processing وتخزينهننناStoring اسنننترهاةها و Retrieval لمجموةنننة وفقنننا

في حي يري ةلماء اإلتصناتت ,المطلوبة للنتائج للوصول األوامر و التعليمات م

بأن الحاسةات هي ةةارة ة أههزة إتصاتت رقمية فائقة السرةة .

الحاسب بأنه : Wikipediaوةة تعرف موس و

ذات قيمننة معلومننات ومعالجتهننا إلنن الةيانننات سننتقةالإقننادر ةلنن يإلكترونةةههننا

يخزنها في وسائط تخزي مختلفة, وفي الغالنب يكنون قنادرا ةلن تةنادل هنتا النتنائج

والمعلومات مع أههزة أخرى متوافقة. تستطيع أسرع الحواسيب في يومنا هتا القيام

ن قليلننننننننننةفنننننننننني ننننننننننوا العمليننننننننننات الحسننننننننننابية والمنطقيننننننننننة بالينننننننننني بمئننننننننننات

أن الحاسب اآللي هو باألساس والمعني.................................................

أو مجموةننننة منننن الننننووائر اإللكترونيننننة ال ننننخمة إليكترونيةةةةةةةننننارة ةنننن دائننننرة

Page 4: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

3 الباب األول

و بنالمنط والتي ت تجيو وت تعرف التعام إت مع النة نات اإللكترونينة وفقنط .

لغةة ة الوحيوة التي يمك أن نتعام مع الحاسب بها مةاشنرة هني الرقمي نجو أن اللغ

, 0}والتي ت تحتوي أبجويتها إت ةلي رمزي إ ني همنا Machine Code اآللة

للحاسنب , كمنا يوضنح Motherboard اللوحنة األم 0-0.ويوضح الشك {1

رسما تخطيطيا للحاسب ومكوناته . 2-0الشك

.لحاس آلي Motherboard : اللوحة األم 1-1شكل

حاس آلي لرسم تخطيطي ل: 2 -1شكل

Page 5: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

4 الباب األول

)الجيل األول(: Machine Codeاآللة لغة

هنننني لغننننة الةرمجننننة الوحيننننوة التنننني يفهمهننننا وينفننننتها الحاسننننب اآللنننني مةاشننننرة

Low Level Languageلمنخف نة المسنتوي "بوون ترهمة"وتعو من اللغنات ا

أو بنناألحري هنني اللغننة األقنن مسننتوي ةلنني اإلعننال , لكنن نننوع منن المعالجننات

Microprocessor لغنننة آلنننة خاصنننة بنننه , تكتنننب ةلننني صنننورة أرقنننام نائينننة

Binary Code والةنننرامج المكتوبننة بلغننة اآللنننة لهننا تحتنننوي ةننناوي النننتاكرة ,

. Physical Addressesالحقيقية

حتالله إستخوام اللغة منخف ة المستوى بسرةة التنفيت وإيتميز الةرنامج المكتوب ب

من النتاكرة بعكنظ نهينرا المكتنوب بلغنة ةالينة المسنتوى والنتي هنوا صنغيرا حيزا

. Resources ت وقتننننننا أعننننننول ويحتنننننناا إلنننننن مزيننننننو منننننن المصننننننادر يأخنننننن

غننة صننعةة هننوا وتحتنناا الةننرامج المكتوبننة وممننا سننة يت ننح أن لغننة اآللننة هنني ل

بهنا إلنني وقني عوينن ناهينو ةنن ضننرورة تنوافر الورايننة الكاملنة بنناألههزة و أهمهننا

المعننالج لننوي المةننرمج . ولهننتا األسننةاب ةهننرت الحاهننة إلنني لغننات برمجننة أخننري

. Abstractionأةلي مستوي وتتسم بشيء م التجريو

البرمجة ومستوياتها :لغات

لجيل األول :ا

تعاقةةل م لغات الةرمجة وتوالي بعوها أهيال مومث لغة اآللة الجي األت

منها مايأتي :و 3-1يوضحها الشك اللغاتم

. ومستواياتها : يوضح هرمية لغات البرمجة3-1شكل

Page 6: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

5 الباب األول

:Assembly language الجيل الثاني

يكتب فيها ت الةرنامج نوأل Hardware dependent أي ا اللغات م الجي هتا

اآللننة لغنة إلن للةرننامج أوت ترهمنة بعملينة يقنوم أن الحاسنب ةلن يجنب ,اآللنة بلغنة

. ذلو بعو بتنفيتا يقوم م وم فهمهل

: high level languageالجيل الثالث

. Procedural language أو ما يسمي بالبرمجة اإلجرائية :

إضافة مع اتنكليزية اللغة هم م قريةة همال الةرمجة يف نستخوم هنا أصةحنا

مهمة تنفيت أو مشكلة ح غيةب المكتوب الةرنامج إل الرياضية المصطلحات بعض

hardware independent الحاسب ةتاد ةل تعتمو ت بأنها تتميز. معينة

طلوبالم فهم الحاسب يستطيع حت اآللة للغة لترهمة تحتاا كسابقتها وهي

. Pascal language: واقعي كمثال.منه

:Non procedural languageالجيل الرابع

للحاسب الموكلة المهام تنفيت في المةرمجي ةم تسهي غيةب الجي هتا وهو

أن مك ي ما أهم OOP التوهه الكائنية الةرمجة ولع ,الةرمجية المشكالت وح

م سلسلة أنها ةل مشكلة أي معالجة ةل تعتمو وهي, الجي هتا به يوصف

. Objects الكائنات

. Objectsالكائنات بي التفاةالت بوراسة تهتم كما به خاص سلوك كائ ولك

:Natural language اللغات الطبيعية الجيل الخامس

لغةة لرمجةة تم ةة ال سةةف مةة هةةي اللغةة الت صةة إلةةط ال سةةف ةةط مةة بلمةة ر ة

إال ن لط م هة مة تو ةدا وغمة غ واغةي ن ةعا األمةر لو ةد المتة ن بال ا و

جبرا كا را م ل ث العك ر الصت بط تركب بل وت رز ه ن ب قل م الت دا .

: الروبوت كأحد إهتمامات أبحاث الذكاء الصناعي 4-1شكل

Page 7: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

6 الباب األول

تساؤالت هامة :

عض التساؤتت المهمة ومنها :يرد إلي ذه دارس الةرمجة أو المترهمات ب

البرمجة؟ لغاتلماذا يوجد هذا العدد الكبير من

برمجة جديدة بإستمرار ؟ لغاتوما هو الداعي من وجود

؟ البرمجة األفضل لغةوما هي

ختلمة وقةد ت ة ن متو ا ة م ةب و م م مت ت مج ال الت ا داجم إلط س

تجةد ن مت لاة ان ت ت ل جم ع المباة .م ن تلة ج لرم لغ ةم لوال ل ن

Gamesالت ا ةةة الولم ةةة والهتدسةةة تختلةةةف ك ةةةرا بةةة ت ا ةةة األلوةةة ا

Business Applicationsوك مةةةة ةختلمةةةة ن بةةةة الت ا ةةةة التج اةةةةة

.Operating Systemsوب نظي التيغ

دةد ق مة إجةرار الت وة ت لرمج ج لغ ط لوض األل ن ت ن ت لم إني ر

لرمج م جة د ل لموة . ن ة بة ت لمة تةداةف الماةرمج لغ الم ل ل بلط

ن . م لود بلط اإلصداا المود

الجدةد مي له لم سا ه . لغ لغ لا م ت تط ا

VB6 و مة لة ++C لغة و Java لغة وةتضح تل مة التية له ال ا ةر لة

. Visual Basic Dot Netو

األ ض ا إل إلط مة سةا ال ة جةد مو ة ا متمة لغ م م ةخص ت دةد ال

.وتج ال إقتص دللم بلمط م ك را بل ه ط عا المج ن كم ةختلا ه

و ست ع إج دته ج د ك رالتط لغ األ ض ل لتوا لط ط ال لغ د ت ن ال

التةط ةوةتخدمه الوةدد األكاةر لغة ت ق و لت لمة تةداةف قة وقةد ت ة ن ال ط وق

م الت س وغ ر تل م الو ام واألسا ا .

: Algorithmخوارزمية كتابة برنامج

وةر وت و تة . م Problem م ة ل لرنة مب ل سة لط ن بة مة مة لة لمية ل ة ل نه : الخ اازم Wikipediaم س ب

. مةة ميةة ل ل ةة ال زمةة والمتولوةةل والمت ةة الرة ةة الخ ةة ا مةة جم بةة م

لت ر ةة إ الةةعل الخةة اازمط الموةةلي الوةة لي إلةة نوةةا االسةةي لهةةعا الخ اازم ةة وسةةم ت .الم دل الت سع ال رن ط

واألواول ةةةةةةةةةةةةةةةة ال ت ت ةةةةةةةةةةةةةةةة اللغةةةةةةةةةةةةةةةة ةةةةةةةةةةةةةةةةط المتتيةةةةةةةةةةةةةةةةر ال لمةةةةةةةةةةةةةةةة

ث ث لتراك ف خ اازم بل تصرة موت ك ن األص و ط« Algorithm» طللخ اازم ةة . Loops والت ةةراا( Decision) خت ةة اواإل التولوةة : و ةةط ةةا

Page 8: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

7 الباب األول

وال ةةةةةة د Flowcharts شةةةةة ن متوةةةةةةدد شةةةةةةهر مخ ةةةةة اإلنوةةةةةة ا

تيةةةةاه ال ةةةة دللغةةةة قا و ةةةة و ةةةةط كت لةةةة الارنةةةة مب و Pseudocodeالباجةةةةف و الارمج الي ئ ك ر . و ط تت سف الارامب ال ا ر UML و

ةةع المتولوةةل التول مةة مةة مجم بةة بةة باةة ا الخ اازم ةة ت ةة ن: التسلسببل

.الت ل الت ب م و لو إم ت ن قد التول م ت تةةة وقةةةد للتول مةةة لوةةة ا لتولوةةة للهةةة ةم ةةة ال الميةةة ك لوةةةض: ختيببباراإل

تتاةع ص التت ج ك نت إتا ختا ا اإل نت ج إل وتتظر اليروط لوض ختا اإ إل

مختلةةةةف آخةةةر موةةةة ا تتاةةةع خ قئةةةة ك نةةةت وإتا متولوةةةةل تول مةةة ة ةةةة ل موةةة ا . خت ااإل و ال راا تخ تإ توم م ط ال رة ع . التول م م

بةةةدد الخ ةة ا تولوةة نمةة إبةةة د مةة لةةد ال الميةة ك لوةةةض لةة بتةةد : التكببرار

.Loops الت راا ل هب ل ة م و عا. المرا م

صخفيما يأما

خوارزمية كتابة برنامج من البداية

فتتمث في الشك التالي :

: مخطط إنسيابي كخوارزمية إنشاء وكتابة برنامج 5-1شكل

Page 9: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

8 الباب األول

: 5-1و م ةلط ت ح ألجبار ااخ اازم ط الي

1. Edit Program :

H.L.Lللغةة ب ل ةة الموةةت ل ت رةةةر الةةتص الارمجةةط وةةةتي مةة خةة ن كت لتةةه

: ط ل م را نص ل م

{Notepad, Notepad++, Any IDE Code Editor}

.Source Codeوةومط الملف المتي م ع الومل ل لتص المصدال

2. Compilation :الترجمة عملية :

Source ط ترجمة الةتص المصةدال Compilerوتوتط إستخداا مترجي Code مب م ة م تة ا للغة ةم ة ن تمهمهة األلة إلةط لرنةMachine

Code . 3. Compile Errors :أخطاء الترجمة :

قد ة جد ل لتص المصدال لوض األخ ة ر والتةط تتولة ل ابةد لغة الارمجة

الموةةتخدم ةةط كت لتةةه و ةةط ةةع ال لةة ةصةةدا المتةةرجي ت رةةةرا ل ألخ ةة ر لط لوف ن ع المترجي وقرة إني ؤ و ل ون خ قد تمت مص د ته وتل ب

و ط ع ال ل ةت جف بلط المارمب إبة د ةتح الملةف المصةدال وتصة ح

م له م خ ر ثي ت راا الترجم ث ن لتط ةتخلص م ل خ ر ترجم قد ت ن م ج د .

4. Testing مرحلة اإلختبار : :

الترجمة لتجة ي ةجةف ط ل ن خ الارن مب م خ ر الترجم وتمت بمل

إختاةة ا الارنةة مب مةة خةة ن تيةةغ له وتمرةةةر ل نةة مختلمةة وإختاةة ا صةة التت جب واألخ ر المت قع ظه ا ط ع المرلل تومط ل ألخ ر المت .

5. Logical Errors. وRuntime Errors :

كةة ن ةخ ةة الماةةرمب ةةط كت لةة مو مةة الجمةةع وو ةةع مو مةة بمل ةة لوةة ل

و ن ة ون الارن مب تح ملف موة غ ةر م جة د ل لموة دون خرل سه ا.. و ةط لة ن و م ول ال وةم بلةط صةمر ت م إلتم ن بدا وج د ط ال د

وج د تل األخ ر ةجف بلط المارمب إب د تح ال د المصدال ط م ةرا

ماة التص ل مر خرل وتودة تل األخ ر ثي إبة د الخ ة ا كمة ة . 5-1ل لي

Page 10: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

9 الباب األول

. Javaوالي الت لط ةا خ ا كت ل وإني ر وتتم ع لرن مب م ت ا للغ

تنفيذه .حتي الكود كتابة حل التي يمر بها تطبيق جافا من المرا 6 -1شكل

Compilers المترجمات

.خرى إل لغ ط لرامب ت ا ل لترجم م

المصةةةةدا لغةةةة ة خةةةةع لرنةةةة مب تمةةةةت كت لتةةةةه ل مب ل سةةةة لط ةةةة لرنةةةة ترجي ةةةة لم

Source Language لغةةةة كمةةةدخ ل تةةةةتب لرن مجةةةة م ئةةة لةةةةه م تةةةة ا ل

المصةةدا لغةة ت ةة ن مةة وغ لاةة .كمخرجةة Target Languageالهةةد

High Level Programming الارمجة ب ل ة الموةت ى لغة لةدى ةط إ

Languages. م ة لغة C و لغة الة C++ غ لاة ل تمة ت ة ن اللغة الموةتهد

وغ لاةة .الخ صةة لدلةةدى ال اسةة ف Machine Language لغةة اةلةة ةةط

. Executable fileم ة ن الخر بلط ئ ملف تتم عل

.7-1كم ةتضح م الي

: رسم تخطيطي يبين عمل المترجم 7 -1شكل

Source

Code Compiler Target

Code

Executable

File

Error

Messages

OffLine

Notepad,

Notepad ++,

any java IDE

Code Editor

Eclipse,

NetBeans……

…….

Page 11: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

11 الباب األول

توتمةد بلةط Compiler Constructionإلط ن بمل لت ر مترجي تجدا اإلش ا

و ل نة تةتي لغ الارمج الموتخدم ونظ ا التيغ العل س جرل تتم ع الارن مب بل ه

javaكمةة ةة ال ةة ن ةةط لغةة Virtual Machineالترجمةة ةلةة إ ترا ةة

. 8-1كم ما ل لي

: رسم تخطيطي يبين عالقة المترجم بنظام التشغيل . 8 -1شكل

Cousins Of Compilersالبرامج المرتبطة بالمترجمات : صف مختصر لوظائفها:وترجمات مع بين بعض البرامج المرتبطة بالمالجدول التالي ي

الوظيفة البرنامج

المفسر Interpreter

المتةةةةةةرجي بةةةةةة وةختلةةةةةةف المتةةةةةةرجي م ةةةةةة ت ةةةةةةة لرنةةةةةة مب و ةةةةةة

ت ل د دون ما شر Source Code المصدا لرن مب لتتم ع ة ا نه ط

Object Code “ ةةط كمةة ”الملةةف الةةعل ةتةةتب بةة بمل ةة الترجمةة

ط الممور ةتي قرار . الت ة ك ست م نإ لود تتم ع ةتي والعل المترجي

Quick و Basic لغة م ة سة ر ا لوةد س ر وتتم ع ال د المصدالBasic ل خ ةة دنةةه ةت قةةف بتةةد تلةة و ةةط لةة ن صةة د المموةةر

.تم د آل بمة المموةر ةط إسةتخدامه ةط لوةض الاةرامب التول م ة الخ :.ةود الممور ل ك را م المترجي .وةود المترجي سرع متةه ل ة الط

م . 15 – 11 م

Interpreter

المفسر

Source

Code

On Line

Output

Data

Page 12: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

11 الباب األول

برنامج التحميل

Loader

دون الهةد الارنة مب كة د لت ل ةد والمجموة المترجمة ت ا م غ لا

نهة ل م ل لي العاكر ط التخبةت للم اقع ت دةد بل ت ت ى ن المرصة ب ة ر إل تلة وةةتي العاكر ط نموه الارن مب م قع بل تت قف

إلة لت ة اإل بةدا إلة ال ة ل ل لعاكر م قع ل ط الارن مب لت م

الت م ةة لرنةة مب ة ةة ا ل ةة ةخةةر م قةةع مةة ن لةةه بتةةد الترجمةة إبةة د بتةد ث لتة تخبةت ة م اقةع إل للت ال لل التخبةت الم اقع تل لت ة

.العاكر إل الارن مب لت م ق مه

ةط الموةئ ل Loadersو لدختص ا ةم ال ن لة ن لةرامب الت م ة

وإداا الةةعاكر إلةةط Disksجلةةف الملةةف التتم ةةعل مةة األقةةرال بةة بمل الت م .

المجمع Assembler

" ل ن دخله با ا Assembly لرن مب ة ا ل لترجم م لغ

و ل ن ةوتخدا كدلدل إلط لغ اةل . asm.ب ملف له اإلمتداد كم ال ن ثت ر .كم ةتضح م الي ل الت ل مرال مترجي .

. ++Cالوم مع لوض مترجم لغ

Code.as

Assembler Code.obj

Page 13: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

12 الباب األول

برنامج الرابط Linker

و التجم ةةةع الملمةة الت تجةة بةة بمل ةة الترجمةة كةة اد ة ةة ا لةةدمب

ة ةة ا الةةرالا ةضةة و exe.والةةد ق لةة للتتم ةةع ما شةةر ةةد ةةط ملةةف

( Built-in Functionsال ظةةةةة جف الجةةةةة ب ) كةةةةة اد ةةةةة دلالموةةةتخدم ولوةةةض الخةةةدم الم ل لةةة مةةة نظةةة ا التيةةةغ الخةةة ل

كم ةتضح م الي الت لط : الهد ل ل سف إل تل الملف التتم عى

عاكس الترجمة Decompiler

ةة لرنةة مب ل سةة لط ةتةةرجي الاةةرامب ال للةة للتتم ةةع )التةةط ةةط خةةر

الموت ى و عا ل لضاا ب بمة المترجي( إل م ة ئه للغ ب ل

المتةةرجي ل ةة بةة ك الترجمةة الوةة ا ال ةتمةةع ل لضةةاا ب ةة خ ةة ا الترجم التةط ة ة ا لهة متةرجي م ةدد. و ل لم ة ةتةرجي بة ك التجم ةع

Deassembler لرن مج ق ل للتتم ع إلة لغة تجم ةع.ةم ن ةوةتخدا

ةد و ة مم ةد ةضة ةط ب ك الترجم الستو د ال د المصدال إتاو ةةبداد نجة ي بمل ة Security لوةض ال ة ال م ة مة ال سة ا

ب ةة الترجمةة إتا كةة ن الارنةة مب ال لةة للتتم ةةع مترجمةة مةة جةة آلةة

. Javaكم ال ن ط Virtual Machineا ترا

Page 14: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

13 الباب األول

Compiler Stages مراحل المترجم :

مة إتا Black Box المترجي لدبتا ا ولد مغل ة ةا المترجي ةا 7-1الي

كيف الغ ر ستجد ال ر م التم ص والمرالة التةط ةت ة ن متهة المتةرجي والتةط

. Compiler Stagesتومط لمرال المترجي

: اج و ت ةم ت و ي المترجي إلط مرللت

i. مرحلة التحليل :Front End : Analysis Phase .

التط ةجرل ه ت و ي التص الارمجةط إلةط كلمة وجمة للت كةد و ط

م ص ته ودالالته .

ii. دالتركي أو التوليمرحلة :: Back End Syntheses .

نةص لرمجةط جدةةد لةتم داللة الةتص المصةدا ةتي هة ت ل ةد والتط

ول ةة للغةة خةةرل " تتةة لف مةة التول مةة التتم عةةة التةةط ةمهمهةة نظةة ا

". التيغ

: يوضح المرحلتين الرئيسيتين للمترجم 9-1شكل

لتحليلا مرحلة

التوليد مرحلة

Page 15: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

14 الباب األول

والي الت لط ةا اسم تخ لمرال المترجي التمص ل وةورغ لدخ

وخر ك مرلل .

أ: يوضح مراحل المترجم بالتفصيل ودخل وخرج كل مرحلة -11-1شكل

Semantic Analyzer

Syntax Analyzer

Lexical Analyzer

Source Code

List of Valid Tokens 3

4

Parse Tree 5

6

2

Int. Code Generator 8

Intermediate Representation

"In Memory"

9

A File in Machine Code Format

13

Target Code Generator

12

Optimized Intermediate

Representation

"In Memory"

1

Code Optimizer 10

1

Annotated Parse Tree

7

Page 16: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

15 الباب األول

: يوضح مراحل المترجم بالتفصيل ودخل وخرج كل مرحلة ب-11-1 شكل

مولد كود

ملف بالكود الهدف وغالبا

مايكون بلغة اآللة أو بلغة منخفضة المستوي

1

12

محسن كود

المحلل الداللي

واعديالمحلل الق

المحلل الهيكلي

مولد الكود الوسيط

كود مصدري

1

فردات الصحيحةقائمة بالم3

4

شجرة اإلعراب 5

6

8 شحرة إعراب معدلة

7

كود وسيط محسن

1

كود وسيط

9

10

2

Page 17: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

16 الباب األول

بعض المصطلحات الهامة :

: Source Codeالكود المصدري :

High level Languages لرن مب م ت ا للغ ب ل الموت ل

والمراد ت ةله إلط لغ اةل .

: Lexical Analyzerالتحليل المفرداتي :

المرللة بمل ة التوةر بلةط نة اع ال لمة المللمة للةتص وتجرل ط ةع

. source code المصدا

لعا تجرل قرار الةتص المصةدا لر ة لر ة مة ال وة ا إلةط ال مة وةجةرل

. Tokensتجم ع ال رو لتي كلم

Tokensإلي مقاطع Source Code: يوضح تقسيم نص مصدر 11-1شكل

اتط لوض المه ا مته :وةت لط الم ل الممرد

داخل ط التص الارمجط . غ راللع الم قع

تجم ع ال رو ط كلم وت دةد ن ع ك كلمToken Type .

ستتورغ له وةل ته ل لتمص ةط طولوض المه ا األخرل والت

. الا ا ال ل "الت ل اله لط"

Page 18: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

17 الباب األول

: Syntax Analyzerالمحلل القواعدي er:Pars

وةم المرلل ال ن م ل مترجي .

وةجةرل . Parser م توم ته ل لت ل الصر ط اإلبرالط و الت ة ل ة

خ له جمع ال لم الت تج ب الت ل الممرداتةط "اله لةط" ةط جمة ولتةط

. Parse Treeق ابدة "شجر اإلبراا"

ابةدة وتلة تاوة ل ابةد خ صة ل ة لغة وة ا ل لت كد مة سة م الجمة ق

. Grammarلرمج

ت تةةف تاوةة ل ابةةد صةةر ++C ةةط لغةة ifوم ةة ن تلةة الجملةة اليةةرق

كعل . while loopال ل و" ن ة " مو ت

وتياه بمل الت ل ال ابدل للغ لرمج بمل اإلبةراا ةط اللغة الورل ة

وم ن تل تجد ن:

لجمل المول ه تت لف م و و ب وممو ن له .ا

. الجمل اإلسم تت لف م ماتد وخار

ةجةف ن ت تةف ifتجةد ن جملة C# Or Javaكعل ط لغ لرمج مو تة

لصة غ خةرل وةتضةح تلة مة الية ل VBكم ت تف ط لص غ مو ت

الت ل .

Syntax in Visual Basic

Syntax in C# & Java

Page 19: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

18 الباب األول

:محلل السياق "الداللي"

Context, Checker or Semantic Analyzer

تجرل ل ةم الم ل الداللط و الموت ل المرلل ال ل م ل مترجي وتار ةولود الت مته ق ابدة . Statementsبمل الت م دالل الجم ه

الا ن " م ي ول ة الت ل الداللط . الت م األنم ط " ن اع

X , Yله دالل وله موتط إتا ك ن ك م (X * Y ) م ن تل : ن ن ن الومل تواران ق م بددة ط ل ال تصاح له دالل إن ك نت إلدل ال مت توار ب

سلول نص كم ةتضح م الي الت لط:

: Code Generationمولد الكود :

التط ت طر التص المصدال وت ل د التول م التتم عة تجرل ط ع الومل

Operating Systemول للغ ممه م م ك م الجه ز ونظ ا التيغ

واللعة س جرل تيغ الارن مب بل هم .

: التوليد عبارة عنكم ةم ان ت ن بمل

لغ ب ل الموت ل إلط لغ خرل ب ل الموت ل ت ة التص المصدا م ةض لغرغ ن عا ال د م لغ لرمج قدةم إلط خرل لدث مته لتوه

الرلا مع لرامب خرل

إلط لغ خ ص لآل إ ترا الت ةVirtual ال ن مع كم Java Virtual Machine .

مو م المو لج م نظ ا تيغ مو الت ة إلط لغ آل خ ص لت ع

م :

o winX68 o winX64

Page 20: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

19 الباب األول

: Code Optimizationمحسن الكود

ل تهةتي ةع المرللة ومط ل م ل الرم ز " و ع ال د ط ص ا م ل " و م ة

لدختص ا وت و ال د الم لد لهد تورةع بم الارنة مب التتم ةعل التة تب و ةم ن

لةةه بتةةد تيةةغ له جةةرل ةةط ةةع المرللةة لةةع ل تول مةة تتم ةةع سةةرةع و وةة ن

جمةع 1ال موتط له م م تورةف متغ ر وبدا إسةتخدامه ةرا ق مة مة ةط

وإلط غ ر تل . 0ق م خرل بلط

تنقسم إلي : مراحل موازية :

: Symbol Tableإدارة جدول الرموز .1

و ةةة الموتمةةةد بلةةةط ق جمةةة الممةةةردا وةةةمط ل نةةة لجةةةدون الاتةةةط والمو ةةة : ة

خةبن المتغ ةرا المور ة ةم الةتص ت.لموتط نةه List Of Tokensالص

ن بتهة ةط الارمجط ط عا الجدون .كمة ةجةرل تخةبة ن ابهة التةط جةرل اإلبة

Variable Scopeلمتغ ةر التص الارمجط .كم ةوتخدا ط ت دةد مج ن الرؤة

قع الةتص الارمجةط ودوالةه التةط ةم ة هة إسةتخداا ةعا المتغ ةر و ط مجم ب م

و لتورةمه ط جدون الرم ز .

لعا ة ا المترجي ل إلبتم د بلط جدون الرمة ز ةط تخةبة إسةي المتغ ةر "المت ة ن "

وتلة للت كةد Variable Scope "الت ة "" ومةدا "Data Type" و نم ةه

: كم ة ح الي الت لط عا الت "خ ا م بدا إستخداا عا المتغ ر

: Error Handlingإدارة األخطاء : .2

تتةةتب بةة الومل ةة الوةة ل خ ةة ر وقةةع هةة الماةةرمب ثتةة ر كت لتةةه للةةتص المصةةدا

وةجرل التو م مع ك ن ع م األخ ر لي مختلف .وةا ط الهد األون واألخ ر

وت ة ح سةاف الخ ة قةدا رمب إشة ا إلةط الخ ة لمو لج األخ ر إب ر الماة

ون وإظه ا ةة اإلم ة ن وم ولة تجم ةةع كاةر بةةدد مة األخ ةة ر الت جمة بةة خ ة

ط آن والد . لهد تورةع بمل الترجم .

Page 21: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

21 الباب األول

: مثال

: التالي بسيط لتوضيح فكرة عمل المترجم للكود

60* Rate+ initial= Position

Page 22: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

21 الباب األول

األول :اسئلة علي الباب

. Computer الحاسب األليعرف .1

األساسية من دراسة المترجمات ؟ األهدافما هي .2

. Machine Language لغة اآللةأذكر مميزات وعيوب .3

ذلك فما هو سبب, ن لغات البرمجة وهي في زيادة مستمرة توجد العديد م .4

وماهي لغة البرمجة األفضل .

Compiler Constructionعملية بناء مترجم فقط كيف أن الرسموضح ب .5

لذي سيجري تنفيذ تعتمد علي لغة البرمجة المستخدمة ونظام التشغيل ا

البرنامج عليه .

اللغات العالية الجيل األول من لغات البرمجة في حين تمثل لغة اآللة تمثل .6

. , قارن فيما بينهما الجيل الثالث" Procedural" المستوي

الجيل الثالث من لغات البرمجة بينما Proceduralجرايية تمثل البرمجة اإل .7

تمثل الجيل الرابع وضح ذلك ؟OOP البرمجة الشيئية

. الرسمبين ذلك مع ةم ت و ي المترجي إلط مرللت اج و ت .8

. للخ اازم ش ن " ن اع متودد " تكر لوض مته .9

؟ ال ا و م الم ص د للغ الارمج .11

. إلني ر لرن مب لي ب اإاسي مخ ا إنو لط كخ اازم .11

. مرلل ك وخر دخ ت ح مع ل لتمص المترجي مرال لرسيلإشري مع .12

Errorو إداا األخ ر Symbol Tableتود مرلل إداا جدون الرم ز .13Handling ط المترجي و ح تل . المرال الم ازة م

مص ل مم ة تط : خمو إشري لدختص ا .141. Parser 2. Context Analyzer 3. Intermediate

Represention 4. Code Optimization

5. Code Generator

6. Target Code

7. Symbol Table

8. Front End

9. Back End

11. Parse Tree قي لتمرةر ال د الت لط بلط جم ع مرال مترجي مع الت ح ل لرسي : .15

Position = initial + Rate * 60

X = a + B / 13

Page 23: Introduction to Compilers : Second Edition

الصف الرابع مات ترجالم

22 الباب األول

تطبيقات الباب األول :

.Editors & Compilers: (1التطبيق )

من خالل C# compilerوإستخدام المترجم Notepad ++ Editorفي #Cبرنامج بلغة بسيط تعلم كيفية كتابة

CMD Console .

.Editors & Compilers : (2التطبيق )

VB compilerوإستخدام المترجم Notepad ++ Editorفي VB Dot Netتعلم كيفية كتابة بسيط برنامج بلغة

. CMD Consoleمن خالل

(3التطبيق )من خالل VB compilerوإستخدام المترجم Notepad ++ Editorفي Javaابة بسيط برنامج بلغة تعلم كيفية كت

CMD Console .

: An IDE Debuger: (4التطبيق )

Decompiler :javap , ildasm: (5التطبيق )

. Some Intended Logcal Errors: (6التطبيق )

. Some Intended Contextual Errors Errors : (7التطبيق )

. Some Intended Run Time Errors : (8التطبيق )

. Optimization By Background Compiler in NetBeans : (9التطبيق )

.Optimization By Background Compiler in VS 2010 :(10التطبيق )