موسيقى
ماشي السلام عليكم ورحمة الله وبركاته، اليوم إن
شاء الله احنا بنكمل ما وقفنا عليه في المحاضرة الماضية كنا في
section 5 أربعة اللي هو syntax directed
translation schemes هي عبارة
عن grammar مع semantic actions
شوفناها احنا قبل هيك، هي باختصار شديد مثال على ذلك
هي grammar ومعها semantic actions اللي هيبين الـ
curly braces ونحط semantic actions بوسط ال body
تبع ال production فعمليا من ناحية ال definition a
syntax directed translation scheme is مبدأيا is a
context free grammar هو grammar بالأصل زي تماما ما
كان ال syntax directed definition
هو عبارة عن grammar بس grammar مصاحبة
إلها rules هنا grammar with program fragments مش
مصاحبة إلها rules بس مبعمة ب program fragments
أجزاء بسيطة من ال code بداخل ال production bodies
program fragments هذي print program fragments ممكن
تبقى بس لحالها ممكن تبقى كمان statement أو أكثر أو
أكثر فصح هذا ال definition أنه عبارة عن context
free grammar with program fragments embedded
within the production bodies program fragments are
called semantic actions بنسميها semantic actions
تظهر ما بينها بين curly braces الـ curly
braces اللي هي أقواس المعروجة
okay فقالنا هنا كمثال على ذلك لجرامر هادي الجرامر
هادي is a SDT SDT يعني syntax directed translation
for الترجمة prefix to prefixinfix to prefix during
parsing يعني أثناء ال parsing بينعمل ال
translation ال translation ال parsing بيتم بواسطة
ال rules ال productions وعسيف وال translation بيتم
بواسطة ال semantic actions اللي جوا جوا هذه ال
productions هذا يعني عمليا أثناء ال parsing بتنبني
ل treeلأن احنا عندنا هذا ال grammar خلّيني اكتبه
هنا على الجانب ال grammar هذي
الناس
بده اختصر عن ال action بشكل هذا
احنا لو عندنا input string تلاتة ضغط خمسة زي
الأربعة احنا
.. ايش بيقولنا هذا؟ translation from infix to إيش؟
to prefix، مش postfix prefix يعني بيطلع إيش؟
التلاتة ضغط خمسة زي الأربعة تيجي العملية جبل في
الترجمة3.5 ثم الزائد قبل لكي تنجح مع النتج هذا مع
الأربعة صح؟ فأنت كنت بناء على هذا ال drama ال
partially اللي هتتشكل لهذا ال .. طبعا هاي ال
output طبعا هاي ال output ال result ال input هذا
ال partially اللي هتتشكل له مقدر أنا أتخيل أنه هذه
ال actionsبقدر أتخيلها ك symbols و أحطها ك nodes
في ال tree يعني زي ما في هذه node لل E و لل Z و لل
T بعمل node لل action هذا الكلام علشان إيش أنه بعد
ما ال parts tree تكون شكلت نمر على ال parts tree
هذه لإجراء ال actions لتنفيذ ال actions نلف على ال
tree depth firstleft to right صح وهنا في action
بنفسها فعمليا أصبحت احنا عملنا translation عملنا
parsing وعملنا translation وسط ال parse tree و ال
actions فلو أنا بدي أرفع على ال tree هذه left to
right dip first فأول leaf node هشوفه ليه هذه ثم
هشوف هذه صح ثم هذهثم هذه ثم هذه ثم هذه ثم هذه ثم
هذه ثم هذه ثم هذه ثم هذه ثم هذه ثم هذه ثم هذه ثم
هذه ثم هذه ثم هذه ثم هذه ثم هذهعملنا SDT اللي هو
ايش يعني SDT؟ يعني Grammar طعمناها بال Semantic
Actions أصبح عندي اللي هو Translation Scheme صح؟
هذا ال Translation Scheme هو وسيلتنا لل Passing ول
لل Translation في أنواعParsing لأنه هو نفسه اللي
بستخدمه في ال parsing و Translation لأنه بعد ما
أستخدمه بروح بعد ما أعمل ال parsing بروح بلف على
ال actions بأنفذهم عشان يطلع معايا ال output
المطلوب اللي هو ال translation ال output اللي هنا
هو عبارة عن ترجمة من infix ل prefix الآن
السيقشن التاني هذا ال .. هذا
ال .. هذا ال grammar هو ال postfix translation
semantic actions SDT يعني implementing ال disk
calculator اللي بتعمل بتعمل ايه translation
scheme ايش اللي .. لأنها calculator فهي بتحسب
بتعمل evaluationهنا ال grammar هذه اللي في الأول
وضفتها بس translation يعني أنا بعد ما أطلع هذا ال
string كذا خلاص انتهى دوري ك translation حساب هذه
العمليات جديش بالظبط هذا evaluation هذا مش دوري في
ال translation لو أنا الآن بدي أعمل evaluation
هعملها بزي ال example هذا انه هي نفس ال grammar
نفس ال grammar صح؟ ده كان ايش حاطيته؟ محاطيتش
actions اللي تسوي translation محاطيت actions اللي
تعمل evaluation لأن هنا الغرض اختلف في الأول كان
الغرض ايش؟ أنه أطلع مقابل ال string ال input اقرا
له outward string لأن هنا الغرض بده أطلع قيمة هذا
ال expressionبدي احسبه بدي actions اللي بتحسب هذه
ال actions اللي بتحسب و جايب أوضعها زي ما بتشوف
بعد في نهاية ال body في نهاية ال body يعني ال body
في الآخر okay فهذا عبارة عن postfix SDT
implementing this calculator وموضفته أن يحسب ال
value فطبعا نلاحظ شغر مهم أن ال attribute اللي هنا
هذه ال semantic actions مظيفتها أنها بتعطي value
لل attribute اللي اسمها ال dot value فيها دي dot
value لل expressions و dot value لل terms و dot
value لل factors صح؟ كلهم عبارة عن كل ال symbols
اللي لها dot value attribute لو لاحظت على ال dot
value attribute هذه كيف تأخد قيمها بتلاقيها ايش؟من
تحت يعني .. يعني Synthesized Attribute ولا لأ لو
لاحظت أنت الآن هي مثلا ال dot value تبعت ال
expression تأخد من ال dot value تبعت ال child
expression وال dot value تبعت ال term مرو عليهم
كلهم هتلاقيها نفس الشيء كلهم Synthesized تمام في
مثل هذا الحالة أنا بقدر أ ..
بقدر يعني أعتمد على هذه ال actions في أنها تعطي
تحسب ال dot value تبع ال expression في الآخر في
الآخر لما بكون أنا اكتمل ال parsing اه اكتمل ال
parsing بقدر خلاص أطبع ال dot value تبع ال E لأنه
بتكون تراكمت فيها ال value الجمالي تبع هذا ال
expression أجزاء المختلفة نعم بسؤال
احنا لأن في أنا اللي هو ال post-fix translation
scheme شوفناه
ل evaluation هيته وقبل هيك شوفناه لل
translation مجرد أنه نطلع string مقابل stringالذي
سأخبركم عنه هو section 542 سأخبركم عن البطم وال
parsing سأخبركم عن البطم وال parsing سأخبركم عن
ال parsing سأخبركم عن البطم وال parsing سأخبركم
عن البطم وال parsing سأخبركم عن البطم وال
parsing سأخبركم عن البطم وال parsing سأخبركم عن
البطم وال parsing سأخبركم عن البطم وال parsing
سأخبركم عن البطم وال parsing سأخبركم عن البطم و
ال parsing سأخبركم عن البطم وال parsing
سأخبركم عن البطم والبدل أن نعمل هذه العملية
نستعين بالـ Base Stack هذه الـ Stack نضع عليها الـ
Symbols ونعمل Replacement كل ما نعمل Derivation
نعمل Replacement الـ Symbol اللي على رأس ال
production نضعه بدل ما هو الـ Symbol اللي في ال
body وأثناء الشغل بنقيم
بنعمل evaluation بنعطي values بالضبط فيه ال
attributesهي ستأخذ من اللي تحتها أو من ال symbols
اللي تاب على ال head تبع ال production هذا كله هنا
ماتعتمد على bottom of parsing فبنخليه لقدام لما
نحكي في bottom of parsing احنا شوفنا stack
implementation قبل هيك بس ليش ال bottom ال top
down parsingماشوفناش stack implementation لل
bottom-up أنه احنا نشيل مجموعة من ال symbols ونحط
بدلهم الـ head تبعهم احنا شفنا العكس شوفنا كيف
اشيل الـ head و اعملاش replacement بالـ body الآن ال
section 4.3 اللي هو إن
يكون في عندي actions inside الـ productions
الأمثلة اللي شفناها حتى الآن في خمسة أربعة حتى
الآن كانوا في عندي مثال كانت الـ actions at the end
of مصموم كله مجهين في الآخر وقبل هيك كان في
actions في بداية الـ productions ما شوفناش inside
inside هذا إمتى ممكن يظهر معاه في بعض الحلات منها
أنه أنا يبقى في عندي grammar أرجع تاني للـ section
تبعها
فيها عندي أنا grammar زي هذه الـ grammar هذه left
recursion فيها left recursion صح إن إيه لو أنا
اتغضيت عن الـ أو تجاهلت الـ action هذه الـ production
هذه الـ production نعم فيها left recursion فأنا
المفروض أشيل الـ left recursion في البداية فأنا
عندي هنا هاي الـ grammar وهي الـ action دي اللي
بيعمل الـ evaluation لو الـ
SDT دي أنا بدي أستخدمه يجب أن أشيل الـ left
recursion في الأول فعشان أشيل الـ left recursion
بدي أتعامل مع هذه
الاكشن يبدأ يتطلع عليها كإنه واحد من الـ symbols
فبنجي هنا للـ section 4-3 على
سبيل المثال هذه الـ production اللي كنا نتشار عليها
هذه الآن هي واحدة من الـ الـ E الـ E symbol له two
productions اللي هي هذه والتالي اللي فيها E can
have the form T فالآن
و أنا زي ما قلنا بالبداية هنطلع على هذا على إنه
symbol واحد من زي و زي الـ other symbols و هنعمل
إزالة للـ left recursion هالـ E can have the form E
plus T و ها بدي اختصر أنا الـ semantic action
بالجثين اعتبر هدول الجثين على إنهم ماشي one symbol
وهي الـ production التانية اللي هي T كيف أنا بشيل
الـ left recursion هنا بدي أنظر إلى هذا الكلب كله
على إنه ايش Alpha
و هذا على إنه ايش Beta و إذا أقول T prime can have
the form ايش Alpha
مش هحط E' صح؟ صح؟ فإني E' خلاش؟
الـ beta E' صح؟
امسح هذه دلوقتي وبعدين الـ E' مظبوطين؟
أنت نفسك عملنا أورا بصر مصدر إيه؟
احنا عملنا two .. two ايش؟ احنا .. احنا بصفة عامة
بنتعامل مع الـ lift recursion مش بانظر الـ
productions اللي فيها lift recursion على إنه الـ
body .. باقي الـ bodies تبعتها الـ alpha و اللي
مافيش فيها lift recursion علينا beta بس هو الكلام
هذا نفس الكلام اللي عمله هنا بس بدل إن يسميه E'
يسميها R صح؟
اه هذه ايش؟ هذه E أصبح
الآن عنديالـ semantic action جاي في وسط الـ inside
اللي هو inside الـ body تبع الـ production موضوع
سكشن 5 أربعة كله هو أبدا عن SDTs اللي هي syntax
directed translation schemes الفكرة الأساسية هي
وجود actions semantic actionsالـ productions على
طول مباشرة فأنت بتاخد موضع في إيه إيش أو في الأول
أو في الآخر أو أحيانا بضطر أحطه في النص إذا لازم
الأمر هذه الـ actions بتساعد في .. معناه ذلك إنه
اندمجت عملية الـ translation أو الـ evaluation أو
whatever الـ actions بتسويها اندمجت هذه الـ actions
في الـ parsing وبصير إنه إما أنا ب .. أنفذ الـ tree
ب .. أبني لـ tree وبعدين بلف على الـ actions أنفذها
بقى أبني لـ tree وبعدين بلف على الـ actions top down
left to right بلف عليها أنفذها حسب هي وين ما هو
موجودة إذا كانت في البداية وفي النص ولا مش مش مش
مش مش مش مش مش مش مش مش مش مش مش مش مش مش مش
مش مش مش مش مش مش
مش مش مش فلتناها الآن اللي هي إن نبني stack نعمل
عملية parsing على شكل stack ويجي تنفيذ الـ actions
أثناء أثناء management للـ stack أثناء الحذف
والإضافة من الـ stack وهذا اللي أجلناه لاحقا وهذا
هو خلاصة الـ section 5.4 الخامسة الخامسة الخامسة
الخامسة الخامسة خامسة خامسة خامسة خامسة خامسة
خامسة خامسة خامسة خامسة خامسة خامسة خامسة خامسة
خامسة خامسة خامسة خامسة خامسة خامسة خامسة خامس
implementing الـ L-attributed SDDs كل ما حكيناه
كان على S-attribute على S-attributes صح؟
Synthesized Attributes لما يكون في عندي L
-attributed SDDs أحتاج أن أعمل recursive
descent إذا بتذكروا الـ recursive descent اللي هو
أول حاجة بدك تذكرها باسمها recursive descent
recursion recursion يعني فيه functions بتستدعي
نفسها خلاص؟ إيه بجيهش بنذكر مع ذلك؟ بنذكر إنه لكل
non terminal فيه الـ function تبعه صح؟ okay فأول بسمع
recursive descent بدك تذكره recursion و الـ
recursion بدك تذكرك بالـ function اللي معمولة الـ
function لكل واحد من الـ non terminals non
terminals صح؟ هذا الكلام سنعود له الآن ونشوف كيف إنه
انطبقه على الـ الـ attributed SDDs لو أنا في عندي
شيء بسيط جدا لنبسط ونعطي مثال الـ while statement
هذه الـ while statement هذه على إنها بسيطة وجاي
كلها في سطر ولا حد أو الـ production تبعها صفر واحد
وهي عملية في الـ code ممكن تبقى جاي صفر واحد لما
أنا أقول Y X
greater than خمسة Y يساوي Y plus واحد هاي الـ
statement صح هذا عبارة عن condition وهذه أبقى عن
statement مظبوط؟ وكله هيك is a statement اعتبرها
statement وهذه statement child مظبوط؟ فالـ
definition تبع statement إنه بيبدأ بكلمة y هذا
واحدة من الـ definitions تبع الـ statement في عندك f
statement في عندك observation فبعدها ghost بعدها
condition بعدها second ghost بعدها child statement
هذا الكلام على بساطته إلى ترجمته إذا أردنا ترجمته
لـ Target
Code أو Intermediate
Code ممكن الـ statement هذا الواحد يترجم
إلى أكثر من Instruction صح ولا غلط؟ يعني هذا الـ X
أكبر من الخمسة في
الـ assembly ممكن ترجمته بـ jump one jump instruction
بنحط لأ ليش لازم أحط في الأول أستخدم X من الـ
memory وأحطه في الـ register وبعدين أشوف الـ
register هذا أكبر من 5 ولا لأ وإذا true بتبقى على
الـ level الفلاني فهي على الأقل اتنين عمل load في
الـ register بعدين أقارن الـ register بخمسة وبالـ
jump أقفز إذا أقفز إلى المكان فعلى الأقل two
instructions فهذا الـ code الآن الـ jump الأولى اللي
هي الـ load صح والتاني اللي هي الـ jump أنا بس
بنبسط الأمر الـ jump هذه بده تخليني إذا كان true
إذا كان false بدي أخرج إلى برة الـ wire إذا true
بده يكمل يكمل في ايش؟ في الـ statement اللي هي الـ y
بالسامة والـ y plus one وهذه برضه كمان الـ
statement قد تكون لسه بدي أعمل load للـ y في الـ
register وبعدين أضيف عليه وبعدين إن أضيفه تاني
على الـ y صح؟ وبعدين أخده من الـ y ارجع على الـ
memory يمكن إيه أربع instructions معكم؟ اه هذول
يمكن ياخدوا معاه أربع instructions بحسن اللي قلت
اتنين أقول اتنين المهم هي تنقلو ميجو هنا هدول هيك
عبارة عن الـ code تبع مين S1 وهدول عبارة عن الـ code
تبع الـ condition الـ condition نفسه هذا يترجم والـ
S تترجم هذا على وساطة لكن رغم هي تبقى شيء أكثر من
هيكة وبالتالي ياخد أكثر من instructions دلوقتي
الآخر جملة فيه إنه يعمل jump تاني على مين على الـ
condition تبع الواقع عشان يرجع يتحقق منه هل هو
true لسه true ولا بطلت true على فكرة هذه infinite
loop ولا لأ؟ لا مفيش ايش بيغيروا قيمة الـ X المهم
بس مش هذا القضية المهم إنه أنا ترجمة هذا الـ line
of code line of code يعني أنا بدي أترجم عدد lines
of code وبالزمن كمان ال jumps هذا بدها labels يعني
أنت قول jump أنت قول وين يروح يعمل jump وهاد كذا
كحال okay فأنا هأحتاج
أشكل أشكال ال أيش ال code الإجمالي ال code الإجمالي
تبع هاد ال while statement
من عدة مقاطع أضعهم
مع بعض هنا
بدي أضع label أقول مثلاً one عشان لما أخلص ال
statement هذي أقول له jump على label واحد وهذا ال
code هذا ال code تبع ال
condition بعدين بيجي ال label الثاني
هذا
ال label الثاني عشان لو هو true لو ال condition
هذا true أقول له روح هنا
ولو هو ليس true أقول له روح هنا لأ لو هو true يجب
أن يكمل لوحده لو ليس true يجب أن يقول له هذا قول
label 2 صح؟
صح وهذا الجزء هو label فعصراً عندي هذه الجزئية هذه
label والرقم الأولاني بعدين ال c.code بعدين
ايش اللي هو عامله هنا؟ label طيب
مش أشكال وهاي okay label واحد label two هنا بداية
ال body تبع ال statement واحد ناخدها واحدة واحدة
أول أيش هو ال new هذا يبقى إدارة عن function
بتعطيك رقم okay الواحد عبارة عن رقم والاثنين عبارة
عن رقم آخر دول الأرقام هتاخدهم وتدحمهم بكلمة
label ويأتي بعدها الرقم اللي أنت ماخده label one و
label .. label two فأخدنا الرقمين عشوائيات من
أنهم الآن أسواح ال top next هذه ال attribute بتشير
إلى S1 هي الـ statement اللي جوا ال loop ال
statement اللي جوا ال loop ده تشير إلى بداية نفسها
عشان هي بس تخلص بدها أيش بدها تكمل وترجع ثاني
مصمم فـ S1 dot next ده مشيل إلى L1 L1 هو أيش فيها
القيمة فهي بتشاور على بداية
لما هو بيقول لي هيك أنا بيترجم هذا على شكل عمودي
هي label لما تيجي الكلمة label بعدها L1 بعدين بيجي
ال C.code اللي هو ال code تبع ال condition بعدين
كلمة label وبعدين L2 بعدين ال S1.code اللي هو ال
code تبع ال statement اللي جوا له لإن في عندي S1
.next بيشارل إلى أيش الـ
L1 اللي هي بداية ال condition عشان يفحص إذا ال
condition لسه طول بعدين S
الـ Condition فيه Attribute المفروض تشاور الـ S
.next الـ S هي الجملة كلها هي ال statement كلها
ماهو ال S.next؟ الـ S.next ستكون أول statement
وراها أول statement يعني هذا هو الـ S.next فمن وين
هذا جاي؟ ما فيش أي شيء هنا يعبي قيمة الـ S.next هذا
الـ S نفسه ستكون جاية في إطار برنامج والبرنامج هذا
عبارة عن declaration وبعدين statements فال S هذه
هتأخد ال dot next تبعها من مين؟ من ال parent تبعها
بالضبط فأنا الآن فإيه شمل ال S dot next بيشارل فال
C dot false بده تشاور عليه لو هذا ال condition
false معناته بدنا نروح هنا، مظبوط؟ فهذا ال value
بده تيجي من ال parent تبعه
إذا كان ال code بدي يواصل ينفذ ال code تبع S1 هذه
البنية بسيطة وهذه البنية كلها بتيجي جزء من البنية
الأكبر لل code الكامل تبع ال input اللي بدنا نعمله
translation فالآن احنا لما عملناها زي هيك
في طريقة ثانية هذا المثال
هذا عمل أيش عبارة عن code يتنفس هذه قيم تتعامل ال
dot next attribute وال false attribute وال dot
true attribute ال C dot true بتشغل ال L2
مقبل ال code تبع الداخلي بالظبط الآن هذا هيك هذه
ايش هذه production وهذا
are rules هذا عبارة عن SDD productions معها rules
هذول rules بيتنفذوا عند اكتمال هذه ال production
بالظبط يعني يوم ينقم ال parsing ويكتمل ال parsing
تبقى ال while statement بتكون كل ال attributes
أخدت ال variable تبقى الحافظة ونروح ونشكل وننفذ
هالكلام وآخر تنشغل فيه اللي هي تنفيذ ال line هذا
ال line هذا بيعملي تراكم لكل ال code تبقى كل
الأجزاء بيراكمها في ليش في ال dot code attribute
تبقى مين تبقى ال parent symbol صح ولا صح؟ نفس
الكلام هذا يمكن يعمله ب SDT شو فرق ال SDT عن ال
SDD SDT definition syntax directed definition
rules مع ال productions SDT عبارة عن translation
scheme عبارة عن actions مع ال body تبع ال
production مش منفصل عنها في rules فللحظة أنت هذه ال
production بعد ال goals البرنامج مكتمل تماماً لأ و
أجى بعد ال goals قال له انزل شوية وحط ال line بعدين
حط ال C والجوز وبعدين حط ال fragment هذا ال
semantic action هذا بعدين ال S كمل وبعد ال S أجى
أصبح هذا في يدي ال Y والجوز وأجى الـ action هذا
ثم أجهزة الـ C والـ Ghost ثم أجهزة الـ Action
الثانية ثم
أجهزة الـ S1 ثم أجهزة الـ Action الثالثة هذه الـ
Action الأول وهذه الـ Action الثانية وهذه الـ
Action الثالثة تمام؟ الجزئية
هذه تتولى جزء هذا من الشغل اللي هي إطلاق ال values
تبعتها بعدها بعد ما يتم parsing لل C بنعمل
الجزئية هذه بعد ما يتم parsing لل S بنشكل ال code
الإجمالي اللي هو ال code تبع ال statement الإجمالي
فهذول مثال آخر إضافة إلى الأمثلة اللي شهدناها قبل
هيكة لتنفيذ الـ Translation Translation هذه
Translation عن طريق إعطاء ال attributes values
تبعتها هنا ال attribute هي ال dot code attribute
اللي احنا معنين بيها ال dot code attribute صح ولا
لأ؟ تبعت من؟ تبعت ال S ال value تبع ال dot code
attribute هو في واقع الأمر أبداً Translation صح
لكلامه ولا غلط لأن ال dot code attribute بتحتوي
على ال target instructions اللي تشكل ترجمة لل
input statement صح ولا لأ؟ هنا evaluation ال dot
code attribute وهذه ال evaluation حققت اللي هو ال
translation لهذا الكلام بنعمله
ب predictive parsing recursive
descent parsing recursive descent هيكون في عندي
هيكون
في عندي function للللـ S function هذا يجب أن يكون لديه
local variables فسيكون
هناك checking
لل symbols تبع ال S يعني ال symbol ال Y وهي الجوز
وهي ال C تبع ال condition وهي الجوز check إذا هذا
الجوز بعد ال Y طبعاً أولاً نفحص ال Y بعد ال Y نعمل
advance لل input نصير واجهين على ال character هذا
صح؟ لأن ال Y كلها هتجيهني ك token لأ والجوز هذا
هيجيلي token بظبط بعد ال token هذا أنا بدأ أطلع
على اللي .. اللي جوا اللي لأ بعد ال token هذا بدأ
أبدأ تشكيل تشكيل ال code تبع هذا تبع ال condition
new function تعطيني L1 تعطيني L2 تمام؟ بروح بقول C
code أيش بيساوي؟ أيش إن أنا عملت؟ عملت استدعاء زي
ما أنا في ال S تبعت ال non-terminal S هروح أ study
ال function تبع ال non-terminal C مش هذا non
-terminal آه بدي أعمله parsing وبدي أعمله
translation ال C function اللي هي على اسمها على اسمه
بدي أعمله parsing له وبتعطيني وبتعطيني ال return
ايش ال code ال translation تبعه ال translation
تبعه بأخدها وبخزنها في ال C code attribute صح
هيك؟ خلي بالك هذه بابا كمان هتطلع لترانسليشن
تبعها ب return statement هذه ال S هتعمل return
لايش لترانسليشن تبعها كله وال C هتعمل translation
ل .. فأنا هأخد الترانسليشن اللي أعطاني إياها ال C طبعاً
ال C إذا فشلت إذا كان ال input اللي داخل في أي خلق
ال C هتفشل وبالتالي أنا هأفشل ومش هتعطي
translation بس على فرض أن ال input مكتوب صح هنعمله
parsing وهنعمله translation وأخد ال translation
تبعه وأخدناه في ال C code هذا ال C code الآن بعد
ذلك طبعاً بدواصل وأعمل check ل Legos خلصت من ال
check وصلت لنقطة هذه وكل شيء سليم أبجي الآن أنا
بدي أيش بدي أعمل translation لأ لسه لل S ال child
أنا ناسيها فبروح أ study نفسها أ study نفسها على
الواحد اللي هو وين بداية اللي هو الـ code
تبع S فبعطيها الواحد على أساس بداية وين الـ code
تبعها بأخذ الترجمة منها خلاص الآن S code و C code
باستخدمهم في إيش؟ في تشكيل
الـ translation الإجمالية تبع الـ wild statement ومهمة
الـ return أرجحها للاستدعاء الـ S أصلاً بهذا عبارة عن
pseudocode للـ S function اللي هي عبارة عن
recursive descent implementation recursive descent
implementation للـ SDT
الترجمة دي احنا عملناها على أساس أنه الـ functions
دي بتستدعى وبترجع translation يعني الـ S بترجع لي
translation والـ C بترجع لي translation وبعدين أنا
بتتراكم هذه الـ translations للـ root اللي هو الـ
start سمجل الأساسيبعد ذلك اطبع البرنامج باستخدام
البرنامج البرنامج البرنامج البرنامج البرنامج
البرنامج البرنامج البرنامج البرنامج
البرنامج البرنامج
بس الله هنا إنه
بعمل الـ print على طول ما هي الاختلاف الآن بعد ما
شيق وبعد ما آخذ الـ labors هذه الجزئية عندي هنا
على هذا المستوى فبطبعها على طول بعدين بروح بستخدمي
الـ C عشان تعمل parsing لهذه الجزئيةالـ C هتعمل
parsing وهتطبع الـ translation تبع الجزئية الخاصة
بها فعند هنا بعد ما كنت طبعت label 1 هتيجي
الـ C و تطبع الـ translation تبع جزئية الـ condition
بعد ذلك هروح أنا وأنا طابع label 2
ثم تستدعي نفسها S عشان تعمل parsing لـ child
statement ومع الـ parsing تطبع الـ translation تبع
الـ child
statement فهي كتابة يعني two implementations
الاتنين recursive descent بس واحدة الأولى هذي
بتراكم الـ translation بتراكم الـ .. نعم الـ
translation في الـ dot code attributes وبترحل لبعض
إلى أن تتجمع الـ translation في الـ dot code تبع الـ
root symbol تبع الـ star symbol بينما التانية برضه
recursive descent ولكنها ما بتراكمش on the fly on
the fly يعني على الطير يعني أول بأول بتطلع الـ
output بتطلع الـ output أو كل ما يكتمل جزئية بتطلع
وكل function بتطلع ما يختصها كل recursive
function بتطلع ما يختصها واضح هكذا احنا بنكون
أخذنا اللي بدنا إياه من section 552 اللي هو
خمسة خمسة واحد كان لـ translation during recursive
descent parsing وخمسة خمسة اتنين اللي هو لـ
translation on the fly الاتنين كانوا عبارة عن
translation باستخدام الـ recursive descent خمسة
خمسة كان عبارة عن implementing الـ attributed SDDs
using recursive descent parsing الخمسة خمسة واحد
كان using recursive descent parsing during
الترانسليشن والتاني كان on the fly هيكلا بنكتفي من
الشارع الخامس كله فالمحاضرة اللي جاية إن شاء الله
بنبدأ في الستة اللي هو الـ intermediate code
generation تمام؟ هنعطيكم العافية