تالار گفتمان مانشت

نسخه‌ی کامل: پیدا کردن first و follow
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان firstو folow گرامر زیر رو چجوری بدست میارن؟(اینارو چجوری باید حل کنیم من برای مثال متغیر حروفی میتونم حل کنم ولی از اینا که میبینم گیج میشم)


[tex]stmp\rightarrow {if \ expr-bool \ then \ start \ start-prime}\\ stmp\rightarrow {id}\\ start-prime\rightarrow {else \ stmp}\\ start-prime\rightarrow \epsilon \\ expr-bool\rightarrow b[/tex]
سلام.

راحته، بسیار راحت Smile
برای اینطور سوالا باید بجای یه عبارت دراز اونو کوتاه ترش کنید. مثلا بجای Start-Prime میتونید بنویسید Q .
حالا به حل سوال دقت کنید:

این گرامری هست که شما نوشتید :

[tex]stmp\rightarrow {if \ expr-bool \ then \ start \ start-prime}\\ stmp\rightarrow {id}\\ start-prime\rightarrow {else \ stmp}\\ start-prime\rightarrow \epsilon \\ expr-bool\rightarrow b[/tex]

اینم گرامر ساده شده ی من که نوشتم(دقت کنید که بجای هر کلمه از یک کاراکتر استفاده کنید، نکته مهم اینه که عناصر غیرپایانی رو با حروف بزرگ و پایانی هارو با حرف کوچیک بنویس):

Stamp = S
if = i
expr-bool = E
then = t
start = c
start-prime = R
id = id (چون id ساده بود همون رو نوشتم).
else = e
b=b
..........
[tex]S\rightarrow iEtcR | id[/tex]
[tex]R\rightarrow eS|\lambda[/tex]
[tex]E\rightarrow b[/tex]

حالا براساس این گرامر ساده شده میایم First و Fallow رو بدست میاریم:
First-S = i.id
First-E = b
First-R = e.Lambda
Fallow-S = #
Fallow-R = #
Fallow-E = t

حالا فقط کافیه براساس تبدیلات بالا First و Fallow رو بنویسیم.

اگر ابهامی بود بگید توضیح بدم.
لینک مرجع