تالار گفتمان مانشت
بدست آوردن lookahead در (۱)CLR - نسخه‌ی قابل چاپ

بدست آوردن lookahead در (۱)CLR - h_kh - 15 دى ۱۳۹۲ ۰۱:۰۰ ق.ظ

سلام من توی بدست آوردن مقادیر lookahead در روش (۱)clr مشکل دارم یعنی هر چی فکر میکنم نمیدونم چطوری بدست میاد ممنون میشم راهنمایی کاملی بفرمایید.

RE: بدست آوردن lookahead در (۱)CLR - hosshah - 17 دى ۱۳۹۲ ۰۲:۲۱ ق.ظ

(۱۵ دى ۱۳۹۲ ۰۱:۰۰ ق.ظ)h_kh نوشته شده توسط:  سلام من توی بدست آوردن مقادیر lookahead در روش (۱)clr مشکل دارم یعنی هر چی فکر میکنم نمیدونم چطوری بدست میاد ممنون میشم راهنمایی کاملی بفرمایید.
سلام خب حق با شماست چون بحث مشکلیه و اصلا خوب توضیح داده نمیشه من هم خیلی کلنجار رفتم با هاش و تا حدودی متوجه شدم و با مثال براتون توضیح میدم

این گرامر رو در نظر بگیریدو به بحث Follow توجه داشته باشید
کد:
S -> AB
A -> aAb | b
B -> d
قاعده S' رو اضافه میکنیم و عناصر اولیه رو تشکیل میدیم. به طور پیشفرض با $ شروع میکنیم lookahead رو
کد:
S' -> .S , {$}
S -> .AB , {$}
چون این قانون از قانون بالایی به دست اومد و داریم Follow(S)={$} پس فقط $ عضو lookahead هستش. حالا A رو باز میکنیم
کد:
S -> .aAb , {d}
چون این قانون از بسط A از قاعده بالا به دست اومد و داریم Follow(A)=First(B) و First(B)={d} پس d میاد تو lookahead و حالا میریم سراغ اون یکی قاعده A که اونم به همین صورت هست
کد:
S -> .b , {d}

و بقیه مراحل هم به همین صورت حالا اگه متوجه نشدین بگین بیشتر توضیح بدم
مثلا در مثال بالا اگر در ورودی b دیده بشه میریم به حالت
کد:
S -> b. , {d}
حالا این یعنی اگر در این وضعیت توی ورودی d دیده شه با استفاده از قانون S -> b کاهش یا reduce داریم

RE: بدست آوردن lookahead در (۱)CLR - mahyamk - 16 بهمن ۱۳۹۲ ۱۱:۲۷ ق.ظ

(۱۷ دى ۱۳۹۲ ۰۲:۲۱ ق.ظ)hosshah نوشته شده توسط:  
(15 دى ۱۳۹۲ ۰۱:۰۰ ق.ظ)h_kh نوشته شده توسط:  سلام من توی بدست آوردن مقادیر lookahead در روش (۱)clr مشکل دارم یعنی هر چی فکر میکنم نمیدونم چطوری بدست میاد ممنون میشم راهنمایی کاملی بفرمایید.
سلام خب حق با شماست چون بحث مشکلیه و اصلا خوب توضیح داده نمیشه من هم خیلی کلنجار رفتم با هاش و تا حدودی متوجه شدم و با مثال براتون توضیح میدم

این گرامر رو در نظر بگیریدو به بحث Follow توجه داشته باشید
کد:
S -> AB
A -> aAb | b
B -> d
قاعده S' رو اضافه میکنیم و عناصر اولیه رو تشکیل میدیم. به طور پیشفرض با $ شروع میکنیم lookahead رو
کد:
S' -> .S , {$}
S -> .AB , {$}
چون این قانون از قانون بالایی به دست اومد و داریم Follow(S)={$} پس فقط $ عضو lookahead هستش. حالا A رو باز میکنیم
کد:
S -> .aAb , {d}
چون این قانون از بسط A از قاعده بالا به دست اومد و داریم Follow(A)=First(B) و First(B)={d} پس d میاد تو lookahead و حالا میریم سراغ اون یکی قاعده A که اونم به همین صورت هست
کد:
S -> .b , {d}

و بقیه مراحل هم به همین صورت حالا اگه متوجه نشدین بگین بیشتر توضیح بدم
مثلا در مثال بالا اگر در ورودی b دیده بشه میریم به حالت
کد:
S -> b. , {d}
حالا این یعنی اگر در این وضعیت توی ورودی d دیده شه با استفاده از قانون S -> b کاهش یا reduce داریم
ممنون منم همین مشکل رو داشتم
منظورتون اینه از A به aAb. و b. میره؟

RE: بدست آوردن lookahead در (۱)CLR - e.shrm - 16 بهمن ۱۳۹۲ ۱۲:۱۶ ب.ظ

من یه دور اینجا مفصلا توضیح دادم.
اگر جواب نگرفتید ، بگید دوباره بگم.
برخلاف تصورتون بحث ساده ایه اگر یه مقدار مثال حل بشه.


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.


RE: بدست آوردن lookahead در (۱)CLR - hosshah - 16 بهمن ۱۳۹۲ ۰۱:۵۰ ب.ظ

(۱۶ بهمن ۱۳۹۲ ۱۱:۲۷ ق.ظ)mahyamk نوشته شده توسط:  ممنون منم همین مشکل رو داشتم
منظورتون اینه از A به aAb. و b. میره؟

خواهش میکنم
در واقع وقتی نقطه قبل از A قرار گرفته (S->.AB) حالا باید قواعد غیر پایانه A بسط داده بشه و مجموعه lookahead هم مسلما برابر First(B خواهد بود همون طور که بالا نوشتم