۲
subtitle
ارسال: #۱
محاسبه روابط تقدم در تقدم عملگر ساده
سلام
دوستان من کامپایلرو خوب خوندم و اکثر جاها شو خوب بلدم ولی این روابط تقدم عملگر ساده بدجور اعصابمو خورد کرده، نمیدونم من بد متوجه شدم یا... خلاصه همیشه چنتا مورد تو جدول تجزیه اش هست که من نمیدونم چجوری بدست آورده یا مثلا به روشی که میرم بعضی جاها باید دوتا رابطه قرار بگیره
یه مثال میزنم تا بفهمید مشکلم کجاست
این گرامرمون:
۱) 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 ولی تو جدول تقدمش فقط مساوی رو گذاشته...
اگه اشتباه میکنم لطفا بگین کجارو بد حساب میکنم مرسی،
آخه تو خیلی از مثالاش این مشکل پیش میاد، بعید میدونم اشتباه حل کرده باشه. این مشکل مخصوصا تو مواردی که دوتا غیر پایانی کنار هم داریم پیش میاد...
تصویر حل سوال تو مدرسانو هم میذارم ببینین
دوستان من کامپایلرو خوب خوندم و اکثر جاها شو خوب بلدم ولی این روابط تقدم عملگر ساده بدجور اعصابمو خورد کرده، نمیدونم من بد متوجه شدم یا... خلاصه همیشه چنتا مورد تو جدول تجزیه اش هست که من نمیدونم چجوری بدست آورده یا مثلا به روشی که میرم بعضی جاها باید دوتا رابطه قرار بگیره
یه مثال میزنم تا بفهمید مشکلم کجاست
این گرامرمون:
۱) 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 ولی تو جدول تقدمش فقط مساوی رو گذاشته...
اگه اشتباه میکنم لطفا بگین کجارو بد حساب میکنم مرسی،
آخه تو خیلی از مثالاش این مشکل پیش میاد، بعید میدونم اشتباه حل کرده باشه. این مشکل مخصوصا تو مواردی که دوتا غیر پایانی کنار هم داریم پیش میاد...
تصویر حل سوال تو مدرسانو هم میذارم ببینین