lookahead در پارسر LR 1 - نسخهی قابل چاپ |
lookahead در پارسر LR 1 - kilookiloo - 31 فروردین ۱۳۹۶ ۰۸:۱۲ ب.ظ
سلام . سوالم درباره محاسبه lookahead هاست . تا قبل از اینکه این سوال رو ببینم اینجور محاسبه میکردم : هروقت موقع بسط متغیری شد ادامه قانون (بعد از متغیر ) رو با تک تک مجموعه lookahead های جاری concat میکردم و first میگرفتم. ولی اینجا توی این سوال نمیدونم "+" چطور به مجموعه lookahead ها اضافه شد! اصلا مگه موقع انتقال به یک State دیگه مجموعه lookahead تغییر میکنه ؟ |
RE: lookahead در پارسر LR 1 - Iranian Wizard - 01 اردیبهشت ۱۳۹۶ ۰۱:۲۲ ب.ظ
(۳۱ فروردین ۱۳۹۶ ۰۸:۱۲ ب.ظ)kilookiloo نوشته شده توسط: سلام . سوالم درباره محاسبه 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 رسم کنید.فقط کافی بود که حالت مقصد مربوط به همون حالتی که سوال گفته رو با واژه + رسم کنید. |
RE: lookahead در پارسر LR 1 - kilookiloo - 01 اردیبهشت ۱۳۹۶ ۰۶:۴۵ ب.ظ
(۰۱ اردیبهشت ۱۳۹۶ ۰۱:۲۲ ب.ظ)Iranian Wizard نوشته شده توسط: توضیح:خیلی خیلی ممنونم , بله سوال رو با i که گفته حل کردم موقع بررسی بود که به مشکل خوردم |