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

تبدیل مستقیم یک عبارت به DFA - manager_66 - 19 خرداد ۱۳۹۰ ۱۱:۴۹ ب.ظ

سلام

من میخوام عبارت #(a*|b) (ba|Landa) رو اول درختش رو بکشم بعد first و last های هر پایانه رو حساب کنم ولی چند جا مشکل دارم . یکی اینکه (firstpos(root که همون # هست چی میشه ؟
و اگه میشه follow تمام پایانه های رو بگین !؟ ممنون .

تبدیل مستقیم یک عبارت به DFA - - rasool - - 20 خرداد ۱۳۹۰ ۰۸:۱۸ ق.ظ

سلام
به نظر حقیر
ریشه در اینجا # نیست بلکه کل عبارت ماست یعنی #(a*|b) (ba|Landa) می باشد که firstpos برای آن ۱ و۲ و ۳و ۵ می باشد.

اما فالو پاس‌ها:
فالوپاس ۱ می شود ۱ و ۳ و ۵
فالوپاس ۲ می شود ۳ و ۵
فالوپاس ۳ می شود ۴
فالوپاس ۴ می شود ۵

دقت شود که در این عبارت مکان پایانه‌ها را( # , a , b , b , a )( به جز لاندا)‌، به ترتیب از چپ به راست شماره گذاری کردیم.

تبدیل مستقیم یک عبارت به DFA - manager_66 - 20 خرداد ۱۳۹۰ ۱۲:۱۸ ب.ظ

ممنون از پاسختون . چرا لاندا شماره گذاری نشد ؟ در چند مثال که دیدم لاندا رو شماره گذاری میکردن!

تبدیل مستقیم یک عبارت به DFA - - rasool - - 20 خرداد ۱۳۹۰ ۰۲:۵۷ ب.ظ

به نظر حقیر
لاندا بعنوان برگ ظاهر می شود و وجود دارد اما در شماره گذاری کردن پایانه‌ها به حساب نمی آید چون لاندا اصلا پایانه نیست.
فکر می کنم در ص۷۳ کامپایلر پیام نور و ص ۱۴۴ کامپایلر اولمن ترجمه دکتردلداری به این مورد اشاره شده باشه.