۰
subtitle
ارسال: #۱
  
Loop در بدست آوردن Follow
سلام
من برای بدست اوردن follow یک گرامر مشکل دارم،یعنی هر کدم که مخواهم بدست بیارم ، نیاز به داشتن Follow دیگری هست و انگار افتاده توی loop
مثلا باید follow A رو بریمز توی follow B و بعد خود follow B برای بدست اوردنش باید follow c حساب کنم باز follow c نیاز به ...
من برای بدست اوردن follow یک گرامر مشکل دارم،یعنی هر کدم که مخواهم بدست بیارم ، نیاز به داشتن Follow دیگری هست و انگار افتاده توی loop
مثلا باید follow A رو بریمز توی follow B و بعد خود follow B برای بدست اوردنش باید follow c حساب کنم باز follow c نیاز به ...
۱
ارسال: #۲
  
RE: Loop در بدست آوردن Follow
صورت سوال به این شکل است:
S-> bD|AB
A-> aF|lambda
B-> dE|EF
F-> eb|iBS|lambda
E-> mA|n
D->AF|j
برای بدست اوردن فالوی A بصورت زیر عمل میکنیم:
حالت اول : [tex]S\rightarrow AB[/tex]
[tex]fallow(A) = first(B)[/tex]
[tex]first(B) = 'd' , first(E)[/tex]
[tex]first(E) = 'm' . 'n'[/tex]
پس تاکنون عناصر d,m,n عضو فالوی A هستن.
حالت دوم : [tex]E \rightarrow mA[/tex]
[tex]fallow(A) = fallow(E)[/tex]
[tex]fallow(E) = first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
چون F لامبدا رو هم قبول میکنه پس قاعده زیر رو هم باید اجرا کنیم:
[tex]fallow(E) = fallow(B)[/tex]
[tex]fallow(B) = '@' , first(S)[/tex]
[tex]first(S) = 'b' . 'a'[/tex]
عناصر a , b , @ , e , i رو هم به عناصر قبلی یعنی n . m . d اضافه میکنیم.
حالت سوم : [tex]D\rightarrow AF[/tex]
[tex]fallow(A)=first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
البته چون F میتونه لامبدا رو هم قبول کنه پس قانون زیر هم قابل اجراست:
[tex]fallow(A) = fallow(D)[/tex]
[tex]fallow(D) = '@'[/tex]
پس در کل با ۳ حالت تونستیم فالوی A رو بدست بیاریم که برابر هست با : i . e. b. a. d. m .n . @
S-> bD|AB
A-> aF|lambda
B-> dE|EF
F-> eb|iBS|lambda
E-> mA|n
D->AF|j
برای بدست اوردن فالوی A بصورت زیر عمل میکنیم:
حالت اول : [tex]S\rightarrow AB[/tex]
[tex]fallow(A) = first(B)[/tex]
[tex]first(B) = 'd' , first(E)[/tex]
[tex]first(E) = 'm' . 'n'[/tex]
پس تاکنون عناصر d,m,n عضو فالوی A هستن.
حالت دوم : [tex]E \rightarrow mA[/tex]
[tex]fallow(A) = fallow(E)[/tex]
[tex]fallow(E) = first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
چون F لامبدا رو هم قبول میکنه پس قاعده زیر رو هم باید اجرا کنیم:
[tex]fallow(E) = fallow(B)[/tex]
[tex]fallow(B) = '@' , first(S)[/tex]
[tex]first(S) = 'b' . 'a'[/tex]
عناصر a , b , @ , e , i رو هم به عناصر قبلی یعنی n . m . d اضافه میکنیم.
حالت سوم : [tex]D\rightarrow AF[/tex]
[tex]fallow(A)=first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
البته چون F میتونه لامبدا رو هم قبول کنه پس قانون زیر هم قابل اجراست:
[tex]fallow(A) = fallow(D)[/tex]
[tex]fallow(D) = '@'[/tex]
پس در کل با ۳ حالت تونستیم فالوی A رو بدست بیاریم که برابر هست با : i . e. b. a. d. m .n . @
ارسال: #۳
  
