بسم الله الرحمن الرحيم اليوم ان شاء الله بدنا نكمل
في section تلاتة اربعة ال recognition of tokens
طبعا انت من المرة اللي فاتت بدينا نشوفالـ
description تبع ال token اللي هو ال pattern على
شكل regular definition يعني خلاص أي token كان
موجود عندي المفروض اني بقدر اكتبله regular
definition وصف على شكل رياضي وهذا اللي احنا عملناه
المرة اللي فاتراليوم ان شاء الله بنحاول نستكمل
ونحاول من هذا الـ regular definition نطلع حاجة
بنسميها ال transition diagram عارفين إيش يعني ال
transition diagram؟ المفروض أخدتهوا قبل هيك يمكن
في ال VHDL تمام؟ أذكركم لو أنا مثلا في دائرة صفر و
أجى Aبروح دائرة واحد مثلا وإذا كنتش واحد و أجى B
بروح على اتنين مثلا أجى C بروح مثلا على تلاتة مثلا
فأخدت حاجة زي هيك قبل هيك هاي بنسميها احنا state
diagram او بنسميها transition diagram الحلو في ال
transition diagram انه البرمجة تبعتها systematic
وسهلة جدا ليش؟ لأنه انا ببساطة كل ال code هيكون if
else ليش؟ لأنه لو انا مثلا في دائرة صفر و اجى
input a و انا هروح هقوله خلاص بصير في دائرة واحد
خلص code الصفرالان انا بدأ اعمل code لواحد اذا انا
في دائرة واحد واجه C بده اروح على تلاتة else اجه B
بده اروح على دائرة اتنين else طبعا error مافيش
مكان يروح من واحد فخلصت دائرة واحد لو انا مثلا في
دائرة تلاتة بكمل يعني المقصد ان ال transition
diagram برمجته سهلة جدا و systematic ومافيش فيها
اشي كل قصتها switch او cases او if else باختصارو
لأن برمجتها سهل بدنا نحاول اليوم نتعلم كيف انا من
ال regular definition احصل على هذا الشكل طبعا انا
ليش بدي اعمل هذا الكلام احنا قلنا انه بدنا نحاول
ال computer بشكل systematic يفهم ال token و يتعامل
معاه مش هيك ولا لأ فاحنا روحنا اول خطوة عملناها
عملنا regular definitionالمفروض عشان يقدر
الكمبيوتر يستوعب ويعمل ال coding ويتعامل ويتعرف
على ال tokens المفروض أشوف صورة أسهل للكمبيوتر من
ال regular definition علشان هيك لازم يكون فيه
مقدرة أن نحول من صورة ال regular definition
المعادلات الرياضية بطريقة ما نحولها لوين؟لل state
diagram إذا نجحنا و حولناها لل state diagram أصبح
عملية ال coding تبع ال lexical أسهل بكثير لأنه صار
يعمل coding لدوائر switch if else فانا بكون بسط ل
problem لكن افترضي هذا مش موجود واكتفيت بالمعادلة
الرياضية صعب أطلع code و أبرمج مش أنه مستحيل صعب
يعني اما انت شفتي مثلا تعريف ال ID كان عبارة عن
letter بعدين افتحي ghost concatenation مع letter
or digit الكل closureفهذا كان definition فتخيلي
أنه أنا قدرت هذه الصورة أحصل فيها على هذا الشكل
مثلًا لو بقدر هتقوللي أكيد أبرمج من هنا أسهل من ما
أروح أبرمج من هناك لأن هناك ممكن التعقيدات تزيد في
closure و concatenation و combination من العمليات
و قصص كتيرة صح ولا لأ فممكن إذا احنا قدرنا نوصل من
هذه الصورة لهذه الصورة أتوقع ال code ماله مش هيصير
أسهل وعملية الحصول عليه أسهل وشكل systematic عشانك
احنا دورنا في section تلاتة أربعة بدنا نشوف بالفعل
كيف كل regular definition كيف ممكن تحوليه ل
Transient diagram هاي اللي بناخده في الجزء الأول
محاضرة اليوم ان كل regular definition احنا نعمل
فيه نحوله لهذه الصورة واضحة ليش نحول لهذه الصورةفي
الطريق ان انا اعمل code lexical سهل بشكل
systematic هي كل الهدف تبعنا فلازم اشوف طب كيف من
ال regular definition انا بوصل للمكان هذا تعالوا
نشوف طبعا عشان نشوف هو بدأ بمثال سهل جدا قال
اعتبري ان انا عندي هذا ال grammar موجودأول خطوة
عشان نشتغل Calexical لازم أعرف مين ال tokens اللي
هان مش هيك؟ عشان أحطلها التعريفات وعشان أقدر
أجيبلها ال state diagram و بعدين أقدر ايش؟ أعمل ال
code مش هي الخطوات تبعتنا؟ الآن مين ال tokens اللي
موجودين هان؟ هتقوليلي معلومات سابقة ال Fو ال then
و ال else و ال ID و ال number و ال reload هي هتقول
كل هدول ال tokens اللي هنا صح ولا لأ طيب الآن إيش
بدنا نسوي بعد هيك المفروض أعمل regular definition
لمين لكل token موجود عندي مش تعلمناها ده المحاضرة
السابقة يعني أنت المفروض عندك المقدرة الآن ال 6
tokens اللي موجودين هدول تعمل إيه لهم regular
definition من المحاضرة السابقة يعني مثلا ال F إيش
ال regular definition تبعها هيقولي سهلة سهم IFالـ
VIN سهم T-H-E-N الـ L's سهم E-L-S-E ال number
أخدناها المرة اللي فاتت ال ID أخدناها المرة اللي
فاتت يمكن اللي زاد علينا المرة اللي فاتت مش رفنعوش
reloadكيف نعمل تعريف للريلوب؟ طب عندك تسألني في
الأول كواصف شو هو الريلوب؟ أنا الجواب الريلوب هو
أصغر أصغر أو يساوي أكبر أكبر أو يساوي لا يساوي أو
يساوي إذا كيف تعمل ال definition؟ أه كيف تعمل ال
definition للريلوب؟ concatenation ولا or؟ or خلاص
هتقولي اللي الريلوب سهم أكبر أو أصغر أوأو يساوي أو
أكبر أو يساوي أو يساوي أو لا يساوي صح ولا لا؟ فكله
هيصير إيش عندك؟ عملية or فانت بتكون هيوصفتي ال
language فزي ما تم لحظة أن عملية إن أعمل regular
definition موضوع simple خالص مش صعب و خصوصا إنه
يرتكز على بس تلت عملياترئيسية اللي هي ال
concatenation و ال or اللي هي ال union و ال
closure يعني مافيش عندى حاجات كتير بتعمل منها هذه
العمليات هما تلت شغلات combination منهم بطلّع أي
regular definition بديها بطلّع أي token بديها
فالعملية أسهل بكتير تمام بس أنا بحاول أسهلها أكثر
مش لأيلي ك human لل computer عشان هيك أنا مضطر
أحاول أنتقل لهذه الصورة عشان ال computer يقدر
يستوعب هذا الشكل و يقدر يعمله coding لأن هذا الشكل
أسهل لل computer من شكل regular definitionأنا
بالنسبة لي ك human مابتفرجش معايا أنا بقدر أحل على
regular exception على طول و بقدر أحل على هدى على
طول لكن إذا بدي إشي systematic و ال computer لحاله
يعمل generation ل code لأ لازم أنا أمشي في خطوات
تسهل العملية واضحة؟ طيب تعالوا الآن نشوف ال
definitions هيهم بناء على المحاضرة السابقة هي كل
ال definitions ال tokens اللي شفناهم في ال grammar
اللي قبل شويةطبعا عرف ال number عرف ال letter عرف
ال ID عرف ال F عرف ال then عرف ال else وعرف ال
reload اللي هي عبارة عن oring لهدول طيب تعالوا
الآن نشوف الخطوة المهمة اللي بنتكلم فيها كيف أنا
أقدر أعمل ال transition diagram أو ال state
diagram لكل token يعني أنا عندي كام token هنا؟
ستة؟ مظبوط؟ طبعا هذا مش token هذا في اتجاه تعريف
ال tokenانت عندك ال token هيم هي regular
definition لل number هي regular definition لل ID
هي regular definition لل F و لل then لل else لل
reload 123456
مظبوط؟ماشى مش هتفرج معانا هم ستة لكن مش هتفرج ستة
سبعة جد ما يكون فيه tokens بعملها انا regular
definition مش هيفرج المهم انه لازم يكون فيه
regular definition طيب الان انا بدي اعطي مثال واحد
على ال relop بدي نشوف كيف ال relop هاي ال
definition تبعها كيف بدي احوله ل set diagram فإذا
انت فهمتي هذا المثال هيصير سهل عليكي اتحولي اي
واحدة من هدول بس حاولي تفهمي كيف بدي اشتغل تعالى
أوريكي كيف بدي اشتغل ال relopهتقوليلي اكيد لازم
نبدأ بدائرة بداية و اعطيها مثلا رقم صفر الان انت
من دائرة البداية بدك تقولي اذا والله اجه اصغر مثلا
ال input اذا اجه اصغر بدك تروح وين على دائرة ايش
دارة مثلا رقم واحد اللي هي دارة الأصغر، مظبوط؟ لكن
أنا ماقدرش أقفتي و أقول أنه خلاص لجيت إشارة أصغر
لأنه وارد جدا يكون وراها يساوي عشانكي لازم أنا
أفحص و أكمل على حسب الموجود فعشانكي أنا هكمل و لو
كان وراها يساويالان انت خلصت الصورة لجيت عندك أصغر
أو يساوي صح ولا لأ عشان هيك ايش بقول بميز الدويرة
هذه بدورتين في بعض الدورتين في بعض معناهم ان هذه
acceptance state معناه ان هذه لجت عندها token يعني
انا مش هوصل رقم مثلا اديها رقم اتنين انا مش هوصل
اتنين الا اذا شفت أصغر وشفت يساوييعني بالعربي ان
انا وصلت اتنين صار في عندي token اللي هو less or
equal صح ولا لأ علشان هيك انا ايش ال code اللي بدي
اسويه عند اتنين لو بدي اعمل code بقوله بس بدي اعمل
return مش هيك مش عارف ارجع في الآخر ال token اللي
هو reload طب هل اعطيله valueلأنه طالما مجموعة لازم
يكون له attribute مين اللي انا بدي ارجعه مين اللي
انت لاجيته الأصغر أو يساوي ولا الأكبر ولا الأكبر
يساوي فلازم انا أيش أسويه اعطيله attribute value
انا هاكتب هيك less or equal طبعا مسموح نكتب أسماء
زي true و false و return و else و return مسموح
بالشرط تكون عاملة تعريف ال tag فوق ان ال L T
وتديها رقم فانا خلاص هعتبر ان احنا عاملين ال L T
برقم فوق و بقى بتستخدمها عادي بس تتذكر يا دي
المعلومات السابقة تمام؟ اذا انا لو وصلت لدائرة
اتنين كل اللي هسويه reload طيب بدي اذكرك عدي شغلة
مهمةالمعلومات هذه من وين بيقراها؟ يعني لما أنا
بكون في state zero بتاع وإيش بقول؟ لو أجى input
أصغر، بدي أروح لواحد، مش هيقولنا؟ وإذا أجى input
ورايه ساوى، بدي أروح لاتنين، بعدين أقول له return
إني لجيت reload وين هذا بقراه؟ من وين بقراه
الأصغر؟ وين موجود؟ في keyboard؟ في ملاف؟ في
buffer؟في ال buffer مش احنا اتفجنا عشان نفهم القصة
بالكامل انه بروح على الملف اللي بدوي فيه على ال
tokens بقرا كل ال characters و بحطهم في ال buffer
فممكن أصغر كان هنا أو يساوي و مش بيكون فيه لقسيم
beginاتفاجنا ال exam begin و بكون ال forward اللي
بيبدأ معاه ففعليا هذه قيم من؟ ال forward فانا لو
ال forward أصغر إيش بيصير في ال forward؟ بيمشي
خطوة ال forward صح ولا لأ لكن بكون في دائرة واحد
فمين في ال forward اللي ورايا؟ ال يساوي فلما بيجرى
ال forward اللي ورايا طبعا ال forward أشماله هيمشي
هنا لكن أنا بكون وين وصلتأتنين فبيقولوا لاجيه ال
token أزرع ويساوي فخلاص ال forward بيجيب هنا انه
خلاص لاجيه ال token فأكيد لازم في عملية في البرمجة
تصير انه لازم أحرك ال axiom begin لمين للمكان
الجديد عشان يبدأ يدور من الجديد فما تنسيش هذه
المعلومة ان ال characters هدول اللي أنا جاعة بدور
وين ال token تبع من وين بيجيه بيجيه من ال forward
اللي أخدناها قبل هيك في ال buffer لأن العلاقات
كلها في بعضها هذا كله مندمش في بعض الموضوعواضحة؟
مش أخدنا قبل هيك في section 2 ال buffer قولنا
بناخد من الملف و بحط فيه ال buffer و بنصير نقرأ
character character من ال buffer صح ولا لأ فعملية
التعرف على ال token الآن على شكل Transient Diagram
زي هيك مش صعبة انا ببدأ .. هيك بتبدأ القصة انا
ببدأ من D على Zero و ال exceed begin واقف هنا و ال
forward واقف في بدايته ايش ال forward؟ اصغر هتعملي
effects والله إذا ال forward أصغر إيش بقولك
الجواب؟ روحي على واحد خلاصماذا يحصل في ال forward
عندما أجدك؟ يمشي خطوة عشان يشوف ال letter .. ال
character اللي وراه الآن صار على يساوي صح؟ الآن مش
بقوله إذا كنت أنا في واحد و كان ال forward يساوي و
أروح على اتنين و بمشي ال forward معله .. خطوة لكن
خلاص اتنين إيش هتسوي؟ هتطلعني من كل ال code لأنها
لقطت token فبتعمل return طب بدأ أسأل سؤال جدلي هنا
شوية على فرض إنه أنا كنت في واحد تمام؟وماجانيش
اليساوي مثلا اجاني اي character غير اليساوي ايش
بدك تسوي؟ بدك ترجعي انك لجيتي اصغر عشان كيف
تتمثليها بدك تقول اذا اجا other اذا اجا other يعني
مش يساوي في الحالة هذه ايش الدائرة التلاتة بتكون
مثلا return reload
less than شوفتي كيف؟ شوفتي؟ فخلاص بس في مشكلة هنا
إيش المشكلة؟ إنه أنا صارت ماشي forward مش صار ماشي
خطوة ال forward فبتروح مني هذه عشانك بنعلمي بنجمة
هنا إيش النجمة هذه معناها؟ إنه في character زيادة
أنا مشيت عليه لازم نرجع نفحصه كمان شوية عشان هيك
المفروض لما بنفذ ال code هنا لازم في الأول أخد
بالي إن ال forward لازم شمالهيرجع و حقيقة كمان مش
بس ال forward بيرجع كمان ال xin begin بعد ما بلاقي
ال token ايش بيسوي ال xin begin بمشي عشان يبدأ
يبحث في اللفة الجديدة ال token الجديد مش انا مش
كان ال xin begin واقف على أصغر و وصل لهنا ال
forward خلاص لجأ لما وصل لجأ مش يساوي لجأ اي حاجة
other لجأ انا مثلا كانت بضربمش ال token اللي
لاجيناه؟ مش الأصغر؟ فبديقول return أصغر صح ولا لأ
الآن ال forward و ال Xen begin وين بيروحوا؟ بيمشوا
هنا يعني خلاص بالعربي بدهم يمشوا على اللي بعد عشان
المرة الجاية يبدأ ال Xen begin من مكان جديد و يبدأ
يطلع منه ال forward دائما يا بنات ال forward ببدأ
من مطرح ال Xen begin هذا ال forward حدود ال token
فلازم ال Xen begin يجف على المكان اللي بدأ أفحصه
بثبتالان ال forward بيصير يمشي بالدور بيصير يمشي
بيصير يمشي بيصير يمشي بدور على ال token إن لجأ ال
token و خلص حين عرفت بدايته و نهايته فبدأ أرجعه
لكن إيش بدأ أساوي عشان ألف لفة جديدة صح؟ بدأ أمشي
ال begin لورا ال forward إذا ماكانش ماشي زيادة إذا
كان ماشي زيادة برجعه و ببدأ ال begin من مطر احنا
رجعته ليش؟ علشان نقدر نكمل مايضيعش مني ولا
character طب أنا كيف أعرف حالي ماشيت زيادة ولا لأ؟
إذا حطيت النجمةهذه شايفة تغيّر أنا ماحطتش نجمة ليش
ماحطتش نجمة لإن أنا مامشيتش زيادة ماشيت أصغر ماشيت
يساوي قولتله يعطيك العافية لجيت ال token لكن هنا
ماشيت other إيش يعني other يعني حاجة أجت بعد
الأصغر مش يساوي شوفت كيف فصار واصل هنا هذا انفحص
ولا لا ال otherمانفحصش مش انت هترجح لاجيت ال token
هذا طب هذا الدرب اللي كان هنا مش مانفحصش مايمكن
يكون token تاني عشان هيك ايش النجمهي معناها انه
لما تفحص المرة الجاية لازم ترجع خطوة خلاص أيوة
يعني خلاص انت لاجيت الأصغر ارجع خطوة يعطيك العافية
رجع الأصغر وبدأ من وراه ماضياش الدرب هي الفكرة
تبعتها طيب على كل حوالي هذا النقطة هرجعلها
بالتفصيل المميل بس خليني انا اوضحالنقطة أهم منها
بعد ما نرجعلها تاني او ذكروني اذا ما رجعتش تاني
احنا بس طب هذا صح لأن في عندك لو اطلعت شوية وارد
جدايجيني لا يساوي هذا معناه لا يساوي في ال
language تمام؟ فوارد جدا أنه أشوف بعد إشارة الأصغر
اليساوي وهذا له معنى أنه لجيت less or equal وورد
يجيني إشارة الأكبر وهذا معناه أنه لجيت not equal
إذا ما جوش الأثنين هذول بتظهر الخيار الأخير اللي
هو ال less ده عشان ذلك لازم أنا هنا برضه أعمل إذا
أجى أكبر أعمل دويرة جديدة يعني خليني أقول هذه
تلاتة هذه أربعة مش مشكلة الترقيم و أجي أقول أنا
return لمين يا بنات؟relope اللي هي نية not equal
شايفة كده فعملتها سهلة الشجرة جدا سهلة ال state
diagram أنا بدأت من zero إذا جاني أصغر لسه مقدرش
أفتي فيها مقدرش أقول اللي جيت أصغر لأن word يجيني
يساوي و تسير أذره يساوي و word يجيني إشارة ال إيش
الأكبر هذه في ال language هذه معناها انها not
equalطب لا أجت هاي ولا أجت هاي ماضلش قدامي غير
إنها كانت أصغر بس بكون ماشي إيش هنا خطوة زيادة
other فبحط نجمة عشان أعمل indication أنه لأ لازم
أنا أرجع خطوة عن هذا ال character عشان أفحصه المرة
الجاية هي كل الفكرة باختصار طيب الآن أنا في zero
ماجهاش أصغر أجه أكبر هتعمل حاجة بنفس الفكرة هتقولي
هروح أحنا ندورهاجديدا، صح؟ طب هل هتفتح و تقولي هذه
acceptance؟ لأ، لأن ممكن ورد يجي يساوي وراها، صح
ولا لأ؟ فبكمل، بقول لو أجي يساوي وراها، بيصير عندي
acceptance، و إيش؟ بقوله return لمين؟ تجدوا مش
محلول هذا يا بنات، بس حاولوا تتركزوا و تفهموا
معايا، تمام؟ الان بتشوفوا حلو، محلول في الكتاب
المهم أكبر أو يساوي، إيش هتروح ترجع هنا؟ return,
greater or equalطيب افرضي من هان ما جاش يساوي أجه
طبعا other أي حاجة تانية هتعملي دورتين و نجمة عشان
تقولي أن هذا مانفحصش عشان يرجع عنه للمرة الجاية و
تعملي return لمين أنه لقيت greater than اللي هي
هذهشوفتي كده؟ هذه مانفحصتش عشان انا حطيت نجمة ان
هذا لازم ايش ارجع عليه في اللفة الجاية طب هيك
خلصنا ولا ضايل فيه إشي؟ ضال يساوي، مش هيك؟ هاي إذا
أصغر، عرفتي وين هروح، هاي في أصغر أصغر يساوي،
هاتين تان خلصتهم، وإذا أكبر، او sorry تلاتة هم،
هاي تلاتة خلصتهم، و بعدين هاي و هاي، هيك خلصتهم،
مظبوط؟ ضالت اليساوي لحالي، صح؟ عشان هيك إيش بقول،
إذا أجى يساوي على طولبدي أعمل خلاص return equal
خلصت طب افترضي لو في لغة زي الـC الجابة ولا الـC
كانت موجودة يساوي يساوي هيك شكلها ساعتها أنا مش
هقدر أمشي هكمل يساوي و بعدين أعمل مافيش داعي لأدار
إلا إذا كانت هذه موجودة إذا التنتين موجودين إذا
هذه و هذه موجودين ساعتها لازم يكون أداريعني افترض
فيه يساوي و فيه يساوي يساوي طب هذا مش موجود بس
بقول على سبيل المثال لو موجودين ساعتها هتسيه اللي
بتقول هنا لو أجى كمان يساوي فيه إشي تاني و لو أجى
other بتظهر يساوي لحالي طب افترض هنا مش هتحط يساوي
لحالي مش هتحطي هذا ال other يعني الفكرة أنه سهل
جدا أعمل من ال .. ال .. ال definition لل state
diagram بتبقى شاشة هال طول وين الدوار اللي عندي
بعمل ال state diagram و بخلصه طبعا الآن موضوع
الترتيب الأرقامحرة انت فيهم يعني انا مش شرط امشي
صفر واحد اتنين تلاتة الان ممكن الكتاب يعمل ترقيم
تاني ممكن اقول صفر واحد اتنين تلاتة اربع اتنين مش
مشكلت اي ترقيم اعمليه ما انت في الآخر هتبرمجيه حسب
الترقيم اللي انت سويته طبعا طب الان انا هذه لو بدا
برمجها يا بنات كيف بدا برمجها هذه الرسمة كلها
هتعملها بال C ولا بأي الأجد هتقوليلي سهل جدا
هتقوليلي switch ال state اللي انت فيها case zero
طبعا إذا أنا الآن في state 0 خلاص، إيش هذا؟ مالـ
switch لمين؟ لل forward يعني افترضي أنا بدأت من
state 0 خلاص، مش بتفحص ال edge إيش عليه؟ عشان أعرف
أين بدي أروح ال edge مش هو ال forward اللي في ال
bufferمظلوط ولا لا؟ فبقوله إذا ال forward أو إذا
ال input يا ستي زي ما بديك أصغر وأنا في state zero
إيش ال state الجديدة؟ خلاص هيعطيك إيه .. اه else
if لسه أكبر إيش ال state الجديدة؟ حسب رقم هذي
تبريها رقم 100 مثلا، هتقولي ال state صارت 100else
if يساوي state مثلا خمسين هروح على الست خمسين else
error مافيش صح؟ يعني إذا أصغر في مكان إذا أكبر في
مكان إذا يساوي في مكان طب هو character لمش منها
دول error معناه مش موجود عندى هذا ال token شفتي
كيف؟ طيب افترضي بدنا نعمل ال state ميةكيف
بتبرمجيها؟ انا في ال state مية هتقولي if ال
forward يساوي روح على ال state هذه else if other
روح على ال state هذه أو حتى else بدون else if ما
خلاص else يعني على طول هذه ماضلش مافيش error هنا
يا هان يا هان شوفتي كيف؟ أنا هنا برجعش forward لأ
بدي برمج هذه إشي تاني لإنت برمج هذهالان برمجة هذه
مافيها إشي مافيها نجمة و لا غيره if forward يساوي
روح لهذه الدائرة else روح لهذه الدائرة تعالي طب
نبرمج هذه الدائرة هذه الدائرة إيش ده برمجها؟ خلاص
مابديش إشي بدي أرجع، return, reload, greater or
equal صح؟ طيب هذه كيف نبرمجها؟ أه فيه نجمةيبقى
لازم قبل ما اقوله return بتقوله retract ارجع خطوة
لأنه في هذا character ال forward لازم يرجع عليه
عشان نفحصه طب خلاص عمل ال retract يعني رجع عنه
خلاص إيش بقوله الآن return اني لجيت reload greater
than باختصار شوفتي كيف؟ طيب تعالوا نشوف كيف الكتاب
عمل بالأرقام هذا المثال قالك هيو باختصار
مش صعب خالص جالك أنا مرشح من zero يكون عندى أصغر
من البداية أو يساوي أو أكبر هاي باختصار طبعا طيب
الآن طلع لما عمل الأصغر إيش جال أول شيأنا في zero
إذا كان أصغر إيش هتقولي في codeك؟ خلاص لل set واحد
ويعطيك العافية هيك خلص code ال zero else if يساوي
codeك إيش صار؟ خمسة else if أكبر codeك إيش صار؟
خلاص خلص code ال zero إنتهى فإنتي أي دائرة الآن
automatic بتعملين ال code تبعها يعني الآن لو بدي
code تلاتة شو يقول code تلاتة؟ خلاص return reload
not equal على أساس الـ not equal المعرفة فوق برقم
في ال tag طيب بدي دائرة مثلا تمانية إيش كودها؟لأنه
في نجمة Retract ارجع خطوة عشان ما يضيعش ال other
هذا عشان انا ا .. افحصه المرة الجاية فبقوله
Retract يعني رجع مؤشر اللي في جوا ال buffer راجعه
خطوة خلاص لأنه اللي جاى هذا بينفحص تمام؟ و بعدين
ايش بقوله؟ Return Relop Greater Than هذه القصة
سهلة فلحظ الانتقال من ال regular definition بتاع
ال Relop لرسمة ال Relop ولا حاجة سهلة جدا مافيش
فيه اشي مباشرةوهذا ال code هو كمان شويه هنشوفه
هيكون أسل و أسل ال code تبعه، فيه له code، تمام؟
خلينا نشوف ال code بالمرة عشان نختم النقطة هذه
تعالي أوريكي ال code بالمرة، هاي ال code قدام، بس
هنرجع لكل هذا اللي سيبناه طلع على ال code، إيش
بقول ال code؟ شاف ال code ما أسله؟ طلع، إيش بقوله؟
بقولك أنا عنديfunction بتترج في الآخر token من نوع
reload لأن هذا تعريف لل reload اتطلع أول ما بدأ
وين بدأ Galaxy switch state يعني أنت في أي state
واقف أنا واقف في ال state الأولى Zero تمام؟ دي
بتاعة ال reload الان إيش تجتعملي؟ if else إيش ال
input؟ عشان أعرف أين بده روح فإيش جالك Galaxy C
تساوي next car؟ طبعا احنا ال C من وين بنجيب قيمتها
المفروض؟ من ال buffer ال forward هو هنا ممكن تجيبه
من keyboardبس احنا الصح من وين بيجيه من ال buffer
ال forward اللي كنا نتكلم عنه فبده يفحص هذا ال
forward شو هو إذا لجأ هذا ال forward أصغر إيش
بيقوله ال state الجديدة تبعتي؟ واحد طبعا بنرجع
للرسمة و نشوف اللي قبل شوية تحت الكتاب إيش كان
بروحه؟ واحد طيب إذا كانت ال state يساوي وين بيروح؟
على خمسة إذا كانت ال state أكبر وين بيروح؟ على ستة
else؟ فين؟شوفتي هي للي ناس اللي نسيين هاي الرسمة
هاي الرسمة طلع شوفي ها أنا في zero الأصغر راح وين؟
و اليسار راح وين؟ و الأكبر راح وين؟ ستة و الالس
راح وين؟ فال لإن مافيش شيهانة صح ولا لا؟ دائرة
تمانية إيش كودها؟ عشان مكتوبة برضهretract وretire
وreturn يعني صح تعالى هاي ال code يعني واضح ان ال
code مافيش فيه اشي سهل خالص هاي شايفة هاي اللي قبل
شوية را على واحد وخمسة وستة و errorو بعدين case
تمانية طبعا هو ماحلوش كله انت طبعا لازم كل الدوائر
اللي في الرسمة كلها من ألفها إليها كل دائرة
عمليلها codeها هو أخد هنا ك sample دائرة صفر و
دائرة تمانية بس و جالك ما هي نفس الجثة هتكون في كل
الدوائر if else و خلصناه دائرة تمانية هي دائرة
تمانية ايش دائرة تمانية؟شافش عمل؟ retract ليش عمل
retract؟ لأنه عليها نجمة لأنه كان ماشي خطوة زيادة
فال forward لازم ما يضيعش هذا ال character يرجع
عنه عشان يفحصه المرة اللي جاية طبعا في كل مرة ببدأ
فيها البرنامج يفحص ال forward و ال extreme begin
يكونوا مع بعضفبمشي ال forward بالدور لما يلاقي ال
token بوقف إن كان ماشي الزيادة برجع عنه عشان ال
Xيم اللي مارجعه ال begin يبدأ من أول character
وراه فماتنسيش القصة هذه على كل أحوال فقال لي
retract و بعدين خلاص إيش بترجع؟ reload اللي هو ال
token اللي هو ال attribute تبعه GT طبعا هان عمل
class سماها read token تمام عشان إيش؟ يحط التعريف
تبعه فيه واضحة تهان؟ في أي مشاكل؟في مشاكل؟ ما انت
لو درست درس ال buffer و متذكرة بتقوليش جهازك انا
بذكرك بتتذكر أيام ما كنا جاب المحاضرتين قولنا في
bufferعشان نسرع العملية تاعة القراعة من الملف فانا
بروح على الملف بقرا كل ال characters مرة واحدة و
بنيجي و بنكتبهم hand مش هيك في نص البفر الأول
فممكن كان في أصغر يساوي X Y المهم فيه كلام كتير مش
هيك؟ قولنا عشان أنا أتعرف على ال token ك human
اشتغلت في عندي الaxiom begin وفي عندي ال forward
قلنا لك سين بيجين و ال forward بيبدو مع بعض بعدين
بمشي ال forward خطوة و خطوة و خطوة لغاية ما يلاقي
detection لل token بمجرد ما يلاقي ال token خلاص
عرفت بدايته و نهايته بروح برجعه و ببدأ لك سين
بيجين من ورا هذا زمان كنت أشتغله ك humanاليوم لأ
بصير اشتغله ك state diagram انه خلاص ك state
diagram ببدأ من دائرة zero اللي هي ال extreme
begin و ال forward و اكفيه مع بعض الان ببدأ ال
forward يقولي ايش ال character اللي عنده بدأ منه
بعرف اي دائرة هروح فال forward افرضي كان اصغر
معناه ان انا روحت دائرة واحد ال forward مش بيصير
فيهبمشي عالي وراه لاجى يساوي بمشي عالي وراه خلاص
الآن لاجيت ال token فبدأ أقوله ارجع ان لاجيت كذا
طبعا في اللفة الجديدة المفروض ال begin يمشي ورا
الأصغر أو يساوي و ال forward يبدأ من جديد عشان
يلاقي token جديدفهيك العملية بتصير باستمرار بالظبط
لازم يبدأ من ورا ال token اللي جاء في عندنا مشكلة
انه لما بكون فيه لجمة معناها ال forward ماشي خطوة
زيادة عن ال token فبتصير حدود ال token ماشي عنها
خطوة فبنقوله ارجع خطوة عشان اعرف حدود ال token
الصحيحة و اللفة الجديدة يبدأ ال begin من وراها و
بتبقى العملية automatic باستمرار واضحة الأمور تمام
ايه ده الشيء يا عمارليش؟ لأنه انت بدك ترجع في
الآخر مش هي كأحنا شغلنا في شبطر اتنين كنا نرجع ال
token اللي بنلاقيه لما كنا نلاقي token من نوع
number مش انا عملتله class ل number لما كنا نلاقي
token من نوع ID مش عملتله class لل ID طب اليوم في
token جديد من نوع reloadفالمفروض ان انا اعمل class
لهذا الـ Relop اسمه Red Token فهمتي كيف؟ Relop
Token يعني بس لل relation مشكلة لازم نعمل class
فهو بيقولك فرصة عملنا class هينوعه Return Token
طبعا هذا اكيد هيورثالـ token الأساسي و يضيف عليه
ال value بتاعة less than أو greater than أو الاخره
او الليكسيم تبعه تمام؟ لأنه فيه الليكسيم أكبر أو
أكبر و ساوة okay طيب في أي سؤال لحد هان؟ طيب الحلو
في الموضوع الآن من هذا المثال المفروض أي regular
definition أوريكيها تعمليلي على طول إيه؟ال estate
diagram سهل العملية تعالوا ناخد كل الموجودين و
نشوف كيف نعملهم ال estate و نتكلم بعض الملاحظات
على كل واحدة طبعا بعضهم ممكن يصعبوا ال estate
يسهلوا لكن in general العملية سهلة تعالوا
الآن نشوف ال token اللي ورا اللي هو ال ID هي هي ال
regular definition بتاع ال ID
هذا ال ID شايفينه؟ شايفين هذا ال ID؟ تمام؟ كيف
بدنا نعمله الدوائر تبعته؟ إيش رأيك؟ أكيد في الأول
هتقوليلي بلزمني start جديدة صح؟ بلزمني start جديدة
غير ال start هاي مش هاد ال start كانت لمين؟ لل
reloadو خلصت ال definition كامل و عملت هذا ال
definition transition كامل ال diagram كامل صح ولا
لاالان بدك تبدى تعمل ال definition لمين او state
لمين لل ID فلازم تحطي رقم start طبعا الرقم من وين
هيبدأ يا بنات؟ ايش اخر رقم انت شوفتيه هنا؟ كان
تمانية يبقى بدك تبدى بالرقم الجديد هل استطيع ان
استخدم رقم الموجودين؟ لأ لأن هذا شغله حاله مخصص
فماقدرش استخدم نفس الرقم لازم اعمل رقم جديد طبعا
مش شرط امشي sequential يعني اخر شي تمانية انا حور
بدي ابدا من عشرينانت حرة، شوفتي كيف؟ لكن احنا
بنبدأ، ما نبدأاش بالترتيب فهنا خلصوا من التمانية،
بقول مثلا ال start الجديدة من وينتسعة طب و واحدة
ممكن تسأل تقول طب أنا مش حابب أبدأ بال .. بال
Relop حابب أبدأ بال ID بمشي ال .. ابدأ من Zero و
اعمل الشجرة ال ID أو ال state diagram بتاع ال ID و
بعدين ابدأ في ال .. في ال baguette فانت حرة في
الترتيب المهم أنه كل token كل regular definition
له state diagram خاصة فيه ب .. بدايتهواضحيت؟ الآن
ال ID كيف بدنا نشتغل؟ اه ايش رأيك؟ من تسعة هنبدأ
كيف بدنا نشتغل في ال ID؟ هتقولي researcher letter
هروح ل state مثلا عشرة، طيب؟ بعدين letter أو
digit، ضلك في ال state عشرة، مش هيك؟ لأنه خلق
letter أو digit، letter و digit شعمل ال state
الزيادة، ما تتكلفني ال code الزيادة لأمتى بنظلنا
هيك؟ لما يجي other
acceptance و نجمة يعني انت بدأت من تسعة أجى letter
روحت على عشرة أجى letter على عشرة letter عشرة
digit عشرة letter عشرة انت لسه قاعد بتلف أجى حاجة
مش letter و مش digit خلاص واضح انه لجيت ال ID
فبيجي other عدعشان هيك اش بقوله ليش حطت النجمة
عشان افهمهم انه انا مشيت خطوة زيادة هذا ال other
اللي هو مش letter ولا digit لازم ينفحص في المرة
الجاية لازم ارجع عنه مضيعوش عشان هيك بنحط النجمة و
بنقول خلاص وصلنا طبعا انت مش هتوصل ال 11 إلا إذا
لجينا identifier طب السؤال إيش بدنا نعمل في الحالة
هاي return إيش ID طب ميمكن ال ID موجود شفناها قبل
هيكبنحطه في ال table؟ طبعا .. طبعا بدي أذاكرك الآن
بشغلة مهمة هنا يعطي العافية وصل لمرحلة أنه لجأة
التكم موجود الآن إيش بدنا نعمل؟ بدنا نعمل كنا
الكلام نسويه زمان إيش كنا نسويه زمان؟ أجيب ال
symbol table هل هذا موجود جوا لو مش موجود جوا؟ إذا
موجود جوا رجعيه زي ما هو إذا مش موجود جوا روح
وحطيه ورجع ال reference اللي عليه صار لأ فمتنسيش
هذا الكلام اللي بدنا نسويهالكلام السابق بيروحش
بضيعش بظال موجود انت بس هذا وظيفته انه لجالك تكل
من نوع كلمة هيك بده يقوللي طب شو هي الكلمة؟ كيف
بتعرفها؟ شو تفاصيلها؟ لازم أرجع لمين؟ لل symbol
table اللي أنا عامله أدور على هذه الكلمة هل هي
موجودة جوا ولا لأ إذا موجودة جوابرجح و بقوله
لجيتلك الكلمة الفلانية اللي هي في ال symbol table
في المكان الفلاني ياضينا العافية خلصنا من ال
lexical مش الكلام مش غير lexical طيب مالجههاش جوا
مالجههاش جوا إيش بدنا نسوي بدنا نضيفها جوا و
رجعليها to kill فهذا كله أنا بدي أسويه الكلام طبعا
الكتاب شوف كيف عبر عنها شايف
إيش عبر عنها قال ثاني
شوف إيش عمل؟ الكتاب إيش عمل؟ استخدم functionين إيش
ال function الأولى بتسوي ال get token؟ بيروح بدور
في ال symbol table إن لجهها هيرجّها ويعطينا
العافية طب ما لجهاش نهار بتيجي ال function التاني
ال install إنه هذا معناه ID بدي أخزنه و أرجعه طبعا
انت مش ملزمة تعمل زي الكتاب ال two functions انت
قاعد تعمل function واحدةاللي هي إيش هيسوي هيروح
يدور في ال symbol table ان لجاها يرجعها مالجهاش
بيخزنها و بيرجعها فالمهم أنه في task لازم تقومي
فيه .. هذه اللي بتواصلكيها رسالة في task لازم
تعمليها قبل ما تقولي return .. return لازم ترجعي
هذا بس إيش ساعدك؟ هذا بس ساعدك أنه لجا الكلمة بس
لكن لسه مش عارف هل هي الكلمة keyword؟هل هي الكلمة
identifier؟ مش عارفين كيف كنا بدنا نعرف ان احنا
قبل هيك مش كان احد ال solution ان انا اعمل set up
لل symbol table و احط فيه في الأول كل ال keywords
و ارتاح منهم و بعدين أسير أدور على الكلمة اللي
لجيتها ان موجودة برجعها زي ما هي مش هي اللي كنا
نقول و ان مش موجودة بضيفه برجعها فهذا الكلام ما
اتغيرفهذا أول solution .. هذا أول حل أن الكلمة هذه
بقدر أتعرف على تفاصيلها من خلال هذا ال symbol
table اللي أنا عامله من أول وحاجز فيه كل ال
keywords طبعا الان هو جسم الشغل هنا على شكل
functions مش أكترعلى أساس إن هاي بس وظيفتها إيش
يدور في ال symbol table لجاها رجعها خلصنا مالجاها
عشان رجعة null بقول بس تدعمين ال install ID إيش
بتسوي ال install ID؟ بتروح بتحطها جوا و بترجعها
نفس ال install ID فانتي مخيرة بديك تعملي function
واحد لك كل ال task تعمليه ثلاثة functions، two
functions هذا أشي برجعلك، هذا أشي برمجي لكن لازم
تعملي ال task المطلوبة طيب الآن بس في إشي مهمجابن
ما أخليك تسألي لو رجعنا لل definition تبع ال then
مش فيه then قبل شوية شوفتها؟ كيف أعمللها ال state
diagram تبعها لل then؟ هتقوليلي ال state diagram
تبعها ببساطة زي هاي، صح؟ مظبوط؟
إلها startإذا أجت ال T وراها ال H وراها ال E وراها
ال N وراها ال none letter خلاص عبارة عن keyword
اسمها then يعني واضح إنه أنا كمان في عندي حل تاني
إنه جدر ما أحجز ولا keyword جوا ال symbol table و
أعمل لكل keyword step diagram step diagram step
diagram هذا حل تاني بس هو ليش ماحطش الأرقام لأن هو
فرض حلو على الحل الأولاني إنه أنا حجزته في ال
symbol table و خلصنالكن هذا solution أخر لحل مشكلة
الـ reserved words مش يقولوا ان احنا في مشكلة انه
مرات الكلمة احنا مش عارفينها ID ولا Keyword
فالجواب قال في عندي طريقتين للحل الطريقة الأولى هي
طريقتنا السابقة ان اعمل symbol table و ارايح دماغي
و احط كل ال keywords فيها و خلصنا و بصير كل كلمة
بلاجيها بدور في ال symbol table موجودة برجعها مش
موجودة بضيفه و برجعها هذا كان طريقة حلالحل الأخر
أو الطريقة الأخرى قال لك خلاص لأ بعمل لكل keyword
state diagram ل ال F بعملها state diagram ل ال V
بعملها state diagram ل ال L بعملها state diagram ل
ال I D بعملها state diagram وفي الحالة هذه أنا مش
ملزم أعمل initialization لل symbol table ولا ملزم
أحط فيه أي keyword ليش؟ لأن هذه لحالها لما يدفعو T
H E L و لا إيش إيش بقوله returnToken اسمه ذن
Retire token اسمه اف فخلاص بيكون ال state diagram
جاهز لكل ال tokens بما فيهم ال keywords فهذا حل
آخر مقترح واضحيت لكن هو هنا في الشرح استبعد الحل
هذا وضل شغال على الحل الأولاني عشانك ماحطله مش
أرقام وكمل في باقية ال token اللي في المثال طبعا
طيب ايش ضال علينا token ماخلصنهاش اللي هي ال
numberيعني احنا عملنا ال reload أول شي، مظبوط؟
وبعد ال reload بيعملنا start جديد لمن؟ لل ID و ال
F و ال Z و ال L سيعتبر ان خلاص جالك هدول اعتبرين
هم محجوزين مافيش دا اعمللهم state diagram لكن لو
بده اعمل state diagram مش صعبال F كيف لسه ال
diagram تبعها start I F none letter or digit مثلا
هي لجت ال F ال then ال else كل ال keywords بنفس
الطريقة تمام الان مين ضل لما نفسه .. ضلت ال number
صح ل .. كيف ال number نعملها تعالوا شوفوا شكلها في
الأول إذا نسيت من المحاضرة السابقة هاي ال number
للتذكير لازم يجي أرقام ثم قد يأتي fraction و قد لا
يأتي اذا أجى fraction لازم يجي ال dot وراها أرقام
وانتبهي لازم إجباري ييجي بعد ال dot أرقام هيكفى
تعريف ال number هنا يعني ممنوع أكتب خمسة و عشرين
dot و أسكت طالما ان كتب dot بيقوللي في ال language
بتاعة ال number اللي أنا شغلته لازم يجي إيش على
أقل خانة على أقل رقمكذلك الحال لل exponent إذا
كتبت ال E لازم يتكتب وراها رقم عشان يصير ال number
صحيح طب إيش بيصير لو واحد كتب هيك في الملف 25 dot
و سكت لا لا لا بيعتبر مالجهاش token هذه كلمة 21 و
25 dot بيعتبرها مش number خلاص إذا كان تعريف تاني
بياخده ولا ID بيعتبرها مش موجود مافيش token زي هيك
شوفتي كيف؟ انت بيبقى القصة هاي غلط ليش ياخد هذه
جزء مع هاي هذه جزء مع هاي النقطة هل مسموح في
البرمجة نقطة بين لحالك تكن لأفبتبترقى تعمل ال
balancing فالنقطة لحال مش مسموحة وبالتالي ال 25
نقطة ككلمة مش معرفة عنده ك number ليش؟ لأنه
بيجبرني في ال language لازم يكون بعد ال dot إيش
خانة أو رقم عارفة لو في ال language بيسمح بال dot
بدون رقم بتصير صح خلاص لازم أعمل الاشي صح لها يعني
بيصير .. بقول هنا digits أو epsilonلو بسمحلي بعد
ال dot يكون فراغ بعدل في ال regular expression انه
بقوله مش بالضرورة يجي رقم ممكن يجي فراغ هيك صارت
مسموحة في ال language كمان مرة يا بنات ال regular
definition مش على كيف هو بشتغل بوصه في ال number
زي ما هو في ال language ايش مسموح و ايش مش مسموح
شفت في ال ID مسموح underscore روحنا عدلنا في ال
regular definition و حطينا ال underscore في
المجموعة بتاعة ال lettersلو مش مسموح بحطهاش الان
احنا ال number تبعنا هان لاحظي من ال definition
انه ايش بقولك ال dot لما حلش لازم يجي وراها digit
plus عارف لو كاتب هنا digit نجمة مسموح انه يصير
بعد ال dot فراغ طب هو ليش حط plus مش نجمة لأنه
ممنوع في ال language اللي احنا اشتغلناها يكون بعد
ال dot الا رقم فجال خلاص يبقى لازم digit plus
فانتبهي issue ال language نفس الكلام بيقولك بعد ال
E مش مسموح تظهر لحالها و إلا بيبطل ال token اللي
أنا عارفه إجبار يكون فيه digit عشانك برضه ماتلاقيش
عمل digit plus فانت في النهاية القصة مش اختيارية
على كيفيالقصة اختيارية على حسب ال language اللي
عندك اللي انت قاعد تشتغليها إذا هذا مسموح لازم
أعمل regular definition يسمع إذا مش مسموح لازم
أعمل regular definition لا يسمع فأنا بس من باب
التذكير بحكيلك أنه هنا في ال language اللي احنا
شرحناها أنه ممنوح ييجي بعد ال dot إلا رقم لازم
عشان يصير الرقم صحيح وإذا محطت E لازم ييجي وراها
رقمخدى نفس الكلام اللى قلته تطلع كيف عمل الزاد و
الناقص ليش عمل الزاد و الناقص مع epsilon بعد ال a
لأنه تسمح ال language انه لا تكتب زاد ولا ناقص
فروح تضفت epsilon عارفة لو ال language لا تسمح إلا
يظهر زاد أو ناقص بعد ال a مش هحط هيك هخلي زاد أو
ناقص شوفتي يعني أنا دايما بتتابع إيش ال language
بتقول كيف وصف ال token في هذا ال language ال real
difference انت بتفهمش ال real difference انت بتحط
أيه أوصف فيها ال tokenفلازم تفهم ال token إيش
المسموح فيه و إيش المش مسموح فيه عشان تقدر توصفه
بشكل سليم واضحت؟ طيب إذا وضح ال number هنا إيش
المسموح و إيش المش مسموح في مثلنا السابق إذا في
dot لازمش يكون وراها digit و إذا في E لازمش يكون
وراها digit طبعا؟ طيب تعالوا نشوف كيف بدنا نعمل ال
number إيش رأيك الشطرين هيقولوا طبعا خليني أشوفها
على المثال مباشرة مش مشكلعشان اوفر وجهة طلعي معايا
هي بتبين صعبة لكن تبعي معايا بشواش تبعي معايا
بشواش الآن احنا هنبدأ من وين يا بنات؟ من ال start
الجديدة اللي بعد 11 اللي كانت في ال ID ال start 12
الآن اش بقوله لازم ييجي digit عشان اروح ا 13إذا
أجت digit وين راح اتلت معناها بدأ ماسك في token من
نوع number طيب يعني أنا كاتب افترضي رقم خمسة
وعشرين في ال buffer هاي وماشي في ال forward لاجأ
اتنين راح وين اتلتاشر لاجأ خمسة وين بيلف جد ما
تكتبي أرقام بيلف وين مظبوط افرضي أجي بعد هي ك L
شايفة لا هي dot ولا هي ايه ايش بيسويother خلاص
بيقولي هذه ال L ممكن بيضايق أو بلاش L عشان ما
تزعليش اعتبريها يساوي يا سيبتي فهيقول خلاص هنا
واضح ان في token كان من النوع number و اليساوي
عشان ما تضيعش لازم يكون فيه retract شايفة؟ فلو أجى
بعد ال 25 أي character مش dot ولا E خلاص بيعرف
حاله لاجي عايش ال 25 هذه باختصار مظبوط؟ وهذا بتكون
رقم انتجر طيب لكن افترضي أجىDot ايش بيقوللي روح ل
14 بس بيقوللي لازم بعد ال dot يجي ايش رقم ليش؟
عشان يوصل ل 15 عارف لو اجي بعدك يساوي؟ بيطلع
بيقولك لجيت رقم طبعا بيدي يرجع عنه صح ولا لأ طيب
سؤالي اليك راجعيني ل ال dot كمان مرة راجعيني ل ال
dot كمان مرة يعني وين وصلنا 14 افرضي اجي يساوي
مش انطلع على مكان في الحالة ده اش بتسويerror
بتقولي error مافيش token من نوع number هنا بس طبعا
مش هتفتي تقولي error لكل ال system ليش؟ لأنه يمكن
يكون ال 25 dot هذا token تاني معرف في مكان تاني صح
ولا لأ عشان هيك الصح إيش تسوي ان بعد ما نجرب
الشجرة تبعتنا أو ال transition diagram تبعتنا إذا
ما زبطش بدي اجرب مين ال definition التاني والتالت
مش فيه أنتي؟ خمسة ستة definitions لخمسة ستة tokens
إذا جربت الخمسة أو ستة definitions هدول أو ال
state diagrams هدول ولا واحدة اتعرفت عليه خلاص هذا
error في النهاية لكن بستعجلش من أول مرة يمكن هذا
يكون token تاني فهمتي كيف الفكرة؟ أنا كمان مرة كل
state diagram معرف token افترض في عندي خمسة state
diagrams مختلفين يعني أنا معرف خمسة tokens مختلفين
تمام؟ روحت مشيت في ال state الأولى لجيت error
وماقدرتش تكمليه معناه التقن اللي انت شغال عليه مش
من هذا النوع صح؟ معناه ارجعي جربي التانية مش من
هذا النوع ارجعي جربي التالتة والرابعة الجربتيهم
كلهم وماطلعش معاكي ولا acceptance خلاص error مش
موجود عندى هذا التقن واضحة كيف الفكرة؟ طبعا متى
بقول error يا بنات؟ إذا أنا في دائرة 14 إذا جاري
ال digit مقولش error else إيش تقول؟fail ماقدرتش
أكمل زي حالتي هذه 25 dot يساوي مثلا الاتنين وصلتني
هنا و الخمسة لفت هنا و ال dot وصلتني هنا طب
اليساوي مافيش مكان شوفتي كده فبصير خلاص بقول fail
مش قادر أكمل هنا مافيش عندي token من هذا النوعشوفت
كيف؟ فبطلع، بكملش، بكملش في هذه الشجرة لكن لو أنا
كاتب صح ال number و كاتب بدل الخمسة zero و ده اليو
ساوي zero وين هيروح؟ على خمستاشر، الآن من خمستاشر
احطت يساوي بقوللي في other، خلاص انت راجيتك الكامل
فبروح ايش بعمله return طبعا بعمل retract و برجّه
اني لجيت number خلاص طيب افترضي الان مديش اقول
Lagana يساوي خلاص Lagana dot 2E معناه لسه بيكمل
فاش بقولي بقولي هاي ال E بوصلها 16 صح طب افترضي
كاتبة من الأول خمسة و عشرين E يعني كان من هناشايفة
هاي كمان E يعني جالي ال E 16 حصلها يا إما من ال
constant مباشر يا إما بعد ال dotفوصلت لايه؟ الآن
لازم بعد ال E إجباري يكون فيه digit، صح؟ عشانك إيش
قال ليه؟ قال لي إذا من ال E .. طبعا عفوا بعد ال E
بيجيش أنها زائد أو ناقص الرقم أو بيجي الرقم على
طول، صح؟ فإيش بيقوللي؟ بيقوللي إذا أجي الزائد أو
الناقص ورا الرقم، هي .. هي لو أجي الرقم على طولطيب
افترضي ماجهاش لا زائد ولا ناقص ولا أجرقام جيت كتبت
ال E اللي هي غلط لحالها تساوي هيتطلع في 16 مش زائد
ولا ناقص مش digit مافيش مكان يروحه بيكملش بيقول
fail بيقول أنا مش قادر أكمل هذا اللي انت كاتبه مش
معرف عندي كتكل روح شوفه في دكانة تانية روح شوف
مكان تاني يمكن يكون حد يعرفهماحدش معرفه خلاص
مابيكون غلط شوفتي كيف؟ ليش طب هو هنا ماتكملش فيه؟
لأن هذا بالنسبة له مش تكن هو بيعرفه لأنه هنا
بيجبرنا لازمش يكون قولنا بعد ال E number هيك ال
language صح ولا لأ؟ علشان هيك لو أنا حطيت أي رقم
بعد ال E بيصير بوصلها صح؟ الآن خلاص طول ما بيجي
أرقام لف لف لف أي حاجة بعد هيك ماجتش أرقاميساوي
ضرب جسمه وين بيفوت على other طبعا لازم يكون فيه
نجمة بس ممكن عشان مش مكمل شايفة لازم يكون فيه نجمة
ليش النجمة؟ علشان يرجع فخلاص هي باختصار هذه دورة
أو هذا ال set diagram اللي بيكشفلي الرقم وديني
بالك هي مش صعبة كتير مش صعبة كتير أنت تذكر الكلام
اللي قلناه المرة اللي فاتت أن أي رقم هو عبارة عن
أقام integersثم قد يأتي dot و أرقام و قد لا يأتي
عشان أيه ممكن يروح مباشر أو يمشي في طريق ال dot و
أرقام أخر إيش عشان ممكن يكون فيه E و لها format
عشانك لو جيت تتفحص شوية هتلاحظ أن ال state diagram
هنا مش صعب يا بنات طلعي هذا الجزء الأولاني لغاية
هنا بعرف مين الانتجار لحاله وهذا الجزء التاني
لغاية هنابيضيف عليها ال fraction و قد يأتي ال
fraction و قد لا يأتي و آخر جزء بيعرف مين ال
exponent لو فيه exponential شوفت كيف فكلهم مع بعض
فبديك تنتبه تعملي لهم دائرة واحدة طبعا لو رجعتي لل
version القديمة تبع الكتابمن زمان ماكانش يعملهم
عشان كانت صعبة ماكانش يعملهم كلهم في ال set واحدة
مش هتتذكر مثالنا المرة اللي فاتت فعملنا N1 و N2 و
N3 و N4 و بعدين جمعناهم فلو كنتي عاملة N1 و عملتي
لها set لحالي و N2 عملتي لها set لحالي و N3 عملتي
لها set لحالي و N4 عملتي لها set لحالي برضه بمشي
لإن زي ما نجاش في الأولةكانت بال إيه؟ هيجرب التاني
ماكانش بالتاني هيلاجد التالت فواحدة من الأربع
هتكون صح إذا كانت صح فبرضه الحل اللي هداك اللي في
ال version القديمة برضه مظبوط بس هو جالش أعملهم
أربع .. تلتة أربع منفصلين و أخد و أجد و أعيد و
أزيد و أعيد و أزيد مشبوكهم مع بعض بقالية إن أنا
فاهم لازم يجي أرقام بعدين يأتي dot أرقام أو لا
يأتي بعدين يأتي إيه أو لا يأتي مع ال structure
تبعها فحطل كلهم على بعض وانتبع كيف حل الإشكالية
شايفة؟ هانا في الأول integers صح؟ لو أجى E مباشر،
هاي شايفة أين راح؟ على دواقل ال E لو أجى dot
وأرقام، خلاص ماشي بال dot والأرقام شوفتي كيف؟ يعني
هاي عساس أن أنا أستثني ال dot أروح مباشرة لأنه
وارد يجيني 25Eفقولت خلاص انا جاكي 25 و E روحي دغري
على شغل ال E والله ان انا جاكي 25 و dot أرقامه E
خلاص امشي ال dot و أرقامه ال E طب خلصت منها ماجاش
E خلصت اطلعي خلصت منها لا أجدت ولا E اطلعي كملت
للآخر لل E خلاص خلصنا يعني بيطلعك من تلت مطارح زي
ما انت شايفها مطرح بيطلعك بال constant انتجار و
مطرح بيطلعك بال fraction و مطرح بيطلعك لو الرقم
فيهE هاي باختصار طيب قبل ما .. خليكي تسألي .. الآن
أنا سؤالي معلش هخليكي تسأل مرة واحدة كله سؤالي
إليك لو أنا مثلا كاتب سبعتاش
E اتنين مثلا
بديش ايه؟ خلّيني أقول ا او ا dot ايه dot؟ اتنين
ايه dot اتنين؟ ايش تتوقعي؟ بتوقع انه جاب المفروض
جوا على الوصف تبعي مافيش ايه و dot صح؟ المفروض
دائرتي هذه تطلعني، ماتعملليش acceptance لو أنا
شغال صح؟ و بالفعل تعالي تتبعي فيها انت بعد ما
وصلتي ل أيه هنا؟ هتكون وصلتي ل 16 صح؟ ايش بلاقي
dot؟طب مافي زايد ناقص ولا في other ان يطلن ال
acceptance ولا في digit ايش هيصير في الحالة هاي؟
fail طيب هل هيقولي error؟ اه ايش هيصير؟ ايه وإذا
فيش definitions أخريات بدي يروح يدخل فيهم لكن إذا
كان هذا أخر definition بوصله خلاص يقول error هاي
باختصار الآن ال conclusion لكل اللي أنا قلتهإنه
لكل token في عندي regular definition و لكل regular
definition في عندي state diagram في مثالي الأخير
هذا كان في عندي الستة tokens ال if والelse والthen
وال ID وال number وال reloadعشانك الاصل كان يكون
عندي كام state diagram ستة المفروض اللي هي واحدة
لل Relop وعملناها وواحدة لل ID وعملناها وواحدة لل
number وعملناها والاصل فيه تلاتة تانية لل F وD وL
لكن هو استبعدهم بحكم أنه في symbol table مخزن في
ال reserved words بس باختصار عشان نكون واضحينالان
كيف عملية البرمجة عملية البرمجة simple خالص بتمسكي
من الأساس دويرة دويرة و بتبرمجيها ب if if else
بقول إذا أنا في state zero و أجل ال input أو أجل
forward أصغر بروح على state one else if أكبر بروح
على مية else if يساوي بروح على خمسين else بقوله
fail ليش بقوله fail عشان يروح يدور في start تانية
بالترتيب فبدور في ال start تانية و هكذا لغاية ما
يخلصواضحة الأمور فبرمجة ال state سهلة جدا مافيش
فيها إشي وقلنا ميزة بين الدورتين اللي مع بعض و
الدورتين اللي فيهم نجمة الدورتين اللي مع بعض
معناها انت وصلت ل token موجود خلاص ارجعه الدورتين
اللي معها نجمة معناها انتبه ان انت ماشي character
زيادة لازم ينفحص فلازم ترجع عنه و بعدين اترجع ال
token هاي باختصار كل اللي قلناه الآنأي سؤال في
القصة هذه بنات انتبهوا لشغل مهم ان انا في عندى
تلاتة state diagram منفصلينمنفصلين كيف بعمل ال
execution بجرب في الأولى ان صار في acceptance كان
بها مافيش acceptance بجرب في التانية ان صار في
acceptance هين عرفته ماصارش بجرب في التالتة في
acceptance تمام خلصنا ماصارش خلاص ماضلش أجرب error
هذا ال token مش موجود عندي مش متعرف باختصارالنقطة
التالتة تنتبهي لها دوائر الـ acceptance high ايش
بده أسوي عندها قالت لك على حسب ال token اللي انت
لاجئتيه ايش يعني دائرة acceptance يعني انت لاجئتي
token فبتسألي نفسك سؤال هذا ال token لازم اعمله
action معينإذا لازم أعمله action معين لازم أبرمج
هذا ال action يعني بمعنى لجيت كلمة هل في action
للكلمة؟ أه في action للكلمة، شهو هو ال action؟ رؤى
ال symbol table موجودة، مش موجودة، خزينها، رجع، صح
ولا لأ، يبقى هذا لازم كله أبرمجه في النهايةطب لقيت
reload greater than مابديش اعمل action خلاص رجع
رتير reload greater than لقيت number رجع number
شوفتي كيف فعلى حسب طبيعة ال token اللي انت لقيتيه
على حسب طبيعة ال acceptance اللي انت فيها بتقرر
ايش تعمل ايش تعملي من مهام مطلوبة لهذا ال token
واضحة طيب في اي سؤالbreak لسه ماخلصتش النقطة عشان
اديكوا ال break يضايق فيه نقطة تلقى دقيقتين و احنا
اديكوا break مرة واحدة
أيوة عادي احنا مش عاملين هنا حساباته المفروض أول
ما وصلي ال acceptance مش كان شايف ال digits اللي
رايحات معاه الموجودين مش هو عارف ال begin وعارف ال
end صار لأ مش مخزن ك string ممكن يعمل code to
convert to integer number أو يعمل ال code اللي
احنا عاملينه اضرب V تساوي Zero امشي واشتغل وكده
يعني في النهاية هذا بس كل اللي بيسويه أنه وصلك ل
acceptance لل tokenخلاص انت عرفت انه في number هل
في مهام بدك تسويها اه في بدي احسب قيمة ال value
ابتدي تكتب كودك اه ال اول character حوليه ل
integer و بعدين اجمالي اذا ماكننا نعمل وضربي في
عشرة وضيفي بعد ما تخلصي بتقولي return واضحيت؟ يعني
هذا فقط ال diagram بمشيل الدوائر لغاية ما وصل ال
acceptance لكن ايش بدي اسوي بدي برمج بعد هيك بديش
اسويش خلاص retireيعني هذا بس وظيفته أنه يكشفلي
يمشي في ال buffer و كل ما يلاقي token يزمر يقولك
لجيتلك token هاين اتفضل عادتك تسوي سوي بريحني عادي
لجتلك ID اتفضل ايش تعمل سوي لجتلك number ايش تعمل
سوي شوفتي كيف؟ و طبعا هذا وين هبرمج يا بنات هذا
هبرمجه في دواعي ال acceptance فقط ماتلخبطوش الدنيا
الان لو أنا ببرمج في 13إيش بدّي في حسبة الرقم؟ إيش
بدّي في حسبة ال ID؟ خلاص 13 F digit lift نقطة 14 E
16 other 20 خلصت من 13 الآن و أنت بتبرمجي في 20
بخلف الوضع أنا العشرين هذه acceptance هذه معناها
لجهة token من نوع number وتحديدا من نوع انتجار
الآن إيش بدك تسوي سوي عاد؟ أه بدي أحسب قيمة ال
value تبعتي ال number خلاص بسير أحول الرقم اللي
شوفته في ال buffer بحوله ل value و بعمل ال token و
برجعه كاملشوفت كيف؟ زي هيك في ال acceptance يعني
العمليات الزيادة اللي بتفكر فيها دايما في دوار ال
acceptance بتكون اما الدوار اللي في النص هذا
مابدهاششش كتير يعني طيب الان بس خلنا عشان انا اختم
المكان هذا عشان ما ارجعلهاش بدي هم بس دقيقتين اقول
اللي بدي اياه الان اش بقولك بقولك تذكري انه عندي
ال state diagram كله منفصل صح؟في مثلي في عندى
ثلاثة state diagram بالثلاث بدايات مختلفة واحدة
بدايتها 0 و الثانية بدايتها 9 و الثالثة بدايتها 12
جالك الان كيف بدنا نعمل ال execution كيف بدنا نعمل
ال running لل code جالك في عندك تلت طرق الطريقة
الأولى اللى كلنا اتكلمنا فيها أنى أجرب الأولى فيها
errorيعني سيكوانشال بنشتغل بنجرب التانية فيها
error بنجرب التالتة فيها error خلاص بنقوله طلع هنا
ان وصلنا ل acceptance خلاص وصلنا ل acceptance يعني
السياسة ايش بيقول صح هم منفصلين لكن اشتغلي عليهم
sequentially بالدور واحدة واحدة طبعا اكيد الموضوع
هذا فيه بطء عشان ايه بيجي اقتراح اتنين هو في تلت
طرق طريقة اتنين طريقة اتنين ايش بتقول بتقول اشتغل
parallelيعني اشتغل على هاي و في نفس التوقيت اشتغل
على هاي و اشتغل على التالتة يعني بمجرد ما انا
اجاني حرف مثلا I من 0 بدور على I و من 9 بدور على I
و من 12 بدور على I التلتة بيشتغلوا .. التلتة
بيشتغلوا مع بعض او الأربع او الخمسة او الستة كلهم
بيشتغلوا برا للمع بعض و بيضلوا يمشوا بس هنا قال
بدنا نكون حذرين شوية ليش حذرين؟جال ممكن انا اوصل ل
acceptance في الأولى تمام لكن مش معناها انك توقفي
و تقولي return لازم تخلي التانية تكمل شغلها لأنه
ممكن توصل ل acceptance بعد شوية ممكن الأخيرة توصل
ل acceptance بعد .. كمان في المستقبل فبدك تنتبه مش
اول acceptance تستعجلي عليه و تطلعي و اداكي مثال
كويس ايش المثال الكويس جال جال افترض انت عاملة
state diagram للأصغرhigh acceptance وعاملة كنت
parallel state diagram تاني للأصغر أو يساوي وكنت
كاتبة فعليا أصغر أو يساوي طبعا الاتنين شغالين
parallel اعتبر هذه state diagram و هذه state
diagram منفصلين و اتنين شغالين فجالك لما لقيت
الأصغر هذا أشتغىacceptance لكن هذا لسه مش
acceptance مع أن الصح أنه هي إيش مش أصغر أصغر
يساوي فجالك ممنوع توقف صح لجتي acceptance هان
ممنوع توقف خلي يكمل اللي وراها فلما بيكمل اللي
وراها و بيشوف اللي يساوي هذا واقف بيصير فيه إيش
acceptance تاني فجالك بيصير تاخدي بعد هيك ال
longest path يعني ال acceptance الأطول هو اللي
بتاخديه هذا الأصحففكرتهم بيقولك صح انت بتشتغلي
parallel كلهم بيشتغلوا بمنعزل عن الآخرين كل واحد
بيشتغل لحاله لكن بدك تتنبهي انه مش أول acceptance
تلاقيه هوب اللي انت تجي و تقولي لجيت أصغر و سلام
غلط فبدك تراي كودك انه لأ بدي يفحص الجميع و حتى لو
هذا وقف و لقى خلي الكل يكمل والله ان هدولة كملوا
للآخر و مالاقوشبناخد الأصغر فهمتي كيف؟ لو مالجوش
لكن في حدا منهم لجى token قدام خلاص بدي أاخده فبس
قالك هايلة تبهيله قالك صح سريعة و كويسة ال
parallel لكن بيصير فيها مرات خربطة انه بيصير أكتر
من acceptance موجود ومش تلاقي واحد تواجه كله بدي
يكمل وبعد ما يخلص كل ال acceptances اللي عندك مين
هتاخدى؟ ال longest طيب طب هذه طريقة اتنين ايش
طريقة تلاتة تعالى نشوف طريقة تلاتةاللي هي أخر
طريقة طريقة 13 بيقول ليش ما أعملهم و هذا الطريقة
المنطقية أكتر ليش ما أعملهم كلهم في رسمة واحدة كيف
يعني؟ يعني جال مثلا زي هيك مثلا جال ليش أبدأ هذه
شفاية 9 ليش أعمل start جديدة ما خلص من ال zeroأقول
إذا أجى letter روح لعشرة وكملي فال start هذه صارت
مش بس لهذه و لهذه و الأخيرة تاعة ال digit قال مثلا
لو أجى digit اروحي على مثلا اشتغلي يعني شبكهم كلهم
في start واحديعني ليش يعملهم منفصلين؟ يعني الفكرة
التالتة ايش بتقول بيقول كل state diagram هدول
المنفصلين شبكيهم مع بعض في نفس الفداية خلاص بسيب
من الأول انت ايش بتعرف حالك اين تروح و تمشي بس
برضه قال لي ان تبهي للأسف برضه في مشاكل ممكن تصير
هنا شو هي المشاكل؟ ممكن يكون انا معرف ال F مثلا يا
بنات مش معرف ال F قبل هيك I Fعلى فرضية ان انا بدأ
اعمل كل ال keywords ومعرف مثلا then الاخر المهم
معرف شغلات ومعرف مثلا ال ID قالك افترضي اجت ال I و
انا في دقيقة ال zero اجى ال forward I ونروح قالك
هنا لازم تجرب الحال تاني يمشي في التانين يمشي هنا
فتحت ال F ويمشي في تحت ال letter لان صار مش عامل
كانين ال I ايش لاجت بعد ال I لاجت F هذا ماشي هنا
وهذا مش الى وين letter or digit مش هي كانت هيكة مش
هي ال acceptance letter or digit هذا مكمل و هذا
مكمل هذا acceptance و هذا acceptance صح ولا ده
الآن قاللي افرضي خلاص وقفنا اجى space بعد ال F اجى
اي حاجة صرتي انت وين واقفة في اتنين acceptance هنا
و هنا صح؟ قالك مين ناخد طب ما هذه ال idea عملت
acceptance لأنها letter followed by letter or
digitوال F عملت acceptance ل I جي I وراها F يعني
بعد اتنين character هنا في acceptance و هنا في
acceptance مين ناخد؟ من الأصح ناخد لل F الأصح صح
قال اعطي ال F رقم أصغر من هذا يعني حطي أولوية أكتر
يعني لو هذا رقم مثلا عشرين هذا يكون رقم إيش بعد
يعني قال لما يكون اتنين acceptance بياخد اللي في
الأولاللي انت عملها في الأول عشان ذلك أنا بعمل ال
F في الأول و بعدين بعمل ال ID عشان لما يتساووا
هيعمل priority لمين؟ للأول طيب هذا لو كانوا
متساويين صح؟ طيب تعالى افرض ان المكتوب مهمش خليكوا
اليوم تكيفوا خالص اليوم بتعيدوا التسجيل براحتكم
بتعيدوا براحتكم بشواش و بالبطيق طيب لو كاتب IFT لو
كاتب IFTهيروح طبعا هيعد في ال I و هيعد في ال F و
هيوقف صح؟ و هنا هيكمل و لما تيجي ال T I و F و T
بيضل في ال acceptance صح؟ يعني بعد ما بيكتب IFT
هنا acceptance و هنا acceptance مين ياخد؟ليش طب
ماياخدش الأولى؟ لأنه بدي ياخده ال longest الآن هذه
بعد قداش acceptance بعد كام character؟ بعد تلاتة
شخشاف I وF وT وحصل على ال acceptance وهذه بعد كام
acceptance بعد كام character؟ بعد اتنين قال إذا
لجيتي acceptance أطول من التاني خدي الأطول دائما
هذه بديتكي قانونين إريحك من المشاكل قال لك في حال
في acceptance أطول خد الأطول في حال للعدد زي بعضه
في اتنين acceptance او اكثر خد مين الأولوي الأولهك
بنحل مشاكلنا، إذا طريقة رقم تلاتة عبارة عن إيش؟
إنه شبكيهم كلهم مع بعض بقى لما تشبكيهم كلهم مع بعض
قالك هيكون وارد إنه يصير فيه أكتر من acceptance
وانتي ماشية زي قصة البرن اللي قبل شوية طب كيف بنحل
الإشكالية هاي؟ قال بتحليها بقانونين القانون الأول
إذا تساوو ال longest pathبدنا ناخد من المرتب أول
عشانك دايما لازم ترتب ال F و ال then و ال else هذا
كله أول إذا في واحد أطول من التاني ناخد الأطول و
هيك أنا بطلع من المأزق ال ID و ال F أو الأصغر و
الأصغر يساوي لإن دايما الأكبر هو اللي بيكون أصحى
أنا بس بده أوضح النقطة كمان مرة اللي بدها تظل في
البداية تظل اللي بدها تنتهي تنتهي تمام تمام الان
كمان مرة انا الان عندي دايرة zeroاحنا بنفرض في
الحالة التالتة ان كل ال state diagram موجودين في
رسمة واحدة، مظبوط؟ يعني وارد جدا، يكون ال zero إذا
أجاني أكبر يروح على إيش؟ على مكان، إذا أجاني أصغر
يروح على مكانات، إذا أجاني يساوي يروح يتفرع على
دوار، مش هيك وارد؟وإذا أجاني مثلا digit يروح مثلا
على دوائر، مظبوط؟ وإذا أجاني .. هذي بدى أركز
عليها، إذا أجاني letter بدى يروح قولنا على دائرة
بعدين إذا أجاني letter or digit بده يلف مش هيك؟
بده يجينف الأول letter بعدين كل ما بيجيني letter
or digit بده يلف عشان يعرف ال IDووارد لو بدي كلمة
ال F اقول لازم يجيني I و لازم يجيني F عشان اعمل
acceptance لل F ليش طبعا هذا وارد لأن كلهم شبكتهم
في بعض مش زي أول كلهم مفصلين و كانت ال F جابل و
بخلص منها و بروح بشوف ال I دي كانت أسهل لما كانوا
لحالهم بال sequential الان لأ كلهم مع بعضعلشان هيك
إيش بسوي افترض الكلام المكتوب I F هاي اللي اللي
بده يجيلي فانا الآن بقرأ I و بادي من وين؟ من Zero
و وين هيروح؟ هتقوليلي هيروح على مكانين هيروح هنا
بحكم أن اللي هدا letter هيروح هنا و هتقوليلي هيروح
برضه التنفيذ هنا لأن ال I بينا مرتين ك letterفبروح
الدائرة هاي و مبينة ك I و بتروح الدائرة هاي صح؟
طيب صار واصل هان بعد ال I الآن في ترضي أجه F صار
وين واصل؟ صار واصل على ال acceptance اللي هان اللي
هي هذه بتقولي لجيت F وصار واقف على ال acceptance
اللي هان اللي هو بقول لجيت ID الآن في ترضي ماجهاش
إشي بعد هيك ال answer إنه واقفين في two acceptance
واحد بقولي Fو واحد بيقول ID طب ده شوف من الأطول
هذا وصلته بعد two characters و هذا صار acceptance
بعد two characters طب شوف الحالة ده سوي قال خدي
اللي انت من رتباه أول عشانك لازم في ترقيمك للدوائر
تعطي هذا أرقام أصغر من الأرقام اللي هال عشان ال
priority تكون لل F لأن أصح أن تكون F هذا لو كان
نفس ال path اللي انا افترضى لأ ماكناش كاتبين F كنا
كاتبين FTكلمة طبعا هذا نفس الفكرة عند أول I وصل
هان و هذا وصل هان عند ال F هذا وصل هان و هذا وصل
هان عند ال T هذا ثبت هذا لف زيادة لف على ال
acceptance ال R خلصت الكلمة صار في acceptance هان
بعد تلت حروفوصار في acceptance هات بعد حرفين مين
ناخد ال longest؟ مين هو ال longest؟ يبقى هينفذ ال
return لل ID فبس هاي القانونين بقولك دايما بناخد
ال longest في حال تساوى بتاخد انت مرتبة أقل وبهيك
انا بكون حلت إشكاليتي اني جمعتهم مع بعض في مكان
واحد that's it تمام؟ ممتازين