تالار گفتمان مانشت
پیدا کردن first و follow - نسخه‌ی قابل چاپ

پیدا کردن first و follow - z522msn - 12 آبان ۱۳۹۲ ۰۳:۳۸ ب.ظ

سلام دوستان 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]

RE: پیدا کردن first و follow - azad_ahmadi - 12 آبان ۱۳۹۲ ۱۰:۴۴ ب.ظ

سلام.

راحته، بسیار راحت 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 رو بنویسیم.

اگر ابهامی بود بگید توضیح بدم.