RE: Loop در بدست آوردن Follow
(۱۹ دى ۱۳۹۲ ۰۴:۳۸ ب.ظ)azad_ahmadi نوشته شده توسط: صورت سوال به این شکل است:
S-> bD|AB
A-> aF|lambda
B-> dE|EF
F-> eb|iBS|lambda
E-> mA|n
D->AF|j
برای بدست اوردن فالوی A بصورت زیر عمل میکنیم:
حالت اول : [tex]S\rightarrow AB[/tex]
[tex]fallow(A) = first(B)[/tex]
[tex]first(B) = 'd' , first(E)[/tex]
[tex]first(E) = 'm' . 'n'[/tex]
پس تاکنون عناصر d,m,n عضو فالوی A هستن.
حالت دوم : [tex]E \rightarrow mA[/tex]
[tex]fallow(A) = fallow(E)[/tex]
[tex]fallow(E) = first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
چون F لامبدا رو هم قبول میکنه پس قاعده زیر رو هم باید اجرا کنیم:
[tex]fallow(E) = fallow(B)[/tex]
[tex]fallow(B) = '@' , first(S)[/tex]
[tex]first(S) = 'b' . 'a'[/tex]
عناصر a , b , @ , e , i رو هم به عناصر قبلی یعنی n . m . d اضافه میکنیم.
حالت سوم : [tex]D\rightarrow AF[/tex]
[tex]fallow(A)=first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
البته چون F میتونه لامبدا رو هم قبول کنه پس قانون زیر هم قابل اجراست:
[tex]fallow(A) = fallow(D)[/tex]
[tex]fallow(D) = '@'[/tex]
پس در کل با ۳ حالت تونستیم فالوی A رو بدست بیاریم که برابر هست با : i . e. b. a. d. m .n . @
ممنون لطف کردید خیلی زحمت کشیدید
اما برای follow B شما این قسمت رو حساب نکردید
همان خط اول
S-->AB میره و FollowB مگر نمیشه FollowS اما حساب نکردیم
ارسال: #۴
  
RE: Loop در بدست آوردن Follow
(۱۹ دى ۱۳۹۲ ۰۵:۴۴ ب.ظ)H-Arshad نوشته شده توسط:(19 دى ۱۳۹۲ ۰۴:۳۸ ب.ظ)azad_ahmadi نوشته شده توسط: صورت سوال به این شکل است:
S-> bD|AB
A-> aF|lambda
B-> dE|EF
F-> eb|iBS|lambda
E-> mA|n
D->AF|j
برای بدست اوردن فالوی A بصورت زیر عمل میکنیم:
حالت اول : [tex]S\rightarrow AB[/tex]
[tex]fallow(A) = first(B)[/tex]
[tex]first(B) = 'd' , first(E)[/tex]
[tex]first(E) = 'm' . 'n'[/tex]
پس تاکنون عناصر d,m,n عضو فالوی A هستن.
حالت دوم : [tex]E \rightarrow mA[/tex]
[tex]fallow(A) = fallow(E)[/tex]
[tex]fallow(E) = first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
چون F لامبدا رو هم قبول میکنه پس قاعده زیر رو هم باید اجرا کنیم:
[tex]fallow(E) = fallow(B)[/tex]
[tex]fallow(B) = '@' , first(S)[/tex]
[tex]first(S) = 'b' . 'a'[/tex]
عناصر a , b , @ , e , i رو هم به عناصر قبلی یعنی n . m . d اضافه میکنیم.
حالت سوم : [tex]D\rightarrow AF[/tex]
[tex]fallow(A)=first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
البته چون F میتونه لامبدا رو هم قبول کنه پس قانون زیر هم قابل اجراست:
[tex]fallow(A) = fallow(D)[/tex]
[tex]fallow(D) = '@'[/tex]
پس در کل با ۳ حالت تونستیم فالوی A رو بدست بیاریم که برابر هست با : i . e. b. a. d. m .n . @
ممنون لطف کردید خیلی زحمت کشیدید
اما برای follow B شما این قسمت رو حساب نکردید
همان خط اول
S-->AB میره و FollowB مگر نمیشه FollowS اما حساب نکردیم
بله درست میفرمایید. یکی دوتا محاسبه Fallow رو کم گذاشتم.
محاسبات رو تا جایی که در سیکل نیوفته انجام میدیم. میدونیم که با انجام دوباره ش همون عملیات قبلی تکرار میشه.
ارسال: #۵
  
