بسم الله الرحمن الرحيم اليوم إن شاء الله هنستكمل
آخر محاضرة معانا في الفصل اللي هي في chapter خمسة
section خمسة خمسة وطبعا لو احنا تطلعنا في section
خمسة خمسة هتلاقي فيه تقريبا خمسة subsections احنا
بس هناخد منهم هدول آخر اثنين subsections
اللي هم خمسة أظن.. خليني أشوف أسمائهم عشان
ماننسهمش طبعا خمسة أربعة خمسة اللي هناخدهم وخمسة
أربعة أربعة ونختم عندهم إن شاء الله رب العالمين
طيب اليوم في محاضرتنا إن شاء الله في عندنا ثلاث
جزئيات بدنا نهتم فيهم الجزئية الأولى عبارة عن
exercise أو عبارة عن سؤال استكمالي في موضوع الـSDD
وموضوع الـSDT تمام؟ احنا المرة اللي فاتت أخذنا مثال
كيف نعمل SDD لإيش؟ يحول من infix لـ syntax tree صح
ولا لأ؟ وقبلها كنا ماخدين كيف نحول من infix ل
postfix وقبلها كنا ماخدين كيف نعمل الحسبة عند ال
root وأخذنا كتير أسئلة في هذا الإطار اليوم قعدت
في exercise برضه نفس الفكرة بنحول من SDED بدنا
نعمل SDD يحول من شكل للآخر بس مختلف عن ال infix
اللي هو بتكلم تحديدًا في ال while خليني بس أنا
أفتح على ال slide أو على السؤال نتكلم عنه دعني
أشوف أين راحت تمام
هيو طيب
هيو السؤال إيش بيقول؟ السؤال بيقول بدنا نحول
من high level language لـ three address code يعني
المطلوب نعمل syntax directed definition بيحول من
هذه الصورة لشو؟ لـ three address code يعني ها
شايفين سؤالي اختلف نمطه عن الأسئلة اللي كنا ناخدها
قبل هيك أخذنا أكثر من نوع أكثر من نمط احنا المرة
اللي فاتت آشي types، آشي infix، آشي syntax tree
واليوم زي ما أنتي شايفها السؤال بيقولك حولي من ال
high level language لـ tree address code وطالما قال
حول معناه أنت كده إيش دي بتشتغل؟ بدك تعملي syntax
directed definition أو بدك تعملي translation
scheme صح ولا لأ؟ إيش أفرج الـ SDD عن الـ SDT؟ أن
والله بيكون ال rule جوا لجرامر، بس مش أكثر والله
نسينا هذا الكلام، مين بيكون فعال أكثر؟ ال
translation لأنه بيكون خلاص ال action جوا ل
grammar فعلى طول في مرحلة ال parsing بنفذ ال rules
وبيخلص بينما في الـSDD أنا لا بعمل لtree وبعد ما
أعمل لtree بيجي بحل ال rules عليها بناء على ال
bottom-up أو ال dependency graph زي ما أخذنا قبل
هيك السؤال بيقول ببساطة بدنا نحول من هذا
الشكل لطريقة three address code طبعا وبدنا نعمل SDD هيك طالب
السؤال SDD طبعا عشان إن أنا أقدر أعمل الـSDD أكيد
الكل فاهم إنه بيكون في عندي نصين نص خاص بال
grammar ونص خاص بال semantic rules النص الخاص بال
grammar إيش بده يسوي؟ بده يوصف ال syntax اللي أنا
بده أقوم بتحويله هنا مديني syntax لحاجة واحدة
لـ while تتوقعوا كم production بتعملي في ال grammar
هنا؟ واحدة ما فيش غيرها لل while يعني نفسها المكتوبة
بتقول ال S بتعطيني Y مظبوط ال C أسود عارف لو كان هو
بده يكمل وقال لك في لل four وفي لل F وفي وفي وفي
كان هيكمل ال S ممكن تكون على شكل while ال S ممكن
تكون على شكل four ال S ممكن تكون على شكل F ال S
ممكن تكون على شكل do while والآخر إيه؟ بس هو هنا
في سؤالي اقتصر على بس تحويل ال Y لـ Tree Address
Code عشانك أنا ال grammar طبيعي طلع سهل جدا ما فيش
فيه إشي شكل ال Y زي اللي ما احنا عارفين الأسس
بتعطيني ال Y لفتح ال condition سكر ال
ل statement هيك شكل ال Y طيب، الآن نجي للشقة
التانية، إيش الشقة التانية؟ عشان أنا أقدر أحوّل ل
tree address code لازم في الأول أكون فاهم كيف أكتب
ال tree address code بتاعتها ولا كيف أحول يعني
ارجع لمثال زمان التقليدي حول من infix ل postfix طب
إذا أنا مش فاهم ال postfix كيف أحط ال rules اللي
طلعوا؟ مستحيل شوفتي كيف؟ إذا لازم أنا أكون فاهم
الصورة اللي بدي أروح لها علشان أقدر أعمل لها rules و
إلا كيف بدي أروح لها وأنا مش عارفها شو هي؟ صح ولا
لأ؟ الآن سؤالي هذا شو بدي أحول ل tree address code
لل while إذا.. إذا أنا مش قادر ك human الآن أكتب
tree address code لهذا مش هقدر أحط ال rules يبقى
الآن النقطة اللي بدنا نفكر فيها كيف نعمل ال tree
address code لل while وبعد ما أعملها وأشوف كيف عن
ال tree address code بفكر عاد طب شو ال rules اللي
تطلع التحويلة طبعا ال tree address code احنا قلنا
قبل هيك هي شبيهة شوية بال assembly لكنها level
أعلى يعني هي level خلينا نقول بين ال high وبين ال
low يعني ليش سماها Tree Address Code؟ لأنه ممنوع
في ال instruction الواحد أو في التعليم الواحد تشوف
أكثر من Tree Addresses Maximum طب ليش أنا اعتبرتها
أعلى من ال assembly درجة؟ لأنه مسموح تستخدم فيها
الزائد مسموح تستخدم فيها الضرب كتير ومسموح تستخدم
فيها اليساوي بينما هذا الكلام كله مش موجود في ال
assembly فاتكلمنا عنه قبل هيك ال Tree Address Code
الآن عشان أعمل Tree Address Code لهذه لل function
S الكلام هذا الفاضي طيب عشان أنا أقدر أعمل code لل S
طبعا مين ال S يا بنات؟ اللي هي ال Y هذه كلها صح
الشاطرين إيش هيقولوا لي؟ هيقولوا لي المفروض نبدأ بسطور
لمين؟ لل C code ليش بدي C code؟ لأن أنا لازم أعرف
هذه ال C في النهاية true ولا false لأن إذا كانت
true هأعمل شيء معين هفوت على ال loop جوا إذا كانت
false وين هأروح؟ هأطلع من كل ال S هاي وأروح للي
وراها مش أنا قاعد بكتب في code ال S مش هذه تاعة ال
S؟ إذا الشرط ما تحققش، وين بدنا نكمل؟ مش هنكمل في
الكودة، هنطلع بعد ال S إيش في حاجة بعد ال
function S؟ إسلام، مبارك الله فيك إيش في حاجة بعد
ال function S؟ بدي يطلع عليها، صح ولا لا؟ لكن إذا
الشرط كان متحقق، إيش بدي يسوي؟ بدي يفوت في اللوب،
صح ولا لا؟ عشان هيك أنا بتوقع code ال S الكبير بدي
يبدأ بِشو؟ بدي يبدأ بِ code تعالى ال C طبعا إيش
يمثل code تعالى ال C؟ احنا لإن مش كاتبينه، مش
هنكتبه لأن ال C عبارة عن إيش يا بنات؟ ال C عبارة
عن Boolean expression إلها تعريفات إلها قصص إلها
code هو ريحني ما حطليش ال C عشان أقعد أفكر فيها و
أقول كيف ده هتتحول وإيش قصتها وإيش code ريحني
قال لي خلاص عبر عن ال code اللي بدي يطلع بِ C.code
خلصنا لإن هو مش مديني تعريف ال C عارف لو مديني
تعريف ال C كان أنا بضطر أفكر كيف أطلع لها code زي
ما أنا قاعد بأفكر code بتاع الأسل الآن عشانك أنا
هأعبر عن code ال C بحب كلمة C.code وإنّه اعتبر إن
كتب code بتاع ال C الآن في نهاية code ال C لازم
فيه two values أعرفهم هل ال C true ولا هل ال C
false ليش؟ لأن عند ال true وين بده أروح وعند ال
false وين بده أروح باختصار طبعا إذا كانت false
هتقول لي خلاص هنروح لِلإشي اللي بعد ال S كلها إيش
فيها؟ أنا هيروح يكمل فيها برّا ال tree address بتاعة
ال S هذه هيكمل تحت لو كانت false طيب لو كانت ال
true هتقول لي هيدخل على ال body تبع mean تاع ال S1،
code ال S1 عشان هيك إذا true بدي أفوت جوا هنا طيب
إيش بدي يكون هنا؟ هتقول لي بدي يكون code mean ال S1
عشان إيش بتعبّر عنه S1.code زي ما عبّرت عن ال C
code هذه الأسمة هي ممكن تكون Y ممكن تكون 4 ممكن
تكون F ممكن تكون whatever إلها كودها صح ولا لأ
فالآن هينكتب code من ال S.code طب السؤال نهاية ال S
.code شو بدي أعمل فيه؟ وأين بدي أروح؟ في نهاية ال
S dot code S و dot code بدي يرجع للأول طب طالما
أنا بتكلم بدي يرجع للأول لازم يكون في label للأول
عشان أقول له روح go to لل label هذا مش بس هيك و
طالما أنا توجه ال true وال false لازم يكون كمان في
label لمين؟ للثاني، ليش؟ عشان باختصار لما تكون ال
C true روح لل label 2 يعني أدخل على ال function
تاعت أو ال code بتاع ال S1 طب خلصنا من code ال S1
مش المفروض نرجع
عشان آخر سطر بتلاقيه هنا عبارة عن إيش؟ مين ال S1
.next من الذي يتبع ال S1 هتقولي اللي بدي أقوله go
to طبعا لمين؟ ل L1 هاي باختصار طبعا الآن هأشوف شوية
تفاصيل بس أنا جاعد بأحاول الآن أديكي ال structure
الكامل بتاع ال while القصة باختصار بد يكون code C
مكتوب في الأول بدي أكون عارف true ولا false من ال
code تبع المكتوب بناء عليه واحدة من اثنين يا بده
أقوله روح على label two عشان يكمل في الـ S1 إذا
كانت true يا بدي أقوله اطلع من كل الـ إيش المكان
طبعا بنات هذه إيش بنمثلها؟ إيش معناه اطلع من كل
البنات؟ إيش القيمة هذه؟ هذه القيمة اسمها الـ S dot
next يعني مش هذه الـ S في إلها next مش هذه الـ S في
إلها بعد ناس فأنا كيف بعبر عنها لما أقول له في
حالة الـ false روح على الـ S.next هيك بدأ أقول له S
.next يعني أيش بقوله في حالة false أن أنت طلع على
مين على الاشي اللي مكتوب ورا مين ورا الـ S الرئيسي
الآن كمان مرة يا بنات أنا بدي أعمل code أو الـ Tree
Address Code لمن؟ للجملة هذه الـ while اللي عندي
عشان أقدر أعمل الـ Tree Address Code أول إشي بنتاج
نسوي نكتب code الـ C فبسميه C.code هذه أول نقطة
ليش؟ لأنه بناء على هذه الـ C يصير يا بفوت جوا يعني
يا go to الـ S1 يا go to الـ next تاعة الـ S يعني ليش
اللي بعد الـ إيش؟ اللي بعد الـ Y صح ولا لأ؟ فعشان
هيك أنا في الأول لازم أكتب كود الـ C لأن الـ C كمان
مش معروفة فخلاص بقبل عنها في C.code لكن أنا بهمني
في نهاية الـ C إيش أكون عارف لازم أكون عارف هادي
الـ C true يعني الشرط متحقق عشان أعرف أين أروح ولا
الـ C هادي false عشان أعرف أين أروح طبعا برضه
مانساش أنه لازم أنا أكون عامل label لمين؟ للمكان هذا؟
ليش؟ ليش أعمل label للمكان هذا؟ لأنه إذا دخلت أنا
جوا الشرط اتحقق وفُتت على الـ C مش بتدرجع من جديد
للبداية تحت الـ while صح ولا؟ عشاني كبداية الـ while
لازم أعملها label عشان أقدر أقول go to لبداية الـ
while مش هذه بداية الـ while مش بدأت أكتب الـ C
اتحقق الشرط دخلت في الـ S بعد ما أخلص الاسم مش بدي
أرجع لبداية الـ wild من جديد إذا لازم أسجل عندي أنه
في label للبداية تاعة الـ wild لإني محتاج أرجعلها
ممكن وممكن مارجعلهاش على حسب الـ condition فهنا في
عندي أصبح label مابدي أنساه طيب الآن خلّيني نكمل
في حال الـ C dot الـ true يعني إذا الشرط متحقق إيش
بدنا نسوي؟ بدنا نفوت على code مين؟ الـ S1 عشان هيك
برضه الـ S1 لازم يكون له إيش؟ Label الـ 2 مثلا، ليش؟
عشان أقدر أقوله go to للـ S code بتاع الـ S1 عشانك
إيش بتوقع بكتبها أنا؟ إيش الكتب بتكتبها أنا يا
بنات؟ code مين؟ S1.code بدي أعبر عنه بـ S1.code لأن
أنا خلاص الشرط اتحقق اتفضل اكتب code مين؟ الـ S1
عشان هيك بدي أعبر عنه بكلمة S1.code طبعا في نهاية
الـ S1.code وين بدي اروح؟ يعني مين الـ S1.next؟ ايش
تساوي الـ S1.next يا بنات؟ يعني مين الـ next بتاعت
هذه؟ اللي هي ألوان ماذا يعني هذه الجملة؟ انه لما
انا خلصت code الأسوان على كل الأحوال بدي أرجع
لألوان، هيك معناه فعشان هيك ايش بقوله؟ بقوله الـ
next بتاعة هذه مين هي؟ هي الألوان، باختصار طيب،
نرجع بس لهنا، في حالة الـ true، هقوله go to لمين؟ لـ
label الـ two، صح؟ يعني الـ c dot الـ true بتتساوي من
الآخر؟ اللي هي الـ label قالته مش هيك يعني إذا كانت
true روح لمين؟ لـ ال two، فظهرت للا طيب إذا كان false
وان بدأ أروح؟ أيوة S.next طبعا الـ S مين هذه؟ مش S
الـ label هذه الـ S الكبيرة اللي أنا قاعد تشغّال
عليها مش هذا كله code الـ S من الـ next تبعها اللي
جاي وراها يعني إذا الشرط لم يتحقق من البداية أو في
أي وقت هاروح على الـ issue اللي بعد الـ while مكتوب
في البرنامج خلاص هيطلع من الـ while ويكمل تكميل
عشانك عبرت عنها بكلمات S.next الـ S بتاعة الـ parent
الـ next تبعه وهذا مش هاروحله إلا في حالة الـ
condition false لكن إذا الـ condition true خلاص كمل
في L2 إذا فات على L2 يعني إذا فات على الـ S1 لما
حالة يعني اتحقق الشرط وفات لازم مرة جاون يروح في
الـ wild يرجع من جديد يبحث الشرط فهذا اللي انتوا
شايفينه باختصار هذا الـ structure تبع الـ tree
address code طبعا عشان يكملو أكتب code المفروض
أكون عارف إيش هي الـ C عشان أقدر أعملها coding أكون
عارف إيش الـ S1 عشان أعملها coding لكن الكتاب سهل
علينا كلها ده قال خلاص عبر عن الـ C1 بـ C1.code عبر
عن الـ S1 بـ S1.code و رايح حالك و بس كان معنى هنا
بالـ structure بتاع الـ three address code للـ Y كيف
هاد الـ Y نعملها three address code زي ما انت
شايفها فهي هذا الشكل طيب الآن سؤالي مش أنا .. عشان
أقدر أشتغل في الـ ..في التحويل إيش الـ output اللي
بدي يطلع من هذه الجملة three address code عشان هيك
إيش بتتوقع الـ S.code هيساوي يا بنات إيش تتوقع
يساوي الشاطرين هيقولولي هيساوي L1 concatenation مع
C.code concatenation مع label 2 concatenation مع
S1.code عشان كل المقارنة تكون محتوطة وطبعا خلال
الـ concatenation لازم يكون في عامل الحسابات هذه
اللي احتاجها عشان اعرف حالي وين هاروح طيب عشان بس
نشوف القصة وبعدين تسألوا زي ما بدكوا تعالوا نشوف
الجواب ونتكلم فيه هايه باختصار هاي التحويل
طلعوا معايا عادي، إيش قالك؟ قالك بدي بس حاول أكبر
برضه ونشوف الأخيرة، الحين نرجع لها طلعوا معايا
إيش قال أول شيء؟ قال هاي التحويلات تبعتي، قال أول
حاجة طبعا هذا الشيء تعني الـ semantic rules اللي هو
منفصل الآن قال أول اشي بدنا نسويه عشان اقدر اكتب
الـ code كامل تاء الـ S إيش بلزمني؟ قال بلزمني label
one كمان شوية هحطه في مكان بلزمني label one ليش
label one؟ علامة على بداية الـ Y عشان لما بدي
اروحلها اقدر اروحلها فبلزمني label one ماذا كمان
بلزمني؟ بلزمني level 2 ليش بلزمني level 2؟ علامة
على بداية الـ S1 عشان واجد مابدي اروحلها اروحلها
مابديش اروحلها بلاش بعدين ليش بلزمني؟ الـ S1 dot
next يعني هذه الـ S1 مين الـ next تبعها؟ مش لازم
احسبه؟ ليش لازم احسبه؟ لأن بعد ما بخلص code الـ S1
لازم احدد وان بده اطير احدد وان بده اروح فلازم
أكون عارف مين الـ next تبعي مين عد الـ next للـ S1
دايما؟ ألوان عشان هيك الشيء اللي بتساوي دايما الـ S1
.next بساوي الألوان عشان وجد ما بدي أرجع برجع على
الألوان خلصنا طيب الآن كاملي بعدين إيش بدي الـ C
.false يعني هذه الـ C اللي أنا بدي أكتبها كمان شوية
مش في إلها يا false يا true في حالة كانت false وين
بدنا نروح؟ على الـ S dot next يعني بعد الاس كلها طيب
في حال كانت الـ true و اين نروح على الـ 2
الاصل انا حاط الـ 2 على مين على الـ S ولسه
انا ماكتبتش الـ code انا جاعت بجهز للـ code هذه كلها
تجهيزات في حالة الـ true وانا اروح في حالة الـ
false وانا اروح في حالة الـ one من وين ماكان والـ
2 من وين ماكان كل هذه تجهيزات الان تعالوا
شوف هي الـ output النهائي اللي بدور عليه هي
التحويلة هي الـ code هي الـ string إيش بيقول تعالوا
شوفوا ركزوا عالي بقولك الـ code اللي بدور عليه تاع الـ S
عبارة عن شو؟ هه عبارة عن شو؟ قال أول إشي بدنا نكتب
كلمة label هه بدأ أورجيك التحوير كيف بدأ تصير بدأ
أمسح حنا وأوريك إيش بده يصير هه قالك أول إشي بدنا
نكتب كلمة label كتبت كلمة label طيب بعد ما كتبت
label قالك concatenation يعني لزج عليها شو ألزج
عليها؟ كلمة الـ one اللي هي قبل شوية عملها هذه لزجة
الـ one ثم ماذا يقول الـ concatenation لزج وراها
code الـ C اللي المفروض يكون موجود لزجت وراها code
الـ C ثم ماذا يقول لزج وراها كلمة label كمان مرة
أن هذا عنوان جديد أو label جديد ثم ماذا يقول لزج
وراها الـ two سأكمل وأرى ماذا يقول بعد ذلك ثم ماذا
يقول لزج وراها الـ aswan.code شايفة؟ وهذا اشكالة هذه
الـ c.code الآن هذا اللي طلع معي شو هو اللي طلع
معاكي؟ هي الـ Tree Address Code للـ wild هذا اللي
طلع معاكي طيب واحدة ممكن تسأل وتقول ليه؟ طب ماشي
الـ L1 استخدمناها في الـ code صح هيها مظبوط والـ L2
استخدمناها في الـ code طب هدول مابيانوش معي في الـ
code هدول ليش مابيانوش لإن هدول أساسا المفروض في
ذيل الـ code بدي أبحثهم عشان أعرف حالي هاروح أين في
الـ code يعني هدول parameters أنا قاعد بحطلهم الـ
values وين بدي أروح في حالة true وحالة false
فلازم يكونوا معروفين يعني في حالة false وين اروح؟
في حالة true وين اروح؟ طب هدول مين هيتعامل معهم؟
وين هشوفهم هدول لو بدنا نشوفهم صح؟ في نهاية الـ code
بتاع الـ C بيصير فحص اه انت يا C كنت true ولا كنت
false؟ اه والله كنت true خلاص go to الـ two اه كنت
false اه go to الـ next بتاع الـ C شوفتي فلازم الـ
values هذه اللي الأساسية يكون عارف وأماكنهم و
قيامهم عشان يقدر يكمل الـ code لكن هو ما كتبهُم لأنه
أساسا هو مش عامل الـ code خلاص قال لك هذا الـ code
هيكون مكتوب لكن هدول الـ parameters لازم يكون عارفين
الـ values بتاعتهم عشان يقدر هذا يكمل نفس الفكرة أنا
نفذت الـ S1 code إيش لازم تسوي آخر جملة بعد الـ S1
code؟ بتقول له طير على بداية الـ .. الـ .. الـ ..
الجديدة يعني مين الـ next بتاعة الـ S1 لازم تنحسب هي
عشان ياخدها ويطير عليها مين الـ next بتاعة الـ true
هي عشان ياخدها ويطير عليها فهذه حسابات لازم تنعرف
تنعمل الخلاصة أننا حولنا من الـ Y لـ Tree Address
Code أو على الأقل لـ Structure بتاع الـ Tree
Address Code لأن فعليًا أنا لم أكتب الـ C Code
فعليًا لم أكتب الـ أسوان Code لأنه أصلاً لم
يعطينيهم لكي أكتبهم لو يعطينيهم كانت كملت وكتبت
واضحة أن هناك أحد لم يفهم في أي سؤال كيف حولنا من
while لـ Tree address code في حد في عنده لبس أو شغلة
مش واضحة له يدويًا يسأل قبل رؤية الجزء الثاني من
محاضرتنا نكمله
طيب احنا محاضرتنا عبارة عن ثلاثة أجزاء اليوم ديروا
بالكم هيخلصنا الجزء تمام الجزء الثاني جزء سهل جدا
بيتكلم كيف نحول من Syntax directed definition لـ
Translation skill يعني كيف نحول من SDD لـ SDT مش
هنقول الـ SDT more efficient لأنه بيكون الـ action
جوا الـ grammar مش هيك حكينا طب الآن لو عندي
semantic يعني لو عندي SDD كيف أقدر أحوله لـ SDT؟
الآن هذا بنشرح لكوا يعني خليني أرجع برجوع الـ
subsection وناخد مثال عليه مباشر، هاي المثال طبعًا
يا بنات الـ grammar هذا اللي موجود على اللوح السؤال
إيش بيقول؟ السؤال بيقول بده نحول الـ grammar هذا
طبعًا أنتو شايفينه هذا عبارة عن SDD صح؟ ليش SDD؟
لأن الـ grammar لحال والـ rules لحال فهو بده يحول
الـ SDT طيب أول حاجة كويسة إنه لو أنا مش فاهم الـ
grammar ومش عارف إيش بيعمل، بيكون عندنا المقدرة
نحوله لـ SDT، فهذا إيش كويس، لو أنا مش عارفه إيش
بيعمل، إيش بيشتغل، إيش بيعمل، زي ما أنت شايفها
قدامك، هل أنا لازم أفهمه عشان أحول الـ SDT؟ لأ مش
لازم تفهمي طيب، أنا هذا مش هشرح ليش بيعمل، ليش؟ هو
هذا باختصار جاي من وين؟ في حاجة اسمها Latex هذه الـ
Latex بيستخدموها لما بيعملوا كتب بيعملوا reports
على أساس عبارة عن editor بتكتب فيه رموز زي الـ HTML
بتكتب فيه رموز وبيروح بيحولها لصورة ولـ figure ولـ
لرياضيات ولـ PDF file في النهاية يعني مثلاً بكتب
جوا الـ Latex slash figure بيروح بيحولها على شكل
figure وبدي أحطها في الوسط أحطها هنا بتكلم عن
الخط الارتباطي المهم زي هي كان الـ editor هذا
بيشتغل طبعًا لكن احنا مش مطلوب منا نفهم هذا الـ
latex هذا .. هذا بيكون اللي عارفه وعارفه ومش
عارفه بلاش المهم هذا الـ grammar إيش بيسوي جاعة
بيوريكي كيف هذا الـ latex .. الـ latex بيحول كيف
بيطلع الرموز أو كيف بيطلع الكلمة يعني إذا أنا كتبت
مثلاً subscribe بممكن أحطها تحت أحطها فوق على حسب
الـ command تبع الـ latex فهذا لازم يحول صح شوفتي
كيف؟ لكن أنا زي ما قلت مش معنى كثير في الـ Latex
لكن أنا معنى فقط كيف أحول هذا لـ SDT قال لك عشان تقدر
تحولي لـ SDT قانونين صغار اتركزي عليهم وتعرفيهم
بتحليها بدون ما تفهمي إيش الـ grammar بتسوي إيش
القانونين القانون الأول بيقول لك إذا كان الـ attribute
synthesized حطي الـ action هذا في الآخر كمان مرة إذا
كان الـ semantic rule اللي عندي هذا الـ semantic
rule الـ attribute تبعه من نوع synthesized إيش يعني
من نوع synthesized؟ يعني الأب بيعتمد على الأبناء،
مظبوط؟ قال لك هذا حطيه بين جثين الـ rule وحطيه في آخر
الـ production يعني كيف؟ يعني تعالي تطلعي على هذا
الـ semantic rule خديلي هذا كمثال هذا بتتكلم عن
مين؟ عن الـ B بتاعة مين؟ بتاعة الأبو، صح؟ بيقول هي
عبارة عن function في مين؟ لو كملنا هتلاقيها
function في B1 وفي B2 يعني هذا الأب بيعتمد على
مين؟ على الأبناء، يعني هذا من نوع synthesizer،
صح؟ الآن قال لي هذا الآن بتحطيه بين جثين وبتجيبيه
و بتحطيه في آخر الـ production طيب ليش؟ إيش الحكمة؟
أن أحط في الآخر؟ قال لأنك بتكون شوفت الأبناء قبله
فبتكون عرفت الـ attributes بتاعة الأبناء لأنك بتعمل
بارسينج من الشمال لليمين فأنت already شوفت الـ B1 صح
ولا لأ؟ فعرفت الـ attributes بتاع B1 بعدين شوفت مين
الـ B2 فعرفت الـ attributes بتاع الـ B2 إذا أنت تقدر
تحلي إيش؟ الـ B تحت الـ أب شوفتي كيف؟ لأن هو معنى إيش
دايمًا بيسوي أن أشوف الـ attributes كلها قبل اللي بدي
أحسبه عشان ما يصيرش خربطة لإني بمشي من الشمال
لليمين فجالي خلاص دايمًا وأبدًا اريحي راسك طالما أب
بيعتمد على الأبناء يعني بدي أشوف الأبناء كلهم قبله
صح؟ فوين بدي أحطه؟ في آخر الـ production لإني بكون
شوفت مين؟ كل الأبناء قبله فهذه أول ملاحظة لو كان من
نوع Synthesize حطيه في الآخر بين جثين ويعطيك
العافية طيب لو ما كانش من نوع Synthesize يعني
inherited أو بيعطي قيمة يعني مثلاً قال لي الـ B
تساوي عشرين وإيه لازم أحطها قبل الـ B؟ هو قاعد
بيعطيها قيمة قاعد بيقول الـ B تساوي عشرين فالمفروض
هذه وأنا أحطها قبل ما أوصل الـ B عشان أخد العشرين
وأستفيد منها جوا الـ B فإذا كنت أنا بعطي قيمة أو من
نوع inherited لازم وأنت نحط قبل الرمز طب اديني
مثال يعني مثلاً high ف أنا قاعد بحسب لمين؟ لـ الـ B
high بيقول لي خلي الـ B تساوي عشرة الصح أحط هذه في
الآخر ولا قبل الـ B؟ جاب لـ الـ B عشان يستفيد من القيمة
ده في حسابات بتعتمد على الـ attribute هذا تكون أخدها
أخدها من الأبو وأخدها من الأخو فطالما بيعطيه قيمة
لازم أحطها قبل الرمز عشان لو احتاجها ألاجيها عارف
لو أنا نجلت هذه في الآخر يعني أنا بشوف الـ B قبلها
صح؟ طب افرض في الـ B بدي أحسب الـ BS هذه أو حاجة
بتعتمد على الـ BS هذم مش هقدر فقال لي خلاص ريح دماغك
طالما هي بتعطي قيمة طالما هي inherited حطها قبل
الرمز طالما هي synthesized حطي الـ action كله في
الآخر هاي كل اتنين rules تعالوا نطبق الـ rules ونحل
هذا السؤال كامل ونخلص الجزء الثاني تعالوا نشتغل
عليه السؤال بيقول حول هذا الـ grammar أو الـ SD دي
الـ SDT تعالوا كيف نشتغل حاجة أمسك الأولى هقول آه
هذه بي هذا قاعد للابن بيشتغل آه قاعد بيعطيله قيمة
إذا هذه المفروض تنحط وين؟ قبل بي عشان هيك هحط
action زي هيك وأسحبها وأحطها هنا شوفتي كيف؟ وخلاص
تيجي وراها الـ بي لو روحت على الـ بي خلاص واحتجت الـ
بي اسم هي معروفة أنا شوفت الـ value قبلها طيب تعالوا
نكمل للي وراها اللي وراها في واحد اثنين ثلاثة أربعة
ما تفكريش إنه إجباري لازم كلهم يكونوا مع بعض كل
واحدة حطيها في مكانها كل واحدة action شوفتي كيف؟
الآن تعالوا نتطلع أول شيش بيقول لك قاعد بحسب مين الـ
B1 dot BS إيش بتساوي قيمة مين الـ up هذا الـ action
إيش رأيك وين نحطه؟ أيوة قبل الـ B1 مش هذا بده الـ app
طب أنا بكون وصلت الـ app قبله صح ولا .. عشانك هذا
بنجل وين؟ قبل الـ B1 فبكون أنا شوفت الـ app بعدين
إيش حسبت الـ B1 بعدين دخلت على الـ B عرفها شوفتي
كيف؟ طيب إيش رأيك في هذه الـ action؟ هذا بحسب للـ B2
إذا هذا الـ action هو لازم تحطي .. حطيه قبل الـ B1
.. المهم قبل الـ B2 تنصح طالما أنا قاعد بعطي قيمة
للـ B2 يعني الـ B2 بدى يستخدمها كمان شوية لازم الـ
action هذا تحطيه قبل مين؟ قبل الـ B2 هذا تحطيه في
الأول، تحطيه في النص، أنت حرة المهم إنه قبل الـ B2
طيب تعالوا تطلعوا على هذا، آه هذا الـ app بيعتمد على B1
لو كملناها وبيعتمد على B2 يعني الـ app جاعة بيعتمد
على الأبناء أبجى هذا الـ action وين هتودي حضرتك؟
على الآخر طيب تعالوا للأخيرة برضه الأخيرة بحسب
attribute تاني لمين؟ برضه للأب وبيعتمد على مين؟
على الأبناء برضه هذا الـ action ممكن تحطيه في الآخر
طيب تعالوا اعملي لي بس هادي إيش نسوي فيه هادي؟ خليني
أرفع بس شوية صغيرة خليني أعمل هادي تعالوا إيش رأيك؟
هذا بيحسب قيمة الـ B1 وبتعتمد على الأب يبقى هذا
الـ action بتحطيه قبل الـ B1 طب هنا برضه الـ B2 قبل الـ
B2 صح؟ قبل الـ sub بعد الـ sub اللي هم قبل الـ B2
لازم يشوفها قبل الـ B2 شايفة؟ لأنه إيش بيسوي؟ بيحسب
قيمة الـ B2 بتعتمد على مين؟ على أبوه إذا نزل نحط قبل
طب إيش رأيك في هذه؟ هذا بيحسب للأب بيعتمد على
الأبناء بحطه في الآخر وهذه؟ خلاص سهلة القصة تعالوا
نشوف الجواب نشوف الشي كامل أيوة ما بيدوش شيء الدارس
هذا ما فيش فيه شيء يعني شايفة اللي توحينا إياها شايفة
أيوة أول واحدة حطها قبل الـ B شايفة لأن هذه في السطر
اللي وراها يعني كتب وبعدين حط الـ B شايفة وبعدين
إيش عمل؟ حط هذه قبل الـ B1 وحط هذه قبل الـ B2 وحط
آخر التنتين زي ما اتفقنا قبل شوية في الآخر واللي
وراها حط الـ B1 قبل الـ B1 وحط الـ B2 جاب بعد الـ sub
.. جابل الـ sub .. المهم جابل إيش؟ جابل الـ B2 و
بعدين حط الـ باقيين في الآخر وكله نفس النظام يعني
الموضوع simple يعني حتى لو أنا مش فاهم الـ grammar
مخلص بس آه بس أشوف أبو بيتمد على ابن أقر مية في
الآخر الـ action آه لأ بيحسب inherited يعني بيحسب
قيمة حدا بحطه جابله عشان يستفيد من قيمته يشتغل هي
باختصار طيب أتأكد أنكم فاهمين حاولولي اللي تاوعي
اشتغلناها الـ SDD مش تاوعي اشتغلناها هذه هذه مش
تاوعي عملناها لو بدك تحوليها لـ SDT كده تسوي إيش
رأيك؟ هذا وين بده نحط؟ هذا بحسب قيمة الألوان صح؟
وين لازم أحطه؟ قبل في الأول هذا بده يجهز حاله الـ
one الـ two بده أحطه قبل طب هنا بحسب لمين؟ للأسوان
هذا وين بدنا نحط؟ قبل الأسوان أنت حرة عادة نحط
اللي هم قبل الأسوان الـ C dot false والـ C dot true
قبل الـ C مش مشكلة المهم قبل الـ C قبل الـ while
بعد الـ .. المهم قبل .. طالما بيحسب للـ C values
لازم ينحطوا قبل الـ C عشان لما يفوتوا الـ C يكونوا
عارفهم طالما بيحسب للـ S one value لازم يكونوا قبل
الـ S one عشان يكونوا عارفهم طب الـ S dot code هذا
بتعتمد على الأبناء كلهم فهذا بينحط في الآخر فهي
التحويلة تبعتها باختصار
تمام؟ هاي شايفها؟ قالت لك الـ initialization اللي
هو قبل الـ C الـ L1 و L2 و Linear و C.false والـ
S.next هذي الـ S بتاعة مين هذي؟ إذا لأ هذي مش ..
بحسبها عشان هذي قيمة يسويها والـ C.true خلاص؟ هذا
كله .. طبعا واحدة هتقولي طب لو عملتها قبل السهم قبل
الـ Y كله صح المهم قبل الـ C لكن طلع هذي ونحطها
جاب للأسوان طب لو حطيتها دي مع اللي فوق برضه ما فيش
مشاكل المهم أنه هاي طب الـ S dot code إجباري في
الآخر لأنه لازم أكون شايف كل الـ values وأعرفها
عشان أقدر أنا أشتغل في الآخر هي باختصار هي كالجزء
الثاني خلص اللي هو من SDD لـ SDT في أي سؤال؟ واضح
الأمور؟ تمام؟ طيب الجزء الثالث والآخر اتكلمت ..
ابتدي تسألي؟ طيب الجزء الثالث والآخر اتكلمت عنه
في بداية الـ chapter لما قلت لك بدنا نشيل الـ lift
recursion في ظل وجود الـ rules كيف بدنا نسوي؟
بقول لنا بتبطل الـ rules القديمة أو بتبطل القوانين
القديمة تنفعني لازم قوانيني جديدة فالآن تعالي نشوف
هذا المثال ونفهمه هي الـ rules ركزي معايا شوية هنا
الـ rules وهنا مثال على الـ rules تمام؟ خليني أشوف
الـ rules إيش بتقول شوفوا
الشكل بنات شوفوا الشكل هنا هذا .. لو هذا مخبأ لو
هذا مش موجود الـ action آه اعتبر الـ action مش موجود
هذا الـ action تمام؟ هذه a بتعطيني ay وهذه الـ a
بتعطيني x شو حولتها؟ هتقولي لي أكيد الـ a بتعطيني
خد اللي ما فيش فيها المشكلة x في إيش في r شايفها؟
انسى الـ actions والثاني هتخبي هذه وتقولي لي y في r
أو epsilon يعني لو أنت لغيت الـ actions منهم كلهم
فوق وتحت هتلاقي قانونك اللي أنت عارفاها زمان شوفتي
كيف؟ يعني لو أنت لغيت الـ actions خبيتيهم هتلاقي هاي
.. هاي حولتها مظبوطة زي ما أنت كنت تعملي زمان بس
اللي .. اللي انضاف على الرسمة تبعتك اللي انضاف على
القوانين الـ action كيف كان الـ rule وكيف اتقطع و
كيف صار هاي اللي انضاف طيب اديني مثال أو وارجيني
كيف أول ملاحظة أنه مش هذه اللي كان فيها المشكلة يا
بنات اطلعي على الـ rule اللي عندك الـ rule إيش بيسوي؟
بيقول لك هنا في معادلة مثلاً بتحسب قيمة الـ attribute
بتاع الأبو اللي فيه المشكلة تساوي something
function في أي حاجة فأنت المشكلة عندك موجودة هنا و
المشكلة موجودة في الـ rule لأن الـ a بتهطير المفروض
في التحوير طب ما هيش هتسوي في الـ a هذه؟ غلط أخليها
زي ما هي فلازم يصير فيها شيء مش هيك قلنا المرة
اللي فاتت؟ عشان أركز وأشوف إيش اللي صار فيها
تعالي اتطلعي وفي الأول أشوف التانية كمان اللي
ما فيش فيها مشكلة خلاص عادي ممكن يكون فيه attribute
نفسه اللي فيه المشكلة يساوي function عادية هيك
الصورة العامة لاحظ أنه دائماً أنا بتعامل مع
attributes هنا من نوع synthesize يعني القانون
انعمل ومبني على الـ attributes اللي من نوع
synthesize عارف لو في attributes ثانية مش
synthesize inherited ولا غيره ببطل هذا القانون
ينفع يعني هذا القانون بس special إن لو كانت الـ
attributes اللي عندك جوا في الـ action من نوع
synthesize بظبط طبق القانون وبس هو اكتفى في
الكتاب بهذا .. بهذه الحالة وكيف قانونها وخلصناها
لكن عارف لو إن الـ rules كانت inherited وبتبدأ
الأخ وبتبطل هذا ينفعك يعني هذا فقط يستخدم متى إذا
كان فيه rules ومن نوع synthesized okay طيب تعالي
نشوف التحويلة هذه التحويلة بس بدها ملاحظة كويسة
يعني كيف كنا نحوّل زمان لو ما كانش في ايروك؟ كنت تبدأ
من وين؟ مش كنت تقولي الـ a بتعطيني اللي فيش فيها
تبدأ من هنا ولا من هنا؟ كيف كنت تسوي؟ في قانونك
العادي، إيش كانت الـ a تسوي؟ تبدأ من الـ
introduction اللي ما فيش فيها المشكلة، مش هيك كنت
تسوي؟ مش كنت تقولي الـ a بتعطيني الـ x في R؟ مش هيك
كنت تشتغلي زمان؟ اليوم نفس الفكرة، هاي شايفة؟ قال لك
هي الـ x وهي الـ R طيب شو هدول اللي هان؟ قال هدول
آجومن هنا اتطلعي لي شوفي هذه وقارلي لي هذه كيف
صارت واديني رأيك أنت هذه ما تغيرتش ما هي الـ X و R
تعاد زمان صح؟ لكن شوفي هذه كيف فتتها شوفي هذه كيف
عملها إيش بتلاحظي؟ إيش عمل في المعادلة؟ ماذا فعل؟
بس استبدل الـ A بـ R.I برمزي جديد صح؟ وخلّى الـ A
تساوي يعني .. واللي شالها سواها بإيش؟ بـ R.S يعني
كأنه ضاف في الـ Attribute R.I و R.S وقطعها حط مكان
الـ A في الأول الـ R.I واللي شالها سواها بالـ R.S
قانون ثابت الأهم ده تطبق أوريك كيف تتطبق بس في
الأول بديت انتبهي إن هاي الـ production هذه اللي
بتطلع ايه قال لك الـ X زي ما هي الـ R زي ما هي ما فيش
مشاكل لكن هذا الـ rule قطعه كيف قطعه؟ راح شالها يحط
مكانها R dot I بعدين اللي شالها رجعها تساوي R dot
S طب طبق مثال وارجيني تعالي خدي هاي السؤال هذا
مثال بدي نطبقه الآن وين الـ left recursion هان؟ EET
صح؟ هنبدأ من وين؟ نقول الـ E القانون عشان نقول الـ E
عبارة عن إيش الـ T في R مش هيك؟ وهنحط هنا Action وهنا
Action مش هيك القانون بيقول ليه؟ إيش الـ Action
الأول؟ وين المعادلة؟ إيش بسوي في المعادلة هذه؟ مش
بخبي اللي .. اللي هي وبحط مكانها R.I وبعدين بقول
هذه اللي شلتها بعد الـ R تساوي R.S مش هيك القانون
بيقول ليه؟ هي شوف كيف تحولت هي .. وين؟ هذه هي
شايفة؟ ايه بتعطيني الـ TR؟ والـ R.I شايفة؟ شال هذه
استبدالها بـ R.I وبعدين رجع اللي شالها وسواها بـ R
.S يعني هو ما اشتغلش من كيف هو اشتغل على القانون و
القصة simple خالص يا بلاي ولا ادهاش شيء القصة
simple خالص قال لك هذه معادلتك اللي عندك اقسميها نصين
كيف أكسبها نصين؟ اللي هي هذه .. اللي هي هذه كيف
أكسبها نصين؟ إيش بقول لك هنا؟ بقول لك سيبي كل شيء كما
هو بس اللي جاب لي المساواة هذه استبدليها بإيش؟ بـ R
.I فأنا سيبي كل شيء كما هو .. هاي شايفة؟ شيبت هايا
.. طلّعي؟ وين الـ .. طبعاً أنا حليتها .. هايا يعني
هنا إيش هنكتب هنا؟ R.I هيك الحل تساوي إيش؟ هايا ..
هايا .. خلاص .. شايفة؟ شايفة؟ سابها زي ما هي بس
استبدال مين اللي جاب له يساوي وهذه اللي شالها رجعته
تساوي إيش؟ أرضه تأثر طب هو ليش عمل هيك؟ لأن
القانون بيقول له عمل هيك شوف .. منك بس مقارنة خدي لي
كده كده نص دقيقة تطلعي لحالك شوفيها شوفي إيش سوى
في القانون وإيش سوى في المثال كيف حولها؟ طابق
الأتنين شوفي تطلعي فيهم
اللي مش شايفينها قولولي أعيدها مرة واثنين المهم
تكون واضحة هذا ما فيها شيء هاي زي اللعب عادية زي شوف
الفرق ما فيها شيء شوف إيش عمل هنا اعملي زيه هنا
ما عليكم إن شاء الله عليكم شاطرين طيب لسه الثانية شوية
أكبر منها بس هبقى نخلص من السهل عشان نشوف الثانية
ما بيدوش أنا أكون لسه مش شايفين هاي اللي مش فاهم
أو مش شايف أو عنده أي problem يتفضل يحكيلي عشان
اختصر الوقت مش تسألوني مش عشان .. على الأقل اعملوا
معروف اللي بدهم يحضروا الـ video يمكن مش
واضحلهم شيء معين مع أسئلتكم توضح as you
like أنتم أحرار خلونا نكمل .. هل تستاهل ولا خلاص؟
طيب خلونا نكمل .. خلونا نكمل بنات خلونا نكمل إذا
أنا اللي عملته هي صارت هي يعني هي صارت هي باختصار
هي اللي سويناها من هنا كيف انتقلت لهنا نفس القصة من
هنا كيف انتقلت لهنا هي اللي صارت الآن بدأ أركز على
مين؟ على التانيات اللي هو مين التانيات؟ بدي أمسح
أوريكي مين هم عشان بدي أمسح حاجة عشان بدي أركز على
مين؟ هذه خلصناها، بدي أركز على هاي، هاي، هاي،
تحولت لمين تحولت؟ تحولت لهذه، لهذا الصندوق، صح؟
هذه تحولت لهذه، بدي أشوف إيش اللي صار في التحويل
عشان أطبق على هدول اللي صار في التحويل إيش بقول
ليه؟ بقول ليه خلاص مش بدنا .. مش بدنا .. بدنا نجيب
الـ R مش الـ R بنصير نشتغل على اللي كان فيها مشكلة
مش هيك كنا نشتغل مش كنا نخبي هاي و تكتبي Y في R و
تضيفي إبسلون مش هي كان القانون فهيعملهم الـ Y في R
و الـ إبسلون لكن إيش اللي بده يصير؟ هذا الـ rule هو
اللي بده يعطيني هاي و هاي كيف عمل؟ اتطلع إيش عمل؟
قارني هذه إيش صارت؟ هذه خلاص ثابتة، هذه الطول
عمرها ثابتة، ما تتغيرش R.S تساوي R12S والـY R.S هذي
هتكتبينهم زي ما هم في القانون، بس التفكير، هاي كيف
صارت هاي، بس، أما الباقي ثابت، إيش بتساوي؟ إيش
عمل؟ إيش استبدال؟ استبدال كل A بـR و الـA بالـR1 و
الـA1 بالـR، وخلّى المعادلة زي ما هي مش عادي يعني
بالعربي هاي إيش تتوقع أنها تتصير؟ هيقول أكيد زائد
T ويضرب في R صح؟ طب هذه المعادلة مش هيعمل فيها
هيستبدل الـ E dot vowel بـR1 dot I وهيستبدل الـ E1 بـR
dot I و يسيبها زي ما هي هاي طلعي شوفي هيها وينها؟
هيها هيها هيها خلّي هيها عشان ما تتهوش، هي شوفي هذه
كيف صارت وشوفي هذه كيف صارت وقولي ليش رأيك الباقي
هذا ثابت، الباقي اللي بعد هيك R.S.R .. هذا كله
هيظل ما تتغيرش هو بس هذي بتتغير شايفة؟ ساب المعادلة
كما هي واستبدل E1 بالـR1 واستبدل E1 بالـR.I ليش
واستبدل هيك؟ لأن هيك بيقوله القانون القانون بيقوله
سيب كل شيء كما هو بس اللهم هذه فيها مشكلة استبدلها
بالـR هذه الفيديوهات مش هنسيبها دلوقت .. اه و سيبي
الباقي زي ما هو وهذا اللي أنا عملته في التحويل طب
الباقي هذا التكميلة التكميلة ثابتة ما بتتغير إيش
التكميلة؟ هاي التكميلة إيش القانون اللي بيقول
التكميلة؟ حط R وحط R Dot S تساوي R Dot One Dot S و
الـ Epsilon R Dot .. خلاص هذا ما نلعبش فيه هذا ثابت
فكل مرة هذا ينحط زي ما هو باختصار كيف؟
هادي هي الـ left recursion الـ إيه؟ الـ إيه؟ واضحة؟
خلاص إيه خلص الـ .. طبعا هنا مكررة كمان واحدة إيش
هيعمل في التانية نفس الفكرة ناقص T في R و هياخد
هذي يستبدل هذي بـR.I و هذي بـR1.I أو العكس R1 بعدين
R و يسيبها زي ما هي و يكمل نفس السيناريو هاي اللي
اللي بده يشوف تحت .. شايفين؟
القانون مش حفظ بس في ناس بدون ما يشوف القانون خلاص
فهم اللعبة كيف يحل خلاص تقول مرة بيستبدل و انتهى
أو زي ما هي بيحطها و انتهى لو حلتيها مرة مرتين
لحالك ما بديك قانون خلاص بتحلي عليه عادي تمام هيك أي
سؤال؟ ختاما .. ختاما .. يعني اليوم الحمد لله كانت
آخر محاضرة نتمنى إن شاء الله أنكم تكونوا استفدتم
كويس من المساق و أنكم تستفيدوا منه زي ما قلنا في
البدايات في الـ career تبعكم وفي الشغل تبعكم لأن
احنا قلنا يمكن في بداية الفصل أن مساق الـ compiler
مش بالضرورة بس تخصصيه لـ ال compiler المفروض بكرا
إن شاء الله لو اشتغلتي في عملية البرمجة وفي الـ
software أنه تقدر تستفيدي من الـ techniques
الموجودة فيه فإن شاء الله تكونوا استفدتم منه أكيد
بنتمنالكوا كل التوفيق والنجاح وإن شاء الله دائما
نسمع عنكوا كل الأخبار الكويسة ويعطيكوا الصحة
والعافية وكل عام أنتم بخير كنت سعيد أني درسكوا خلال
الـ .. الـ .. الجامعة كام بساعة أو اتنين أو تلاتة و
إن شاء الله بنشوفكوا في المستقبل في الماجستيري إن
شاء الله موفقين ويعطيكوا ألف عافية كل عام و أنتم
بخير و تنسوناش في الدعاء تدعولنا إن شاء الله