بسم الله الرحمن الرحيم اليوم إن شاء الله بدنا
نستكمل في chapter خمسة في section خمسة تلاتة و
section خمسة تلاتة تقريبا مافيش فيه إشي جديد هو
مجرد exercises ممكن تتبريد أسئلة جديدة بس مش أنه
درس جديد أو موضوع جديد الموضوع أنا عارفه مجرد
أسئلة جديدة عليهويمكن السؤال اللي بدنا نبدأ فيه
بدنا نعمل syntax directed definition بيحول من
infix ل syntax tree هاي السؤال بدنا نعمل SDD يعني
syntax directed definition بيحول من infix ل syntax
treeطبعا في الأول واحدة هتسألني ايش ال infix احنا
أخدناها قبل هيك اتنين ناقص خمسة زائد أربع ناقص D
زائد B مسموح نستخدم ايديو نمبر في ال infix تمام
هذا ال infix طب ايش ال syntax tree احنا قبل هيك
أخدنا ال parsing tree و اتكلمنا مرة عن ال syntax
tree ال parsing tree اللي هي فيها كل ال details
انا بحط ال non terminal بيستبدأ زي ما كنا نعمل
parsingأما ال syntax tree هي من الآخر ال operation
مين مع مين الحسابات مين مع مين يعني على سبيل
المثال لما نيجي نقول مثلا اربع او a زائد اربع ناقص
c مثلا شو ال syntax tree لهذه ال syntax tree لهذه
هي عبارة عن ناقص ال c زائد ال aالاربعة على طول زي
ما انت شايفها ال leaves على طول هي ال numbers و ال
identifiers ال internal nodes اللي هم ماهيش ال
operators من الآخر بيديني بيقولي ايش العملية اللي
بيبدأ تم على طول يعني أنا بيبقى يقولي a بدا تنجمع
مع 4 و بعدين النتج بيبدأ ينطرح مع c فهذه بيسميها
ال syntax tree اللي بيكون فيها ال internal node هو
ال operator و بيكون فيها ال leaves هي ال operands
بتاعة هذه ال operator هاي باختصار تمام؟الان هو ايش
بيقول ليه؟ بدنا نعمل syntax directed definition
بيحول من infix لمن؟ للشجرة هاي لل syntax tree طبعا
احنا أخدنا كتير قبل هيك أمثلة على هذا ال infix
أخدنا قبل هيك انت بتتذكر ايه؟ يحول من infix
لpostfixواخدنا في المحاضرة الأخيرة تتذكري كيف يحسب
القيمة عند ال root بتاعة هذا ال infix واليوم
هيوضيف لسؤال تالت طب كيف نحول من ال infix لمين لل
syntax tree يعني بده الآن tree حقيقية فيها nodes
وفيها leaves وفيها قيف زي ما انت شايفهاومؤشر هذا
بيأشر على مين وعلى مين هيكالة tree دايما طبعا
علشان أقدر أحل سؤال من هذا النوع قلنا قبل هيك كيف
تبدأ تحلي أول إشي تركيزي بيكون في ال grammar اللي
بيوصف ال syntax بعد ما بحط هذا ال grammar بسير
أفكر عاد عند كل production إيش ال role المناسب
للحصول على التحويلة المطلوبة تمام؟ الآن إيش ال
grammar اللي بيوصف ال infix ازهجنا منه؟Expression,
expression زي ال term, expression, expression ناقص
term ال term, term في factor او على factor وال
factor expression او ID او number يعني ازيجناها ده
واضحيتلك اللي لازم نحط هو كاساس علشان تفكر ايش ال
rule اللي جباله بدي يكون وهنا انا بدي احاول بس
ارسم رسمة خفيفة بعدين هنشوف التفاصيل من الكتاب لكن
احنا بنحاول الفكرة اللي افهمها من باب التذكيركنا
نقول expression بتعطيني مثلا expression زائد ايش
term و بديش اعمل ال .. خلاص ال term اذا بدك مش
مشكلة ها term في factor
تمام؟ طبعا ممكن تكملي ال expression ناقص term وزي
ال term أو term و ال term ترفي factor أو على
factor أو factor إذا كنت تفهم ليها كاملة بس أنا
بدي أخد بس samples عشان نشوف كيف نفكر في التحويلة
المطلوبة تمام؟ و بعدين نشوف الجواب بشكل كامل طيب
بعد هيك بدنا نقول إن ال factor ممكن يكون
expression بين قسين أو number
أو ID ليش أنا سمحت ال number و ال ID؟ لأنه هي
كطالب اليوم في السؤال أن ال infix قد تحتمل أن يكون
A ناقص 4 أو زاد 4 ناقص C طالما يسمح بوجود ال
identifiers في ال infix أنا لازم أعدل و أطور على
ال grammar اللي عندي لو لا يسمح لا يسمح لكن يسمح
أنا في السؤال و التاني أنا أضفتهمطيب، الآن تعالوا
نفكر إيش ال rule اللي أنا بدأ أحطه جبال كل واحدة
فيهم يعني مثلا، لما ال factor بيعطيني number لما
ال factor بيعطيني مثلا رقم أربعة إيش المطلوب منك
تسوي؟ في الحالة هذه، في التحويل، إيش نعمل في
التحويل؟ هتقولي بدنا نعمل leave اللي هو number
أربعة، مش هيك؟ مش أنا في النهايةعشان اعمل الـ
syntax tree اللى اتكلمنا عنها مش يا اما بتعمل
leave يا اما بتعمل node ال node اللى جوا فيها ال
operator فيها طرف يمين وطرف شمال و ال leave مافيش
فيها اشي بس فيها الرقم number و قيمته او ID و
سيمته مش هيك؟ هى باختصار طبعا انا قولتلك قبل هيك
إذا فيه task بدك تعمليها في التحويل ما تلخمي حالك
افترض فيه function معينة بتقوم بالمهام اللي بدك
ايها و بعدين على جانب بتقول ال function فلانية
بتقوم بواحد اتنين تلاتة اربعة و انا قدرت اتعمليها
implementation okay ماقدرتي بلاش لكن احنا بنسهر
الموضوع خالصالان القصة باختصار، لما ال factor
بيعطيني أربعة، إيش المطلوب أسوي؟ المطلوب أسوي
leave تمام، اللي هي number أربعة، طب كيف بتسويها؟
خلاص، اعتبر في function جاهزة انت ورايا دماغك، قول
في function اسمها create leave، make leave تمام،
وحطيلها للبرامج التسليطية وخلاصنا، وعالها مش هشرح
إيش بتسوي ال functionوالله إن كدرتي كمان تكتبيها
بعد هيك بشكل كامل أنتي اتخلصت السؤال من كل
اتجاهاته لكن أنا بقول دايما ال problem تبعتك
جسميها ل sub problems واحدة واحدة خلصيهم بالدور
احنا بنقبل بال function و description عليها و
خلصنايعني لو ماعملتيها بجابة بـC مش مشكلة مقبول
خلاص؟ إذا نرجع لسؤالنا الآن لما ال factor بيعطيني
أربعة أو number إيش المطلوب نسويه في الحالة هاي؟
بدنا نقوله make leave أو new leave طب ال leave هذا
شو هو؟ إيش أساس ال leave؟ ID إذا كان ID فاصلة A
مثلا أوnumber فاصلة أربعة بس هيكون ال leave لأن ال
leave بتكون من إيش يا بلدته في الرسمة لما رسمنا
هاي مش قولنا زائد a أربعة ناقص c فانت ال leaves
عبارة عن إيش عندك ال leaves في الآخر يا ID و بتقول
ال extreme تبعه يا number و بتقول ال value تبعته
هاي ال leaves اللي عندي صح ولا لأ طيب إذا واضحة
الآن لما ال factor بيعطيني number هتقوللي خلاص
سهلة make leave number أربعةلما ال factor بيعطيني
ID هتقوللي سهلا اعمل make leave ID فاصلة ال
extreme تبع هذا ال ID اللي بدكيه طيب لو ماعطانيش
factor لو عطاني مثلا هادي يا بنات ال term term فيه
factor ايش نساوي في الحالة هادية؟ هتقولي لازم اعمل
create ل node ال node فيها الضربوفيها الشق الشمال
اللي بدي أشير عليه وفيها الشق اليمين اللي بدي أشير
عليه صح ولا لأ؟ إيش الشق الشمال اللي بدي أشير
عليه؟ اللي هتطلع من term مش ال term هتطلع ليه في
الأكل مثلا شجرةوال factor هذه مثلا تطلعلي شجرة أنا
لما بشوف هذه الصيغة بقول بالزمني node تلت أجزاء
الجزء الأول هي ضرب الجزء التاني الجهة اللي بتأشر
عليها الشمال هيا شايفة كيف؟ و الجهة اللي بتأشر
عليها اليمين بغض النظر إيش تمثل الشمال، لإن الشمال
ممكن تكون شجرة كاملة زي هذه، طلعي في النقص اللي
فوق هذهشايف الطرف الشمال إيش هو؟ شجرة كاملة فانت
تطلع في كل intro node في كل operator بتلاقيها
بتأشر عشمال على إشي وعلى اليمين على إشي وبتتحدد ال
operator مش هيك ال node ال intro node بينما ال
leave لأ ال leave لأ ال leave يا ID ورقمه قيمته يا
number وقيمته خلصنا يعني أنا مش محتاج أعمل في ال
grammar تبعي في ال rules إلا make nodeو make leave
او new load و new leave صح ولا لأ؟ فتكون تبقى على
القصة هي طيب الآن في شغل تاني مهمة انا لما قلتله
ال factor اعطاني أربعة ايش قلنا هنسوي؟ قلتلي هنعمل
leave صح؟ و تقولي number صح؟ و قيمته أربعة هذا
خليه في الهواء ولا حطلهإيش الإسم؟ هو factor dot
val مثلا بقوله factor dot val أو factor dot note
أو factor dot leave اذا مابدك تسميه اللي بدك تسميه
إياه أما لازم هذا ال leave ليش يكون لها اسم؟ ليش
يكون لها اسم؟ عشان لو كمان شوية واحد بده يقشر
عليها أسويه بالاسم هذا شوفتي كيف؟ عشان يصير يقشر
عليها واضحة؟ هاي الأركان تبع الشجرة تبعتي اللي بدي
أعملها طيب تعالوا الآن نشوف ال grammar ونتكلم فيه
نشوف بشكل أوضح تمام؟
تعالوا نشوف شوفوا
طبعا هانا اعمل المثال مقتصر على الزائد والناقص لكن
انت ممكن بنفس القلية اتكبري للضرب القسمة اتطلع من
الآخرلما الـ T أعطت number إيش قال بدنا؟ بدنا نعمل
function أو class whatever زي ما بدك new leave هذا
ال leave عبارة عن إيش؟ ال object مثلا ال number و
هنا إيش نحط؟ ال value تبعته أربعة، خمسة، ستة على
حسب فأنا إيش عملت في المنطقة هذه؟ أنا عملت leave
فيها number رقم أربعة وإيش سويت كمان؟ وعطيتها اسم
سميها T.node ساميه whatever خلاص المهم تحطي لها
اسم خلاص إذا بمجرد ما هي ال production تكون موجودة
حيكون أقبلها طلع object أو طلع leave فيها ال node
اللي هي number 4 مثلا طيب لو ال T أعطت ID إيش
بيصير؟نفس الفكرة بدي أقوله بدي أعمل leave المرة
هذه أركانها ID فاصلة القيمة تحت هذا ال ID A,B,C,D
whatever تمام؟ و هذا ال leave اللي أنا عملته بدي
ساوي قيمته مين؟ مين بدي أشير عليه؟ ال T لأن ال T
طلعته يعني ال T بدي تكون بتأشر على هذه ال leave
باختصار ف T dot note بتساوي هذه القيمة اللي أنا
طلعتها طيب لما ال T بنات مثلا ال T أعطتE والـ E
أعطت شجرة معينة أنا ركزيلي على هذه .. عفوا هنا إيش
أنا شغالين .. اه ال T أعطت ال E هذهماذا سنفعل في
الحالة هذه؟ أكيد ستقولي الـ pointer تاع الـ T بدي
أشير على الشجرة اللي طلعت تحت الـ E صح أو لا، ليس
هذه الـ E بتتنجلب و تصبح شجرة في النهاية و تصبح
الـ E dot node تأشر عليها طب لما الـ T بتعطيني الـ
E هذي، ماذا سنفعل؟ ليس هناك creation لـ node ولا
leave لكن بس هخلي ال node ال value هذه تأشر على
مين؟ على المكان تاع هذا عشان ذلك إيش اختصر و قال
الـ T dot nodeتساوي الـ E.node لأن الـ E هذا
هتتفرق على الـ syntax tree كمان شوية فلما أقول الـ
T بتساوي E يعني خلاص هذا الـ T.node هتأشر على نفس
الـ E اللي كان تأشر عليها فكيف بأعمل الحركة هذه؟ T
.node تساوي E.node يعني هذا هو نفسه هذا لكن لحظة
هنا ماعمل creation لـ node physical فعلية لاعمل
leave ولاعمل operator لأن بس اللي بعمل leave ال
operator الoperandsلكن لما يقولي E تساوي T و الله
T تساوي E أنا ماعمل إشي أنا مسواء إن هذه ال node
اللي موجودة عندي صار فلان زيها صار فلان يأشر عليها
سواء E بتساوي T أو سواء T تساوي E نفس الفكرة فهدول
التنتين شايفين كيف قال لي خلاص ال value بتاعتها
تساوي ال value بتاعتها باختصار طيب تعالي تطلعي في
الأولى مثلا لما ال E بتعطيني E زائد T إيش في حالة
نسوي A في operator الآنفلازم أعمل في الحالة هذه
إيش؟ Node طب من إيش بتتكون ال node؟ هي اللي أنا
عملتها ال internal node من إيش تتكون؟ بتتكون من ال
operator النقص أو الزائد هنا في حالتي زائد زائد طب
خلصنا هيك ال node ولا لأ؟ لسه هذه ال internal node
فيها طرف شمال وطرف يمين على مين بتأشر من ناحية
الشمال؟ على مين بتأشر من ناحية اليمين؟ عشان هيك
إيش بقوله أنا؟ بقوله بتأشر من ناحية الشمال على
الشجرة اللي بتطلع من وين؟ من ال E1وبتقش من ناحية
اليمين على الشجرة بتطلع من وين؟ من الـ T مش .. مش
.. مش هذه طلعت شجرة ال E و هذه ال T طلعت شجرة الآن
أجت ال E هذه اللي هي عبارة عن زائد قال لي خلاص هذه
بنعمل node اسمها زائد و بتقشر على هذا الطرف و
بتقشر على هذا الطرف هاخد مثال أنا هوركي مثال كامل
لنفس ال infix اللي فوق كيف تطلع ال tree بس أنا
جاعة بحاول أشرحلك كيف عمل ال semantic rule اللي
بتطلع ال syntax ال treeواضحة؟ طب لو عمل ناقص يعني
لو قال الـ E بتعطيني E minus T إيه نسوي في الحالة
هذه؟ بدنا نقول في Enter node ناقص بتأشر على الـ E
هذه و بتأشر على الـ T هذه و هذه كلها على بعض لها
اسم شايف ال E dot node هذه عبارة عن إيش؟ اسم ال
node الكامل لما انت عملت ال node هذه مش إلها اسم؟
مين اسمها؟E dot note أو E dot note طيب خلّيني أعمل
مثال عليه عشان تتطهر الصورة أكتر للي لسه مش
واضحاله خلّيني أمسح هذا الكلام و نعمل مثال و نشوف
و المثال ده نشتري عليه A زائد أربعة ناقص C تمام؟
بدكم مثال الكتاب مثال كتاب ماينس أربعة خلاص زي ما
بدكمأي مثال بيمشي الحال بس خلينا نشتغل زي مثال
الكتاب اللي هو a-4 زائد c طيب الآن عشان نقدر نعمل
التحويل إيش بدك تسوي في الأول بدك تعمل ال parsing
tree مش هيك اتفاجنا و بعدين بتحلي ال attributes
عليها يعني ال annotated parsing tree بتطلع معاكي
الاشي التحويل المطلوب مش هيك يقولنا نشتغلكيف كنت
تتعامل دايما مع الـ syntax derivative definition؟
هتعمل الـ parsing tree وتحلي عليها ال attributes
وتظهر النتيجة التحويل المطلوبة وهذا ما كنت تفعله
في الأول الآن ماهو الـ parsing tree لـ a minus
four زائد c؟ هتظهر هنا هتقول اللي باختصار الـ E مش
هيك عبارة عن إيش؟ E زائد T والـ E هيminus T و E هي
T و T هي ID و T هي NUM اللي هو أربعة وهذه A
ID اللي هي C الان عملنا ال parsing tree إيش هنسوي
الآن بدنا نحل ال attributes عليها صح ولا لا طبعا
كيف أحل ال attributes لو إجيتي تتطلعي هتلاقي دائما
ال parent بعتمد على أبناء ال parent بعتمد على
أبناء ال parent بعتمد على أبناء إذا واضح أن كلهم
synthesized واضح أن هذا as attributed grammar يعني
الخلاصة bottom up بحلها deep traversal بحلهاأه
بحلوة بسهولة تعالوا نشتغل عادي طالع تطلعي لما ال T
بتعطيني ID ايش بيقولي ال rule بيقولي اعمل على طول
leaf مال هال leaf؟ ايش بتتكون ال leaf؟ بتتكون من
ID قيمته ايه؟ مين اسمه؟ T dot nodeاسم الـ leave
هاي صح؟ لأن هو هيه قال لما الـ T أعطت ID مش أنت
عملت leave لل ID شو اسمها هذه؟ T dot node هي يعني
المسئول عن الـ leave هذا الـ T عشان هيك عملتله
value وسميته T dot node أشر على ال ID اللي أنا
عملتها أو ال leave اللي أنا عملتها طبعا الشاطرين
هيقولوا نفس الفكرة لهدول هيعمل dot nodeوهيعمل هنا
leave number team to أربع و سير هذا إيش بيأشر عليه
و نعمل هنا إيش كمان IDالـ c و الـ t dot node دي
مالها برضه تأشر عليه على السريع خلصتهم bottom up
بتاع تبقى بنشتغل تمام طيب الآن تعالى نشوف طب لما
ال E بتعطيني T إيش بيصير هتقوللي خلاص هاي طالع
القانون اللي أنا حاطته قبل شوية يقوللي خلاص نفس ال
value تبعته هتساوي ال value بتاعت ال T يعني
هتقوللي بالعربي dot node هنا خلاص أشر على طول على
القيمة اللي هناصح أو لا؟ أنا كنت أقول لو هذه خمسة
و E dot naught سوى خمسة خلاص على طول تاخدوا القيمة
مباشرة تبعدها مش بيضلنا نجلهم في بعض صح أو لا؟ لأ
هذه نفس الفكرة هذه قيمتها هاي و بيقولي هناك E dot
naught سوى E dot naught يعني بالآخر هاي بتصير تأشر
على هاي يعني هذه هي نفس قيمة هاي يالو افترضت أن
هذا object يعني هذا هي قيمة ال object مثلافرطه
مؤشر هذا قيمة المؤشر حسب احنا ايش بنفرض في الشغل
تبعنا طيب الان تعالى نكمل بنفس القالية لما ال E
بتعطيني E minus T تعالى اتطلع ايش بيقوللي لما ال E
بتعطيني E minus T ايش بيقوللي اول حاجة بيقوللي ايش
اعمل nodeهذه E بتعطيني بتعمل node تعمل أيه هو ما
بدك ان شاء الله في آخر الدنيا المهم ما بدك تعمله
المهم الأسلاك تبعيتها ورايها التواصلات بتاعتها
ورايها أنا بتعملها هنا جنب هذه لأنها إلها إيش
اسمها؟ minus صح؟ مين الطرف؟ هي شايفة؟ E بتعطيني ال
E طبعا الإبن ماقص ال T الإبن التاني الآن إيش
بتتكلم؟ بقول قيمة الأبو يعني مين؟ يعني هذاإيش
هتساوي؟ جال بدنا نعمل note اسمها ناقص الطرف
الشمالي بتأشر عليه مين هوالـ E1 هذا يعني هذا الـ
E1 ايش قيمته؟ هذا بيصير تقشر على الطرف الشمالي
يعني هذه معناها أن هذا الطرف هيقشر على هذه، صح؟
يعني هذه هتاخدها هيكها باختصار لأنه إيش بيقوللي؟
بيقوللي الـ E dot node اللي هي تقشع E dot node
القبل، صح؟ يعني إيش هذه قيمتها؟ هيها، هيها يعني
بالعربي هذه هتصير هيها قيمتها، صح ولا؟ طيب الجزء
هذا بيقشر على مين؟ قال ليه؟الـ T.Note قيمته تساوي
الـ T.Note اللي هي الـ T.Note تاعتهادي اللي هي الـ
T.Note تاعتهادي اللي هي وين؟ اللي هي هذه تابوا قبل
شوية مش هيها؟ يعني هذا هيأشرها شوفتي كده؟ يعني صار
عندي الأن Note leave، leave تعالي للأخيرة لما الـ
E بتعطيني E زائد term إيش بقوللي؟ بقوللي برضه نفس
الفكرة بدي أعمل إيش؟Note لزائد هذا هيأشر على مين؟
على الإبن هذا صح؟ اللي هي هايها وهذا هيأشر على
الإبن هذا اللي هي هاي الان إيش اللي أنا رسمته
بالأحمر هنا باختصار؟ اللي رسمته زائدبأشهر على C
وعلى ناقص والناقص بأشهر على A وبأشهر على 4 شايف
الرسم هاي؟ هي اللي أنا عملتها الـ syntax tree هاي
طلع مش هذه ال syntax؟ النقطة دي عبارة عن إيش؟
عبارة عن تلاتة جزاء الزائد والطرف الشمال والطرف
اليمين هاي الزائد والطرف الشمال والطرف اليمين طيب
إيش الطرف الشمال؟ ناقصبالظبط A4 شوفتي كيف ..
الخلاصة أنه أنا حصلت على syntax tree من ال grammar
اللي موجود عندى ببساطة و ال idea مش صعبة ال idea
الفكرة سهلة أنه ال leave بدي أعمله لما بكون عندى
ID أو number في الآخر و ال internal note بدي أعمله
لما بكون في عندي operator زاد أو ناقص لأن هي طبيعة
ال syntax ال syntax tree عبارة عن إش يا بناتعبارة
عن nodes و leaves ال leaves يكون فيها الأرقام و ال
identifiers و ال internal nodes يكون فيها ال
operators واضحة فهذه باختصار القصة تبعتنا الآن
اللي مش فاهم ايش تسألني هذا ال grammar ال
conclusion هذا ال grammar او syntax directed
definition بيحول من infix ل syntax treeباتباع ال
rules اللي هناك اللي هي عبارة عن create لل note أو
create لل leave create لل leave متى؟ لما بكون عندي
number أو ID create لل note متى؟ لما بكون عندي
operator that's it هاي كل اللي قلناه الآن اللي
عنده سؤال يتفضل يقول السؤال اللي مش فاهم إشي يتفضل
يقول تمام؟ نكمل؟ طيب الآن عشان نكمل يا بنات
ال grammar هذا لو بدأ أعمل predictive parser هل هو
صالح لذلك ولا لأ و ليش؟ بقدر أعمل predictive
parser ليش؟
لأن في عندي left recursion هيك خليني أقول المصطلح
الصحيح مش ميه ده مكررة left recursion طيب أيش
الحل؟أغير الشكل، أحافظ على المضمون، أطبق قوانين
left recursion، مظبوط؟ طيب، هل قوانين left
recursion السابقة اللي أنا أتعلمتها، بقدر
أستخدمها؟ مش أنا أتعلمت أشتري left recursion قبل
هيك و أخدت قوانين؟ بقدر أستخدمها و أشتغل؟
أنا مش عارف، أنا بسأل، أنا بدي جاوب، أنا بدي منكوا
جواب، يقولوا لي أه أو لأكلكوا قلتوا اه مع انه انا
جاوبتوا المحاضرة اللى فاتت نفس السؤال و قلت لأ
معناه انتوا نايمين و مابتدرسوشأنا سألت السؤال و
جابت المحاضرة اللي فاتت قلت لكوا لأ بظبطش اليوم
ولا معاكم خبر في المحاضرة السابقة و بتقولوا أه
بنفع احنا قلنا بنفع بشرط مايكونش مقترن مع rules
بيصير بنفع بسبب وجود ال rules المرة اللي فاتت قلنا
بظبطش أستخدم القوانين السابقة ليش؟ لأنه مش مديني
كيف أتعامل مع ال rules طب شو الحل؟ الحل قلنا في
آخر chapter 5هناخد قوانين جديدة للـ Left Recursion
توريني كيف تتعامل مع الشقين الشق هذا و الشق هذا
عشان أقدر أستخدمهم لكن مش اليوم هناخد القوانين هذه
المرة الجاية واضحة؟ طيب نتكلم في الآخر أنت شكلك مش
هتهدأ اللي جيبه مع الساعة ستة على الجامعة طيب طيب
خلونا الآن بس نكمل عشان نخلص و نتكلم براحتنا في
الآخرطيب هذا مجرد المثال اللي احنا حلناه قبل شوية
نفس المثال اللي انا حلته بس قاعد بوريكي في النهاية
ال syntax tree اللي طلعت طيب الآن ايش ال grammar
هذا؟ ايش رأيكوا في ال grammar هذا؟ شو عبارة عن
ايش؟ ايوة هذا شيلنا منه شيلنا منه ال left
recursion ممتاز وطبقنا القوانين اللي مااخدناهاش
اللي قولنا هناخدها بعدين طبقنا القوانين وطلعليال
grammar شكلا جديد لكن مضمونا واحد ايش المضمون تبعه
من infix ل syntax tree لا تنسيش القصة هاي طيب الان
هذا ال grammar ممكن اسأل عليه تلت أسئلة مختلفة
السؤال الأول ممكن اقولك اعمليلي parsing tree ل a-4
زائد c هذا السؤالبس مش هنعمله الآن عملناها قبلك في
أمثلة سابقة السؤال التالت ممكن أسألك عنه أقولك
اعمليلي annotated parsing tree زي ما عملناه
بالأحمر و لازم تطلع في الحالة هذه إيش حتى على
الجديد هذا لازم يطلع اللي هو syntax tree السؤال
التالت برضه اللي جاوبناه المرة اللي فاتت و اللي
الآن برضه الكتاب سألنا عنه و هنجاوبه اعملي
dependency graph خدناه المرة اللي فاتتتمام متى انا
بحتاج ال dependency graph؟ يعني هل هذا السؤال انا
بحاجة ال dependency graph فيه ولا لا؟ ما رأيك في
هذا السؤال هل انا بحاجة ال dependency graph ولا
مافيش داعي؟ ايوة
طالما في inheritance معناه انا بحاجة ال dependency
graph انا كيف ممكن احكم؟ عشان احكم بشوف testing
لكل ال attributes اللي عنديإذا راجيتهم كلهم من نوع
Synthesized يعني S Attributed خلاص ماديش
Dependency لأن الـ Bottom Up بحلها الـ Depth
Traversal بحلها الـ Issue Automatic بحلها لكن إن
راجيت لأ راجيت فيه Attribute مرة بعتمد على الأخ و
مرة بعتمد على الأب و مرة مش عارف بعتمد على مين مش
عارف أحلها إلا إذا عملت قبلها Dependency Graph
يعني مين أزور في الأول و مين أحل في الأول عشان
أقدر أحلها و عشان أقدر أحدد خدي نظرة عامة على ال
Attributes تعالى أوريكي كيف مثلاالأن هو بتكلم عن
attribute تبع مين لأبوه لإن هي الإيهانةتعتمد على
الـ E bar note أو الـ Synth يعني الأب تعتمد على
الأبن هذا مافيش مشاكل هذا الـ Synthesize انتشار
اللي تحتها بتكلم عن E bar value لها يعني بتكلم عن
هذه وتساوي ال value بتاعة ال T اللي معاه أخوه إذا
هذا inherited طالما شوفت inherited خلاص بريح دماغي
بقول بيلزمني dependency graph حتى أحل طب واحدة
بتقول أنا لو ماعملتش ال dependency graphورسمت الـ
parsing tree بقدر أحل ولا بقدر أشحل؟ طبعا بتقدر،
بس هتظل تعيدي و تزيدي ألف مرة في اللي الرسمة
تبعتك، ايه تطلعها، اه لازم أعرفها دي في الأول،
بعدين by trial and error تروح تحليها دي، اللي
جديها بتعتمد على حاجة تانية، و تظلي رايحة جاية في
الرسمة طالعة نازلة أكتر من مرة عبال ما تحليها،
بتحليها في النهايةلكن كل مرة بدك تشوفي وين لكن ال
dependency برايحك خلاص ال dependency بيقولك روحي
هن هن هن هن هن هن هن هن هن هن هن هن هن هن هن هن هن
هن هن هن هن هن هن هن هن هن
هن
هي بنسويه الآن، هيك الكتاب شغال طبعا الآن ليش همسح
الرسمة؟ أمسح اللي بالأحمر بس؟ واشتر على هاي؟ ولا
أمسحها كلها؟ اللي بس اللي بالأحمر؟ ليش؟ طب ما نخلي
الأسود؟ أيوة، ال grammar اختلف يعني، أنا على طول
إيش دي أسوي أنا؟ أيوة، برافو عليك شاطرين صحصهم، ما
شاء الله عليكم صحصين على الآخر
بالمرة اه؟ بالعكس هي أساس ال compiler هان و
المفروض اللي أخدته المشروع عشان تعرفوا ليش أن هذه
أساس ال compiler و الله أن جد هي لو أخدت المشروع
كان عرفت بالظبط أن loop ال compiler هو هان عارفين
ليش هذا loop ال compiler؟ أنتوا مش عارفين، أنا بدأ
أجابها السؤال، أنا بدأ أجابها المهم هذا loop ال
compiler لأنه قاعد يعلمك الآن كيف أحول من صورة إلى
صورة بالظبطهذا اللي انت دايما هتسويه في ال
compiler ال compiler عبارة عن إيش؟ عشان تكون في
الصورة تحويل كامل من شكل إلى شكل كيف بدو تم تحويل
ال compiler من شكل إلى شكل؟ من خلال ال syntax
directed definition بس لكن طبعا هيكون الكلام
الموصوف هان شو هو؟ كل تفاصيل ال language هان هو
مركز على مين بس في ال language؟ع ال infix تنسيش أن
ال infix مقطع من ال language ال language مش بس
while ال language مش بس do ال language مش بس
function ال language فيها operators فيها infix
فيها relations و بضل ده فهنا المثال صغير أخد حاجة
من ال language اللي هي ال infix و قعد يعلمني كيف
هذا ال infix أحوله مثلا لل treeو قدام هيمسكوا كمان
لو كان معناه وجد في شباتر 6 و 7 كان هعلمني كيف هذا
ال prefix أحوله ل tree address mode شفتي كيف؟ ليش؟
لأنه و كان و إذا حورته ل tree address mode كيف بعد
هيك أعيد نفس الشغل و أحول من ال tree address mode
لل language تبعتي اللي هي ال low machine فدائما
التحويل هتجي بياخد نفس ال structure شفت انت كيف؟
لكن أنا بديكي أمثلة بسيطة لسهالمشروع لم يكن
المفروض المشروع المشروع كان الـ infix مع جمال
while مع جمال do بلغة معينة تعمليلها syntax
directed definition يطلع الإشي بلغة تانية فالحمد
لله الله عفاك و بس أنا ندمان أنه الله عفاك فيها
يعني يالا لعله خير طيب لعله خير لو سألتيني السؤال
الأسبوع اللي فات كان ماشيلتيش المشروعأيوة سألتني
متأخر طيب على كل أحوان لأ لما هو لازم أنتوا في
النهاية ال compiler أحنا بنشرحه ليش عشان تقدر
تتخيليه واقع مش أنه تخيلي إيش قاعد نشرحه و أنت مش
فاهمه وين ده مكانه في ال compiler هذي مشكلة يعني
كل الدروس هذي ل direct يعني relation ل ال compiler
فإذا ماكنتش شايف هذه المشكلة معناه فيه خلل فأنا
بتحمل جزء أنه ما خلت المشروع طبعا طيب على كل أحوان
الآية الخلانة نتابع نتابع بدنا نعمل اللي هوA ناقص
أربعة زائد C تمام فبنعملها parsing tree في الأول و
بعدين بنحل عليها ال dependency زي ما عملنا المرة
اللي فاتت الان كيف بنشتغل أكيد هتقوليلي E مظبوط
ايش هتعطي ال term و ال E bar ال term هذا شو يكون I
D على طول خلاصالان ال E bar يجب أن تكون ناقص T E
bar ال E bar يجب أن تكون زائد تير E bar الان خلصنا
ال E bar الأخير يجب أن تكون إبسلون و ال term هذا
يجب أن تكون ID ولا number و ال T هذا numberوخلص
ودي هذه خلصت الان بالأسود ايش رسمنا على اللوح ال
بارسنج تري ل A-4ZC الان بدنا نشتغل dependency
وقلنا المرة اللي فاتت عشان تشتغل ال dependency بدك
تشوف كل واحدة ايش عاجبالها attributes و تحطيهم ك
notes و تشوف مين بعتمد على مين و ترسم الأسهم تبعتك
و بعدين بيجي الترقيم الكتاب بيختصر و بيعمل الترقيم
على طول من الأول خلاص إحنا بدنا نشتغل بالترتيب
عشان هيك لو بدي أخد كمثال ال T بيحطيني ID إيش هنا
فيه attribute مظبوط اسمه node هي attribute اسمه
node وفيه attribute أنا عملته اللي هو ال leaf صح؟
اللي هو بيدمثله .. خلاص بيدمثله بهذا اللي بعتمد
على ال ID هذا بعتمد على ال ID، بظبط؟ الآن مين
بيتمد على مين هنا؟ انه انا لازم اعمل creation لهذا
leave عشان اقدر اعرف قيمة ال node، باختصار، اذا
انا مثلت ال object اللي عندي ب nodeومثلت ال
attribute بتاعها ده برضه ب node تانية وعملت السهم
مين بيتمد على مين خلصنا هذه إذا ال T أعطت ID طبعا
نفس الفكرة لما ال T بتعطي number هتقول نفس الفكرة
هتقوللي هذه عبارة عن نقطة زي هيكة وهذه عبارة عن
اسمها node وسهم منها لهان هي dependency وهتقوللي
نفس الفكرة ال T اللي هنا اللي هي nodeمصبوط مع ال
object اللي أنا عملته هنا ال identifier لحظة أنا
ليش ما رسمتش ال leave هان ولا رسمت ال number هان
لأن أنا مش مطلوب مني أن notated مش مطلوب مني أحل
لو طالب مني أحل بيطلعوا معايا مرسومين لازم أرسمهم
أنا مطلوب dependency وقلنا المرة اللي فات
dependency فقط ايش ال attributesومين بعتمد علي مين
فقط هذه الـ Dependency مش طالب مني أحل النتيجة ففي
فرق بين الـ annotated وفي فرق بين الـ dependency
الـ dependency بتيجي أول وبعدين بيجي ال annotated
يعني قاعدين نكمل عليها وبعدين و نرسم كمان طيب،
خلّيني نكمل الأن تعالوا نتطلع لما الـ E بتعطيني TE
bar وينها؟ أول واحدة، صح؟ أول إشيش بقولك، بقولك
هذا الـ App in of value اسمها Noteوهذا الأبن له
value اسمها sin خلّيني أضعهم، أول شيء هذا له value
اسمها null وهذا الأبن له value اسمها sin ومن يتبد
على من؟ هيك السهل يعني لازم أعرف هذا عشان أعرف
هذا، مش هيك قلنا المرة اللي فاتت، هيك اللي فوق
لازم يعرف هيك لسه ما خلصناش فيه كمانattributes ال
E bar هذه نفسها كمان لها attribute تاني اسمه
inherited وال T هي ال attribute اسمه node
هينيراثمو ال T مرسوم الآن مين بتبدأ على مين؟ هي
عشان تتحسب الدعرف هي عشان هيك بنعمل السهم ايش؟ هيك
شوفتي كيف؟ على طول لما أداني الـ E بتعطيني الـ T E
bar حطيت ال attributes اللي اتكلم عنهم ووصلت
الأسهم بناتهم طيب، لأن نكمل بنفس القالية لما ال E
bar بتعطيني ناقص T E bar يعني هان أول إش إيش
بقولك؟ بقولك هذا الإبن إلها attribute اسمه
inherited، صح؟ تعالوا نشوف الإبن، وين الإبن؟ اللي
هو هذا، صح؟ إله اسم إيش؟inherited طيب هذا هو
الحاجة كمان ال object هذا اللي أنا بدي أعمله تمام؟
وين أنا وصلت؟ تمام الآن ال object هذا بعتمد على
مين؟ على ال E bar على الأبو، مظبوط؟ وعلى مين كمان؟
يعني عشان أحسب هاي لازم أكون عارف هاي و أكون عارف
هاي من الآخر مش هيك؟ أنا مش عشان أحسب هاي لازم
أكون عارف ال a bar inherited يعني مين هذا ال a bar
بالنسبة له؟ الأبو صح؟ و لازم أكون عارف مين؟ الأخو
يعني كيبنا مثلة بالأسهم يعني يا بنات لازم أكون
عارف هايو لازم أكون أعرف إيش؟ هاي مش هاي هيك بيقول
مش بيقول ال E inherited تساوي in you node اللي هي
ناقص ال T dot node و ال E dot node هدول مع بعض هاي
هم بيقولوا لأ طلعي طلعي هاي بدوا اتنين value عشان
يعرف تاعت القبل مين هم الاتنين ال value أول إشي ال
T وين هال T؟ هاي هالي جنبهالـ value تبعتها اللي
أنا رسمها و مين كمان ال inherited بتاعة مين؟ بتاعة
الأبو عشان هيك أنا قلتله هذه ال node عشان تلحسب
بدها ال T بتاعة الأخ و بدها ال inherited بتاعة
الأبو هاي هم رسمين فوصلت أسهم عشان عرفت هايشوفتي
كيف؟ الآن بنفس القالية كاملة، في إشي تاني، أه في
إشي تاني موجود معاهم، إيش بيقول؟ بيقول الإيبار
هذه، مظبوط؟ اللي هي إيبار من الأبو، يعني الأبو
هذا، وينه؟ هايو السن أنا برسمه، ماله؟ بساوي السن
بتاع الإبن نفسه، يعني هذا الإبن توا إله إيش كمان؟
إله سن في size طبعا، وبرسم إيش؟ هيك سهمشوفتي كيف؟
هدولة كلهم طلعتهم من وين لما ال E bar أعطتني minus
TE bar لجيت فيه معادلتين المعادلة الأولى كانت
تتكلم منه هذا و هذا عشان أعرف هذا و المعادلة
التانية بتقولي السن تاع الأب و بيساوي السن تاع
الأبن فعملتله attribute ووصلته هذا كان له مرسوم من
أول الآن تعالوا هنعيد نفس القصة تاني لما ال E
بيعطيني زائد TEإيش هنسوي؟ نفس الفكرة هتقوليلي هذه
إلها inherited عشان تنحسب بدها الـT الأخر و بدها
inherited الأب هيك بكون خلصت المعادلة الأولى
المعادلة التنش بتقولي بنفس القلية سن الإبن هذا
بيعطي
الأب لأن سن الأب بيساوي سن الإبن هذا لما أعطتني زي
الـT نفس اللي صار قبل شوية بالظبطتمام؟ طيب أخر
حالة لما ال E bar بتعطيني إبسلون إيش بيقول ببساطة؟
بيقول السن تاع الإبن هو نفسه .. هو نفسه مافيش ابن
و أب هنا السن تبعه بيساوي ال inherited تبعه يعني
بالعربي هذي إيش حامل سهم هيك؟ إن السن تبعه بيساوي
ال inherited تبعه فهذه بيعبّر على بالسهم هذا مش
السن أسنانه سن .. synthesizedو ال inherited .. ال
N H inherited
طيب وضحت طيب خلصنا هيك وضحت ال dependency هيك وإذا
كنتوا تشوفوها بشكل أرتب هيه طبعا لاحظوا يا بنات أن
ال dependency هنا في الكتاب إيش عمل؟ رقمهم يعني
إحنا بعد ما بنعمل ال notes مش بيقولنا بتيجي مرحلة
.. مرحلة الترقيم طبعا فبديك ترقميهم بشروط اللي
اتفاجن عليها المرة اللي فاتتمية لمية بقى الرقم
اللي فوق دايما العراق السهم أكبر من الرقم اللي
عليه السهم تمشي الأمور ان شاء الله تمام؟ هي رسمة
الكتاب وهي رسمتنا للتان في النهاية واحد طيب إيش
خلاص؟ في الأول .. هذا الدرس خلاص يالا هو الطلاب
ولا بيباركات ولا حاجة؟ ماشي في الأول في أسئلة هنا؟
مافيش أسئلة؟ break طبعا الآن في سؤال تانيفي سؤال
في نفس الموضوع تاني إيش السؤال بيقول السؤال بيقول
بدي أعرف type من نوع array كيف يعني؟ يعني لو كتبنا
مثلا Int X إيش نوع ال X هتقوليلي انتي؟ Integer
الآن في طريقة تعريف array في language معينة زي هيك
بكتب Int 2إيش يعني لما بكتب انت اتنين؟ إيش معناها؟
إنه أنا عملت بالظبط array من أنصرين من نوع integer
طيب ممكن أكتب زي هيك انت اتنين تلاتةهذه عبارة عن
إيش؟ عبارة عن array of array هي صح array two
dimensions لكن كيف بنعرفها؟ array of array كيف
يعني؟ يعني بقول عندي array من عنصرين كل عنصر فيها
array من تلاتة هي نفس المعنى array two dimensions
ممكن أكتب برضه هيك
واحد اتنين تلاتة هاي عبارة عن array كام dimension؟
تلاتة dimension array of array of array of integer
بس الأولى عنصر التانية عنصرين التالتة تلاتة عناصر
طيب كيف اوصفها؟ جالب تقدر توصفيها بطريقة كتابية
كالتالي ان هاي انا بوصفها زي هيك بقول array افتح
يقص اتنين فاصلةانتجار هيك أنا وصفت هاي ال array طب
بدأ أوصف هاي كيف أوصفها؟ قال هادي أوصفها array
افتح يقوس اتنين فاصلة array افتح يقوس تلاتة فاصلة
انتجار سكري سكري القوسطيب هذه ايش وصفها؟ array
افتح قوس واحد فاصلة array افتح كمان قوس اتنين
فاصلة افتح كمان قوس array افتح array كمان قوس
تلاتة فاصلة integer و sacricle الأقوس وهكذا قد ما
بدك تعمل هيك الوصف طيب الآن ايش السؤال؟ ماشي
افهمنا الصيغة و الوصفإيش السؤال؟ السؤال اعملي
syntax directed definition بيحول من هاي لهاي
للصيغة يعني بدي يكتبلي الصيغة تاعة اللي أنا كاتبه
يعني لو أنا كتبت ك code زي هيك إيش يطلعلي في ال
syntax directed definition يقوللي ال type تبعك هو
array في array في array حسب اللي أنا كتبتهيعني
اللي بده يطلعوا حسبة الـ type من زمان كنا نكتب
infix ونطلع الحسبة عند الـ root اليوم بدنا نكتب
type ونطلع الـ type النهائي عند الـ root بوضح أيش
اللي بدنا نسويه؟ type قلنا عشان نشتغل سؤال من هذا
أنه أول أشي بتفكر فيه شو هو ال grammarاللي بيطلعلي
القائمة هذه، مظبوط؟ واتوقع هذه بالنسبة إلكوا سهلة،
ليش؟ لأنه هتقوللي هي عبارة عن type ثم listمش هيك؟
واخدنا زمان كيف نعمل list ID فاصلة ID مش هيك ولا
لأ بس هنا بدل كلمة ID إيش هنعمل list من إيش؟ من
هذا ال block فتح ال ghost number تسكير ال ghost
هادي أكرر هاجات ما .. يعني أتبري هذه ID مش بتعرف
تعمل list في ID من زمان؟ الآن هي مش ID هي افتحي
ghost number تسكري ghost مابنقدرش نعمل منها هاجات
مابدنا؟بنقدر مش بدنا بنعرف نعمل list ولا لا تمام
إذا هيك هنفكر هنقول أنا في النهاية أن الشكل تبعي
هو عبارة عن إيش عبارة عن type أساسي ثم list و ال
list هي عبارة عن إيش افتح قص number that goes ال
list جد ما بدك بتقدر تحطي و في الآخر ال list بتكون
إيش epsilon خلينا نشوف كيف و بنتكلم تتطلعليش كتير
على ال attributes ركزي على
الجهة الشمال كبيرة
كثير احنا
عشان نحاول التصوير نجيب قد ما نقدر يعني طيب
ايه
هى هنظر خالص خلاص طيب المهم المهمتعالوا تطلعوا
معايا قال ال type هو عبارة عن إيش؟ هو عبارة عن
basic ثم list مش هيقول نفسي هذه list؟ هي طلع الشكل
عبارة عن إيش ال type الكلي؟ عبارة عن basic اللي هو
integer, float, double whatever ثم listاللي هي ال
C تمثل ال list اللي هنشوفها كمان شوية طيب تعالي
تطلع على ال basic، إيش ال basic؟ يا integer، يا
float، يا double، على حسب اللي معرفهم هنا، بظبط؟
طيب إيش ال list؟ طلع على ال list قالك بدي افتح جوس
و نام و سكر جوس و بعدين كمان مرة بدي منها فجد ما
بديك بتقدر تعملي افتح جوس، نام، سكر، C ال C بترجع
افتح جوس، سكر، جد ما بديك لما ما بديك خلاص بديك
تواقفي بيقولوا ال C هذي إيش؟epsilon طب انا ممكن
اعملها بشكل تاني احنا خدنا شكل تاني شوية مختلف في
ال list of identifier لو تتذكرى على كل حوال مش
خلاف المهم حتى الفكرة هنا مش صعبة انه انا قاعد
بقول ال C عبارة عن هاد ال number وراها C الان لو
بديك تشيلي ال C مش هتحطوا مكانها number C number C
number C جد ما بدك واحدة اتين تلات جد ما بدك اذا
واضح ان هذا ال syntax او هذا ال grammar بيوصف ايش
الـ syntax اللي اتكلمت عنه اللي هو عبارة عن type
ثم افتح القوس رقم ساكر القوس و جد ما بدك بتعمل من
هذا الكلام في حد عنده اعتراض او في حد مش فاهم كيف
هذا ال grammar بيوصف هذا الشكل بتاع ال type واضحة
أكمل ولا في أسئلة لأننا بنبني على الموضوع هذا إذا
إيش مش واضح يقول لي لأ مش واضحة اه بتسألي أكيد
واضح الأمورفي حد مستصعب؟ طيب، الآن تعالوا نفكر
شوية في ال rules هدول، تمام؟ بدي تفكر، بديش تحفظ،
بديش تاخد الاشي مسلم قدامك، بدي تفكر شوية، الآن
لما ال T بيعطيني B Cوالـ B عبارة عن انتجار ولا
float؟ مش هذا بدي يورث ال type تبعه لل C؟ ليش؟ مش
هذه array في array في array في array؟ for basic في
الآخر؟ for انتجار أو for float؟ صح ولا لأ؟ عشانك
المفروض أن هذا اللي بيعرف ال type تبعه عشان يقول
لل C خد فضل هيوا عندك لإن انت في آخر ال C هذه اللي
هي افتح ghost number ساكر ghost جد ما تعمليهم مش
هتعمل array في array في array .. إيش أخرها؟مش فيه
basic ممكن تكون اقرر في watt أو في انتجار فلازم ال
basic يودي قيمته لمين ل C يعني واضح ان ال basic
هذا لازم يكون في value صح؟ طب انا ال basic مش لازم
احسبه في الأول قبل ما هو ال D صح؟ لما ال B بيعطينا
انتجار ايش يكون ال basic في الحالة هذه؟ فعشان ايش
قال لي؟ قال لي شايفة؟ قال لي ال B دو ال type في
الحالة هذه إيش؟ انتجار طب لو ال B أعطاني float؟الـ
type تبع الـ B إفلوت فخلاص صارت الـ B الآن الـ
type تبع عماله معروف صح ولا لأ؟ طيب تعالوا نفكر
شوية الآن هذا الـ B معروف لما نقجت الـ C مش هذا
بدي ورث قيمته لهذا، مظبوط ولا لأ؟ فالمفروض الـ C
dot basic إيش يساوي الـ B dot T صح ولا لأ؟ طب هل
خلص الـ C dot basic وخلصنا ولا لأ؟ هنا بدك تميزي
الـ C شغلتينالـ C الـ type الأساسي، إيش الـ type
الأساسي؟ array if تحي جوز ال number فاصل ال basic،
مش هذا ال type اللي أنا بدي إياه في الآخر، إيش ال
type بتاع هذه؟ مش هي كل هذه؟مش هذه هي الـC لازم
يكون هذا الـtype بتاع الـC عشانك الـC فيها two
values فيها الـtype الكلي وفيها ال basic تبعه اللي
أخدوا من جاره عشان هي فيها كمتين شايفة كم؟ فيها CT
اللي بدأ تنحسب اللي هي ال array في array في array
حسب اللي موجود و ال basic طبعا ال basic أخد كمته
من وين؟من الـ B عشان كمان شوية يحط هانا في الآخر
طيب إيش بيقول هانا؟ إيش فاهمين إيش بيقول هانا؟
هانا بيقول مش في type أساسي للشجرة إيش ال type
الأساسي للشجرة؟ هو نفسه ال type الأساسي لل C اللي
هو هذه لما كتبنا هذه شايفاها؟ مش هذا كله هو ال
type الأساسي لكل جملة اللي هو نفسه ال type بتاع ال
C فعشان كشجال قال ال type بتاع الجملة كلها هو نفسه
ال type بتاع مين؟ ال C اللي بدي أحسبه الآن لسه ما
حسبتوش بدي أحسبه الآنطيب تعالى نشوف كيف بدى يحسب
لما الـ C بتعطينى number بين قوسين C قوليلي انسيلي
هذا شوية ايش ال type تبع ال C هذه مش ال type تبع
ال C هاي ال ray شك ال number هذا اتنين فاصلة ال C
one dot T لإن انا لسه مش عارف يمكن هذه خلصتو ممكن
هذه تعطيني إيش الـ Ray تاني صح ولا لأ ف ال type
تبع هذه باختصار هي عبارة عن ال Ray 2 فاصلة حسب ال
type تبعها إذا هذه أعطتني كمان شوية كمان جسين هصير
إيش هذه هتصير ال Ray و هكذا طب إذا ال C أعطت
إبسلون خلاص بحط ال basic على طول هنا صح ولا لأ
فعشان كمان تستغربي من القصة التالية أنه إيش بيقولي
بيقولي باختصار ال type تبع هذه هوarray قيمة ال
number اللي هان لكن هنا إيش حاط ال C اللي هو لسه
مش عارف إيش حاتجيب والله إن ال C جابت array بحط
array ال C جابت خلاص خلصت بحط ال basic صح ولا لأ ف
.. و بهيك هذه بتظل تمشي بدون مشاكل و هناخد مثال
عليها طيب إيش بدنا نعمل؟ طب شو ال basic بتاعها؟
إذا هذه array مش بدها basic؟ مين ال basic تبعها؟
مش basic ال up؟ عشان هيك إيش كمان سوا؟نجل إليها ال
basic يعني أنا الآن لما قلت C تساوي number C1 هذه
عبارة عن إيش ال ray فاصلة ال number فاصلة C1 خلاص
يطيها العافية طب ما ال C1 هتحتاج ممكن basic في
الآخر طب كيف تاخد ال .. من و مين بتاخد ال basic
تبعها؟ من الأبوا اللي جابوا من ال B مش هذا أخد ال
basic فالمفروض ال basic كمان يش يودي للإبن عشانك
إيش دايما بنقول كل إبنبياخد الأساسي تبعه من مين؟
من الأبو تبعه اللي هو كان integer أو float فكل ما
بيطلعله ابن بياخد ال basic منه عشان أخر واحد تحت
هو اللي بيحط ال basic بشكل صريح فكيف بيحطه وما
خدوش وضاع منه فعشان هيك الابو إيش بيسوي كل ما
بيكون فيه C يعني فتحة array معينة بيقولوا اتفضل هي
ال basic عندك من عندك هي اتفضل هي ال basic عندك هي
ال basic عندك أخر واحد تحت خلص بيحط ال basic اللي
أخده من الأباءخلّيني أخد مثال و أنضح الصورة بشكل
أكتر ناخد مثال و نجربه و بعدين نشوف الأسئلة تبعتكم
و نوقف ان شاء الله ناخد
المثال لانت اتنين تلاتة المطلوب اعملي annotated
parsing treeيعني لازم أشوف نتيجة التحويل تاعتها دي
إيش تطلعarray of array إذا أنا شغال صح مش هيك هذا
إيش تعويلة لازم تطلع إيش تجاوب الصح؟ إيش لازم
تتحول لو أنا شغال صح؟ array of array هذي لو أنا
شغال صح لازم يطلع array اتنين array تلاتة integer
إذا طلع الشيك معناه أنا غلطان مش هيك لازم تطلع هيك
النتيجة عشان أعمل annotated إيش هتسوي في الأول?
parsing لمين؟ لهذه مش هيك قلناها و بعدين بنحل
عليها إيش ال parsing تبع هذه؟ هتقول لي T ال basicو
ال C ال C عبارة عن ايش افتح قوس number ساكر القوس
C تانية ال C هت عبارة عن ايش افتح قوس number ساكر
القوس C تالتة و ال C الأخيرة Epsilon تعالوا الآن
نحاول نحل ال attributes تبعتنا طبعاطبعا الأصل أن
كنت أعمل dependency عشان أعرف أحل لأن فيها
inherited بس خلاص أنا اتعودت على inherited اللي
بياخد من هنا فهحل على طول بدون dependency طيب عشان
أحل تعالي تطلعي طبعا ال basic هذه ما خلصتاش خلصيها
هذه ال basic إيش هتكون ال basic is Int عشان نخلص
ال issue مظبوطة لأ تعالي نشتغل الآن لما ال basic
أعطاني ال Int إيش قال لي B dot T تساويانتجار خلاص
انتجار قيمة انتجار خلاص طيب لما ال T أعطاني بيه C
ايش بيقولي بيقولي D to T تاعتهاي تساوي ال C to T
تاعتهاي يعني إذا أنا عرفت ال C to T تاعتهاي
بعرفهاي
مش هيك؟ طيب هذه أول معلومة ان ال D to T تساوي ال C
to D لأن لازم أحسب هذه في الأول عشان أعرف هذه كمان
مش هنجي نحسبهاو إيش بيقوللي كمان الـ C dot basic
هذا الـ C dot T و الـ C dot basic إيش بيساوي؟
انتجر عشان ماضيعش القيمة التبعته الأساسية هيك خلص
من الـ T بتعطيني بـ C طبعا لسه ما حسبش الآن تعالي
كاملة لما الـ C بتعطيني الكلام هذا الـ C إيش
بيصير؟يعني لما بتحطيني هاد ايش بيصير؟ قالك الـ c
dot t بتاعة ال up يعني مين عن مين بيحكي؟ عن هذه
اللي انا لسه بتحسبها ايش تساوي؟ طلعي قاللي اكتب
تساوي هاي بدأ يعرف ليها تساوي array if تهيقص ال
number اللي هان اللي هو في حالتنا اتنين فاصلة
Tie بالإبن اللي أنا لسه مش عارفه، مين الـTie
بالإبن يا بنات؟ الـT و T هذي، صح؟ يعني لو أنت
عرفتي هاي، هتحطيها هان و هذي كلها هتحطيها هان، و
بنخلص، صح ولا لأ؟ طيب، الآن بدي أشوف هايلما الـ C
هذه أعطتنى هذا الكلام طبعا فى بس ملاحظة نكملها C
dot basic بتاع التهاي لإنه كاملى ماعملتاش هذه مش
تاوي أنا قولت ال num C1 حسابى توقف تهان كاملى فى
حاجة تانية ان ال basic بتاع الإبن يساوي ال basic
بتاع التهاي يعني ال basic بتاع التهاي مش يساوي
الانتجار عشان مايروحش منىخلاص انتجة طيب الآن عيدي
لما الـ C أعطتني number هذا الكلام هتقول نفس
الفكرة بيقوللي القانون array ثلاثة فاصلة اللي هي
مين ال C اللي تحت هذه dot T إذا أنا عرفتها بحطها
هنا و هذه كلها بحطها هنا و هذه كلها بتصير هنا مش
هيك؟ دهوا الحسابات؟ طيب الارش كمان بيقوللي و ال C
dot basic إيش بيساوي انتجةنظبوت؟ الآن إيش ضال عندي
آخر واحدة ال C صوت إبسلون، إيش بقوللي؟ ال C ضد T
هتساوي .. اللي هي انتجار إيش يعني هتعمل انت؟ هتحطي
هذه وين؟ هنا إيش بتصير هذه؟ انتجار و هذه كلها وين
هتحطيها؟ هنا إيش صارت؟ ال Ray اتنير ال Ray تلاتة
انتجار، هذه كلها بتنقليها هناإذن واضح إنه أنا حولت
من شكل ال .. ال syntax بتاع ال type لإيش حولته
للوصف تبعه لإيش هو هذا ال type هيك هو الطالب هنا
في المثال هذا تمام هيك؟ في أي سؤال؟
طبعا هذا أكيد إله علاقة كبيرة في ال compiler كمان
مرة لأنه أنا بتكلم على ال types دي ربالي أيوة لأ
.. لأ لأ هو لازم تعرف تتأكد أيوةعشان تجيب درجة
عالية تمام؟ ان شاء الله اقولكوا تجيبوا درجات عالية
فجزي هذا كله في لب ال compiler يصب في ال .. فبدأ
يحكي في ال types يعني لم يحكي في ال infix بدأ يحكي
في ال types تمام؟ طيب أي أسئلة الأمور واضحة يعطيكم
العافية