RE: Loop در بدست آوردن Follow
(۱۹ دى ۱۳۹۲ ۰۵:۵۲ ب.ظ)azad_ahmadi نوشته شده توسط:(19 دى ۱۳۹۲ ۰۵:۴۴ ب.ظ)H-Arshad نوشته شده توسط:(19 دى ۱۳۹۲ ۰۴:۳۸ ب.ظ)azad_ahmadi نوشته شده توسط: صورت سوال به این شکل است:
S-> bD|AB
A-> aF|lambda
B-> dE|EF
F-> eb|iBS|lambda
E-> mA|n
D->AF|j
برای بدست اوردن فالوی A بصورت زیر عمل میکنیم:
حالت اول : [tex]S\rightarrow AB[/tex]
[tex]fallow(A) = first(B)[/tex]
[tex]first(B) = 'd' , first(E)[/tex]
[tex]first(E) = 'm' . 'n'[/tex]
پس تاکنون عناصر d,m,n عضو فالوی A هستن.
حالت دوم : [tex]E \rightarrow mA[/tex]
[tex]fallow(A) = fallow(E)[/tex]
[tex]fallow(E) = first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
چون F لامبدا رو هم قبول میکنه پس قاعده زیر رو هم باید اجرا کنیم:
[tex]fallow(E) = fallow(B)[/tex]
[tex]fallow(B) = '@' , first(S)[/tex]
[tex]first(S) = 'b' . 'a'[/tex]
عناصر a , b , @ , e , i رو هم به عناصر قبلی یعنی n . m . d اضافه میکنیم.
حالت سوم : [tex]D\rightarrow AF[/tex]
[tex]fallow(A)=first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
البته چون F میتونه لامبدا رو هم قبول کنه پس قانون زیر هم قابل اجراست:
[tex]fallow(A) = fallow(D)[/tex]
[tex]fallow(D) = '@'[/tex]
پس در کل با ۳ حالت تونستیم فالوی A رو بدست بیاریم که برابر هست با : i . e. b. a. d. m .n . @
ممنون لطف کردید خیلی زحمت کشیدید
اما برای follow B شما این قسمت رو حساب نکردید
همان خط اول
S-->AB میره و FollowB مگر نمیشه FollowS اما حساب نکردیم
بله درست میفرمایید. یکی دوتا محاسبه Fallow رو کم گذاشتم.
محاسبات رو تا جایی که در سیکل نیوفته انجام میدیم. میدونیم که با انجام دوباره ش همون عملیات قبلی تکرار میشه.
خوب،این طبیعی هست در گرامر ها؟
جقدر بفهمیم باید بفهمیم باید ادامه بدیم؟
ارسال: #۶
  
