سلام . سوالم درباره محاسبه lookahead هاست .
تا قبل از اینکه این سوال رو ببینم اینجور محاسبه میکردم :
هروقت موقع بسط متغیری شد ادامه قانون (بعد از متغیر ) رو با تک تک مجموعه lookahead های جاری concat میکردم و first میگرفتم. ولی اینجا توی این سوال نمیدونم "+" چطور به مجموعه lookahead ها اضافه شد! اصلا مگه موقع انتقال به یک State دیگه مجموعه lookahead تغییر میکنه ؟
(31 فروردین 1396 08:12 ب.ظ)kilookiloo نوشته شده توسط: [ -> ]سلام . سوالم درباره محاسبه lookahead هاست .
تا قبل از اینکه این سوال رو ببینم اینجور محاسبه میکردم :
هروقت موقع بسط متغیری شد ادامه قانون (بعد از متغیر ) رو با تک تک مجموعه lookahead های جاری concat میکردم و first میگرفتم. ولی اینجا توی این سوال نمیدونم "+" چطور به مجموعه lookahead ها اضافه شد! اصلا مگه موقع انتقال به یک State دیگه مجموعه lookahead تغییر میکنه ؟
سلام.متاسفانه این شکل ایراد داره.درستش به صورت زیر هستش:
[
attachment=21664]
توضیح:
در حالت I ، ابتدا قلم [tex]E\: \longrightarrow\: .\: E\: +\: T\: ,\: \{\$\}[/tex] و [tex]E\: \longrightarrow\: .T\: ,\: \{\$\}[/tex] رو خواهید داشت. با توجه به اینکه علامت نقطه قبل از متغیر E اومده، پس باید دوباره E رو گسترش بدیم، که در این صورت lookahead متغیر E جدید برابر {+} میشه! یعنی دو قلم دیگه بصورت زیر به حالت I اضافه میشه:
[tex]E\: \longrightarrow\: .E\: +\: T\: ,\: \{+\}[/tex] و [tex]E\: \longrightarrow\: .T\: ,\: \{+\}[/tex]
که در اینصورت پس در کل بجای دو قلم جدید مربوط به متغیر E و دو قلم قبلیش میتونیم بنویسیم که :
[tex]E\: \longrightarrow\: .E\: +\: T,\: \{\$,+\}[/tex] و [tex]E\: \longrightarrow\: .T,\: \{\$,+\}[/tex]
و چون [tex]E\: \longrightarrow\: .\: T\: ,\: \{\text{ }\$\: ,\: +\}[/tex] هم به حالت I اضافه شده، در نتیجه lookahead متغیر T هم برابر [tex]\{\text{ }\$\: ,\: +\}[/tex] میشه. حالا که حالت I تشکیل شد، به راحتی میتونید ادامشو رسم کنی.
توجه: جهت حل این سوال، نیازی نبود که از اول و از حالت I رسم کنید.فقط کافی بود که حالت مقصد مربوط به همون حالتی که سوال گفته رو با واژه + رسم کنید.
(01 اردیبهشت 1396 01:22 ب.ظ)Iranian Wizard نوشته شده توسط: [ -> ]توضیح:
در حالت I ، ابتدا قلم [tex]E\: \longrightarrow\: .\: E\: +\: T\: ,\: \{\$\}[/tex] و [tex]E\: \longrightarrow\: .T\: ,\: \{\$\}[/tex] رو خواهید داشت. با توجه به اینکه علامت نقطه قبل از متغیر E اومده، پس باید دوباره E رو گسترش بدیم، که در این صورت lookahead متغیر E جدید برابر {+} میشه! یعنی دو قلم دیگه بصورت زیر به حالت I اضافه میشه:
[tex]E\: \longrightarrow\: .E\: +\: T\: ,\: \{+\}[/tex] و [tex]E\: \longrightarrow\: .T\: ,\: \{+\}[/tex]
که در اینصورت پس در کل بجای دو قلم جدید مربوط به متغیر E و دو قلم قبلیش میتونیم بنویسیم که :
[tex]E\: \longrightarrow\: .E\: +\: T,\: \{\$,+\}[/tex] و [tex]E\: \longrightarrow\: .T,\: \{\$,+\}[/tex]
و چون [tex]E\: \longrightarrow\: .\: T\: ,\: \{\text{ }\$\: ,\: +\}[/tex] هم به حالت I اضافه شده، در نتیجه lookahead متغیر T هم برابر [tex]\{\text{ }\$\: ,\: +\}[/tex] میشه. حالا که حالت I تشکیل شد، به راحتی میتونید ادامشو رسم کنی.
توجه: جهت حل این سوال، نیازی نبود که از اول و از حالت I رسم کنید.فقط کافی بود که حالت مقصد مربوط به همون حالتی که سوال گفته رو با واژه + رسم کنید.
خیلی خیلی ممنونم , بله سوال رو با i که گفته حل کردم موقع بررسی بود که به مشکل خوردم