۰
subtitle
ارسال: #۱
  
lookahead در پارسر LR 1
سلام . سوالم درباره محاسبه lookahead هاست .
تا قبل از اینکه این سوال رو ببینم اینجور محاسبه میکردم :
هروقت موقع بسط متغیری شد ادامه قانون (بعد از متغیر ) رو با تک تک مجموعه lookahead های جاری concat میکردم و first میگرفتم. ولی اینجا توی این سوال نمیدونم "+" چطور به مجموعه lookahead ها اضافه شد! اصلا مگه موقع انتقال به یک State دیگه مجموعه lookahead تغییر میکنه ؟
تا قبل از اینکه این سوال رو ببینم اینجور محاسبه میکردم :
هروقت موقع بسط متغیری شد ادامه قانون (بعد از متغیر ) رو با تک تک مجموعه lookahead های جاری concat میکردم و first میگرفتم. ولی اینجا توی این سوال نمیدونم "+" چطور به مجموعه lookahead ها اضافه شد! اصلا مگه موقع انتقال به یک State دیگه مجموعه lookahead تغییر میکنه ؟
۰
ارسال: #۲
  
RE: lookahead در پارسر LR 1
(۳۱ فروردین ۱۳۹۶ ۰۸:۱۲ ب.ظ)kilookiloo نوشته شده توسط: سلام . سوالم درباره محاسبه lookahead هاست .
تا قبل از اینکه این سوال رو ببینم اینجور محاسبه میکردم :
هروقت موقع بسط متغیری شد ادامه قانون (بعد از متغیر ) رو با تک تک مجموعه lookahead های جاری concat میکردم و first میگرفتم. ولی اینجا توی این سوال نمیدونم "+" چطور به مجموعه lookahead ها اضافه شد! اصلا مگه موقع انتقال به یک State دیگه مجموعه lookahead تغییر میکنه ؟
سلام.متاسفانه این شکل ایراد داره.درستش به صورت زیر هستش:
توضیح:
در حالت 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
(۰۱ اردیبهشت ۱۳۹۶ ۰۱:۲۲ ب.ظ)Iranian Wizard نوشته شده توسط: توضیح:خیلی خیلی ممنونم , بله سوال رو با i که گفته حل کردم موقع بررسی بود که به مشکل خوردم
در حالت 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 رسم کنید.فقط کافی بود که حالت مقصد مربوط به همون حالتی که سوال گفته رو با واژه + رسم کنید.
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close