RE: Loop در بدست آوردن Follow
(۱۹ دى ۱۳۹۲ ۰۵:۵۶ ب.ظ)H-Arshad نوشته شده توسط:(19 دى ۱۳۹۲ ۰۵:۵۲ ب.ظ)azad_ahmadi نوشته شده توسط:(19 دى ۱۳۹۲ ۰۵:۴۴ ب.ظ)H-Arshad نوشته شده توسط:(19 دى ۱۳۹۲ ۰۴:۳۸ ب.ظ)azad_ahmadi نوشته شده توسط: صورت سوال به این شکل است:
S-> bD|AB
A-> aF|lambda
B-> dE|EF
F-> eb|iBS|lambda
E-> mA|n
D->AF|j
برای بدست اوردن فالوی A بصورت زیر عمل میکنیم:
حالت اول : [tex]S\rightarrow AB[/tex]
[tex]fallow(A) = first(B)[/tex]
[tex]first(B) = 'd' , first(E)[/tex]
[tex]first(E) = 'm' . 'n'[/tex]
پس تاکنون عناصر d,m,n عضو فالوی A هستن.
حالت دوم : [tex]E \rightarrow mA[/tex]
[tex]fallow(A) = fallow(E)[/tex]
[tex]fallow(E) = first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
چون F لامبدا رو هم قبول میکنه پس قاعده زیر رو هم باید اجرا کنیم:
[tex]fallow(E) = fallow(B)[/tex]
[tex]fallow(B) = '@' , first(S)[/tex]
[tex]first(S) = 'b' . 'a'[/tex]
عناصر a , b , @ , e , i رو هم به عناصر قبلی یعنی n . m . d اضافه میکنیم.
حالت سوم : [tex]D\rightarrow AF[/tex]
[tex]fallow(A)=first(F)[/tex]
[tex]first(F) = 'e' . 'i'[/tex]
البته چون F میتونه لامبدا رو هم قبول کنه پس قانون زیر هم قابل اجراست:
[tex]fallow(A) = fallow(D)[/tex]
[tex]fallow(D) = '@'[/tex]
پس در کل با ۳ حالت تونستیم فالوی A رو بدست بیاریم که برابر هست با : i . e. b. a. d. m .n . @
ممنون لطف کردید خیلی زحمت کشیدید
اما برای follow B شما این قسمت رو حساب نکردید
همان خط اول
S-->AB میره و FollowB مگر نمیشه FollowS اما حساب نکردیم
بله درست میفرمایید. یکی دوتا محاسبه Fallow رو کم گذاشتم.
محاسبات رو تا جایی که در سیکل نیوفته انجام میدیم. میدونیم که با انجام دوباره ش همون عملیات قبلی تکرار میشه.
خوب،این طبیعی هست در گرامر ها؟
جقدر بفهمیم باید بفهمیم باید ادامه بدیم؟
خیر این طبیعی نیست. در عمل باید چرخه هایی که در گرامر هستند رو از بین ببریم.(البته این گرامر ظاهرا همه به هم وابسته هستن).
اما برای سوالات کنکور که صرفا محاسبه فالوی یک غیرترمینال رو میخواند باید تا جایی که به چرخه میرسیم ادامه بدیم.
۰
ارسال: #۷
  
RE: حلقه در بدست آوردن Follow
(۱۹ دى ۱۳۹۲ ۰۲:۲۰ ق.ظ)H-Arshad نوشته شده توسط: سلام
من برای بدست اوردن follow یک گرامر مشکل دارم،یعنی هر کدم که مخواهم بدست بیارم ، نیاز به داشتن Follow دیگری هست و انگار افتاده توی loop
مثلا باید follow A رو بریمز توی follow B و بعد خود follow B برای بدست اوردنش باید follow c حساب کنم باز follow c نیاز به ...
سلام
از روی قوانین به راحتی میشه فالو رو حساب کرد.اگه با گرامری خاصی مشکل داری، بگو تا روش کار کنیم.
ارسال: #۸
  
RE: حلقه در بدست آوردن Follow
(۱۹ دى ۱۳۹۲ ۰۳:۲۹ ق.ظ)aem4949 نوشته شده توسط:سلام(19 دى ۱۳۹۲ ۰۲:۲۰ ق.ظ)H-Arshad نوشته شده توسط: سلام
من برای بدست اوردن follow یک گرامر مشکل دارم،یعنی هر کدم که مخواهم بدست بیارم ، نیاز به داشتن Follow دیگری هست و انگار افتاده توی loop
مثلا باید follow A رو بریمز توی follow B و بعد خود follow B برای بدست اوردنش باید follow c حساب کنم باز follow c نیاز به ...
سلام
از روی قوانین به راحتی میشه فالو رو حساب کرد.اگه با گرامری خاصی مشکل داری، بگو تا روش کار کنیم.
بفرمائید
S-> bD|AB
A-> aF|lambda
B-> dE|EF
F-> eb|iBS|lambda
E-> mA|n
D->AF|j
۰
ارسال: #۹
  
