زمان کنونی: ۰۶ آذر ۱۴۰۳, ۰۸:۱۹ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

محاسبه روابط تقدم در تقدم عملگر ساده

ارسال:
  

firouziam پرسیده:

محاسبه روابط تقدم در تقدم عملگر ساده

سلام
دوستان من کامپایلرو خوب خوندم و اکثر جاها شو خوب بلدم ولی این روابط تقدم عملگر ساده بدجور اعصابمو خورد کرده، نمیدونم من بد متوجه شدم یا... خلاصه همیشه چنتا مورد تو جدول تجزیه اش هست که من نمیدونم چجوری بدست آورده یا مثلا به روشی که میرم بعضی جاها باید دوتا رابطه قرار بگیره
یه مثال میزنم تا بفهمید مشکلم کجاست

این گرامرمون:

۱) E->+ET|T
۲) T->*TF|F
۳) F->id

اینا هم head و tail:
{Head(E)={+,*,id,T,F
{Tail(E)={id,T,F
{Head(T)={*,id,F
{Tail(T)={id,F
{Head(F)={id
{Tail(F)={id

حالا بر اساس قاعده E->+ET مگه نباید بگیم :
(Head(E > + {یعنی هر چی تو مجموعه هد E داریم > + }
که میشه {+,*,id,T,F}>+ و
(Tail(E)>Head(T
که میشه {id,T,F}>{*,id,F} و
(E<Head(T
که میشه {E<{*,id,F
از طرفی هم چون داریم T->*TF پس داریم T=F
تا اینجا درسته؟
پس یعنی دوتا رابطه بین T,F هست یکی: T=F و یکی T>F ولی تو جدول تقدمش فقط مساوی رو گذاشته...

اگه اشتباه میکنم لطفا بگین کجارو بد حساب میکنم مرسی،
آخه تو خیلی از مثالاش این مشکل پیش میاد، بعید میدونم اشتباه حل کرده باشه. این مشکل مخصوصا تو مواردی که دوتا غیر پایانی کنار هم داریم پیش میاد...
تصویر حل سوال تو مدرسانو هم میذارم ببینین


فایل‌(های) پیوست شده

مشاهده‌ی وب‌سایت کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

mhma_1367 پاسخ داده:

RE: محاسبه روابط تقدم در تقدم عملگر ساده

(۲۳ دى ۱۳۹۲ ۰۶:۴۹ ب.ظ)firouziam نوشته شده توسط:  سلام
دوستان من کامپایلرو خوب خوندم و اکثر جاها شو خوب بلدم ولی این روابط تقدم عملگر ساده بدجور اعصابمو خورد کرده، نمیدونم من بد متوجه شدم یا... خلاصه همیشه چنتا مورد تو جدول تجزیه اش هست که من نمیدونم چجوری بدست آورده یا مثلا به روشی که میرم بعضی جاها باید دوتا رابطه قرار بگیره
یه مثال میزنم تا بفهمید مشکلم کجاست

این گرامرمون:

۱) E->+ET|T
۲) T->*TF|F
۳) F->id

اینا هم head و tail:
{Head(E)={+,*,id,T,F
{Tail(E)={id,T,F
{Head(T)={*,id,F
{Tail(T)={id,F
{Head(F)={id
{Tail(F)={id

حالا بر اساس قاعده E->+ET مگه نباید بگیم :
(Head(E > + {یعنی هر چی تو مجموعه هد E داریم > + }
که میشه {+,*,id,T,F}>+ و
(Tail(E)>Head(T
که میشه {id,T,F}>{*,id,F} و
(E<Head(T
که میشه {E<{*,id,F
از طرفی هم چون داریم T->*TF پس داریم T=F
تا اینجا درسته؟
پس یعنی دوتا رابطه بین T,F هست یکی: T=F و یکی T>F ولی تو جدول تقدمش فقط مساوی رو گذاشته...

اگه اشتباه میکنم لطفا بگین کجارو بد حساب میکنم مرسی،
آخه تو خیلی از مثالاش این مشکل پیش میاد، بعید میدونم اشتباه حل کرده باشه. این مشکل مخصوصا تو مواردی که دوتا غیر پایانی کنار هم داریم پیش میاد...
تصویر حل سوال تو مدرسانو هم میذارم ببینین


برای اینکه بشه روش تقدم ساده استفاده کرد باید سمت راست هیچ دو قاعده ای از نظر قرارگیری ترمینال و غیرترمینال یکسان نباشه که همون جور که میبینیم این شرط نقض شده و نمیشه از تقدم ساده برا این روش استفاده کرد ...
نقل قول این ارسال در یک پاسخ

ارسال:
  

firouziam پاسخ داده:

RE: محاسبه روابط تقدم در تقدم عملگر ساده

(۲۴ دى ۱۳۹۲ ۰۹:۲۶ ب.ظ)mhma_1367 نوشته شده توسط:  برای اینکه بشه روش تقدم ساده استفاده کرد باید سمت راست هیچ دو قاعده ای از نظر قرارگیری ترمینال و غیرترمینال یکسان نباشه که همون جور که میبینیم این شرط نقض شده و نمیشه از تقدم ساده برا این روش استفاده کرد ...

ممنون از پاسختون، ولی به نظورتون کجای گرامر این شرطو نقض کرده؟ قواعد E->T و T->F ؟ آخه من این قواعدو تو خیلی گرامرها دیدم که بدون مشکل با تقدم ساده پارسش کردن!
مشاهده‌ی وب‌سایت کاربر یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

mehdi63_1 پاسخ داده:

RE: محاسبه روابط تقدم در تقدم عملگر ساده

منم همین مشکلو دارم!!!!
کسی جوابو نمی دونه؟
مشکل من فقط این نیست مثلا واسه گرامر زیر:
lS->(SS)l
S->c
که تو اکثر کتابا هم هست برای SS اگه برای اولین S ما tail(s)=c رو در نظر بگیریم و s دوم رو هم بهش دست نزنیم ( دو تا شرطی که معمولا با or برای بزرگتری نوشته شده) رابطه c>S باید وجود داشته باشه که توی جدول خالیه!!!
نمی دونم کجا رو اشتباه می کنیم لطفا کمک کنید. Huh
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  روابط احساسی خارج از ازدواج مردان متأهل morweb ۶۲ ۳۴,۵۳۹ ۱۰ بهمن ۱۴۰۲ ۰۲:۴۱ ب.ظ
آخرین ارسال: fatemehbiglar
  محاسبه ارتفاع درخت.... baharkhanoom ۳ ۸,۱۱۷ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۴۸ ب.ظ
آخرین ارسال: mohsentafresh
  نحوه محاسبه دفیق لگاریتم بدون ماشین حساب mcse2010 ۲ ۸۲,۶۳۰ ۲۸ مهر ۱۳۹۸ ۰۹:۳۸ ق.ظ
آخرین ارسال: chemical_darton29
  محاسبه تراز معدل موثر از رشته آی تی یا علوم کامپیوتر به مهندسی کامپیوتر یا بالعکس gnulinux ۰ ۲,۵۳۱ ۲۱ شهریور ۱۳۹۸ ۰۸:۳۷ ق.ظ
آخرین ارسال: gnulinux
  ساختمان داده پوران، فصل اول، راهنمایی برای حل یک مثال ساده marvelous ۲ ۲,۹۴۹ ۲۲ مرداد ۱۳۹۸ ۰۳:۳۰ ب.ظ
آخرین ارسال: marvelous
  تقسیم برای محاسبه کد افزونه چرخشی (CRC) Sanazzz ۴ ۶,۹۶۴ ۲۰ آذر ۱۳۹۷ ۰۱:۱۸ ب.ظ
آخرین ارسال: Sanazzz
  محاسبه چندمین عنصر آرایه Mr.R3ZA ۶ ۶,۷۴۵ ۱۹ شهریور ۱۳۹۷ ۰۸:۱۲ ب.ظ
آخرین ارسال: Saman
  درخواست(محاسبه پیچیدگی زمانی)(بخش روابط بازگشتی) Saman ۶ ۷,۵۲۷ ۲۷ خرداد ۱۳۹۷ ۰۳:۲۴ ب.ظ
آخرین ارسال: saeed_vahidi
  نحوه محاسبه مجموعه پیش بینی یا lookahead Erfan_Ekh ۱ ۲,۶۰۲ ۲۷ خرداد ۱۳۹۷ ۰۱:۳۱ ق.ظ
آخرین ارسال: ftmbghrn
  مشکل در محاسبه مرتبه ایک سوال Mr.R3ZA ۰ ۱,۸۸۴ ۲۴ خرداد ۱۳۹۷ ۰۱:۰۳ ب.ظ
آخرین ارسال: Mr.R3ZA

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close