RE: Loop در بدست آوردن Follow
قوانین اینا هستند:
۱) علامت $ را به (Follow(s اضافه می کنیم(s نماد شروع).
۲)اگر قانون تولید به شکل p-->aXb وجود داشته باشد(a آلفا و b بتا) آنگاه (first(b را به (follow(x اضافه می کنیم.
۳)اگر قانون تولید به شکل p-->aX وجود داشته باشد آنگاه (follow(p را به (follow(x اضافه می کنیم.
۴) اگر قانون تولیدی به شکل p-->aXA و A در یک یا چند مرحله به اپسیلون (لامبدا) ختم شود آنگاه (Follow(p را به (follow(x اضافه می کنیم.
حالا این شما میگی انگار میره تو loop ، اگه یادت باشه تو برنامه نویسی هم برنامه بازگشتی داشتیم.
مثلا برای Follow(S) داریم:
$ + (Follow(F
یا برای (Follow(A داریم:
[tex]Follow(E) First(F) First(B) Follow(D)[/tex]
و به هم تربیت برای همه حساب می کنیم.
۱) علامت $ را به (Follow(s اضافه می کنیم(s نماد شروع).
۲)اگر قانون تولید به شکل p-->aXb وجود داشته باشد(a آلفا و b بتا) آنگاه (first(b را به (follow(x اضافه می کنیم.
۳)اگر قانون تولید به شکل p-->aX وجود داشته باشد آنگاه (follow(p را به (follow(x اضافه می کنیم.
۴) اگر قانون تولیدی به شکل p-->aXA و A در یک یا چند مرحله به اپسیلون (لامبدا) ختم شود آنگاه (Follow(p را به (follow(x اضافه می کنیم.
حالا این شما میگی انگار میره تو loop ، اگه یادت باشه تو برنامه نویسی هم برنامه بازگشتی داشتیم.
مثلا برای Follow(S) داریم:
$ + (Follow(F
یا برای (Follow(A داریم:
[tex]Follow(E) First(F) First(B) Follow(D)[/tex]
و به هم تربیت برای همه حساب می کنیم.
ارسال: #۱۰
  
RE: Loop در بدست آوردن Follow
(۱۹ دى ۱۳۹۲ ۱۲:۳۷ ب.ظ)aem4949 نوشته شده توسط: قوانین اینا هستند:سلام
۱) علامت $ را به (Follow(s اضافه می کنیم(s نماد شروع).
۲)اگر قانون تولید به شکل p-->aXb وجود داشته باشد(a آلفا و b بتا) آنگاه (first(b را به (follow(x اضافه می کنیم.
۳)اگر قانون تولید به شکل p-->aX وجود داشته باشد آنگاه (follow(p را به (follow(x اضافه می کنیم.
۴) اگر قانون تولیدی به شکل p-->aXA و A در یک یا چند مرحله به اپسیلون (لامبدا) ختم شود آنگاه (Follow(p را به (follow(x اضافه می کنیم.
حالا این شما میگی انگار میره تو loop ، اگه یادت باشه تو برنامه نویسی هم برنامه بازگشتی داشتیم.
مثلا برای Follow(S) داریم:
$ + (Follow(F
یا برای (Follow(A داریم:
[tex]Follow(E) First(F) Follow(D)[/tex]
و به هم تربیت برای همه حساب می کنیم.
درسته من شاید ۲۰ بار تاحالا حساب کردم و درنهایت همه نیاز به follow دیگری پیدا میکنن،چطور از بازگشتی حسابش کرد؟
میشه یک نمونه مثال حل کنید ممنون میشم
دربرنامه نویسی بازگشتی بلاخره ما یک شرط داشتیم که وقتی به اون برسیم . مساله از پایین به بالا میرفت برای حل شدن
الان این شرط اتمامی نیست داخلش
۰
ارسال: #۱۱
  
RE: Loop در بدست آوردن Follow
الان توی گرامری که خودت نوشتی با فالوی چه حرفی مشکل داری تا برات بازش کنم؟
ارسال: #۱۲
  
RE: Loop در بدست آوردن Follow
ارسال: #۱۳
  
RE: Loop در بدست آوردن Follow
(۱۹ دى ۱۳۹۲ ۰۳:۱۲ ب.ظ)H-Arshad نوشته شده توسط:(19 دى ۱۳۹۲ ۰۲:۵۷ ب.ظ)aem4949 نوشته شده توسط: الان توی گرامری که خودت نوشتی با فالوی چه حرفی مشکل داری تا برات بازش کنم؟
سلام
هیچ کدامش بدست نمیاد.وابسته بهم شدن
مثلا
Follow (A)
سلام.
فالوی A برابر هست با :
d . m . n . e . i . $ . b . a
تحلیلی روش داشته باشید، اگه سوالی داشتید بپرسید.
ارسال: #۱۴
  
RE: Loop در بدست آوردن Follow
(۱۹ دى ۱۳۹۲ ۰۳:۴۱ ب.ظ)azad_ahmadi نوشته شده توسط:(19 دى ۱۳۹۲ ۰۳:۱۲ ب.ظ)H-Arshad نوشته شده توسط:(19 دى ۱۳۹۲ ۰۲:۵۷ ب.ظ)aem4949 نوشته شده توسط: الان توی گرامری که خودت نوشتی با فالوی چه حرفی مشکل داری تا برات بازش کنم؟
سلام
هیچ کدامش بدست نمیاد.وابسته بهم شدن
مثلا
Follow (A)
سلام.
فالوی A برابر هست با :
d . m . n . e . i . $ . b . a
تحلیلی روش داشته باشید، اگه سوالی داشتید بپرسید.
بله صحیح هست پاسخ و من پاسخ همه فالو ها دارم اما نمیدانم چطور بدست میاد
فرمول میزارم اما وابسته به هم شده
اگر میشه برای نمونه فالوی A رو شرح بدید چطور بدست امده
ارسال: #۱۵
  
RE: Loop در بدست آوردن Follow
سلام
من اینو بدست آوردم امیدوارم درست باشه و در این زمان کم باقی مانده بدردتون بخوره:
[tex]fallow(A): d,m,n, follow(E) ,e,i, follow(D) ;[/tex]
[tex]fallow(E): follow(B) ,e,i;[/tex]
[tex]fallow(B): follow(S) ,b,a,d,m,n;[/tex]
[tex]fallow(D): follow(S) ;[/tex]
[tex]fallow(S): s (dollar);[/tex]
خب اگه جای فالوها مقادیرشون قرار بدید به نتیجه زیر خواهید رسید:
[tex]fallow(A): d,m,n,s,a,b,e,i;[/tex]
من اینو بدست آوردم امیدوارم درست باشه و در این زمان کم باقی مانده بدردتون بخوره:
[tex]fallow(A): d,m,n, follow(E) ,e,i, follow(D) ;[/tex]
[tex]fallow(E): follow(B) ,e,i;[/tex]
[tex]fallow(B): follow(S) ,b,a,d,m,n;[/tex]
[tex]fallow(D): follow(S) ;[/tex]
[tex]fallow(S): s (dollar);[/tex]
خب اگه جای فالوها مقادیرشون قرار بدید به نتیجه زیر خواهید رسید:
[tex]fallow(A): d,m,n,s,a,b,e,i;[/tex]
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close