سلام، مدتی بود که داشتم رو بحث مهم "تشخیص عضویت یک جمله در یک زبان مستقل از متن" کار میکردم و تصمیم گرفتم تا یک "نیمه کامپایلر" رو پیاده سازی کنم.
همانطور که میدونید زبان های مستقل از متن توسط گرامرهای مستقل از متن تعریف می شوند. البته درک یک گرامر مستقل از متن نیاز به داشتن اطلاعات کافی در زمینه ی نظزیه زبان ها و ماشین ها رو داره. اینجا یه مثال از یک زبان ساده ی مستقل از متن رو میارم :
S---->AB
A---->BB
B---->AB
A---->a
B---->b
نمیخوام اینجا کل مبحث زبان های مستقل از متن رو آموزش بدم . فقط یه یاداوری مختصر میکنم تا بتونید از برنامه ای که نوشتم استفاده کنید. خوب همون طور که میبینید گرامر بالا داره یک زبان مستقل از متن رو تعریف میکنه، زبانی که جملاتش میتونن با a یا b شروع شن ولی حتما باید با b تموم شن. درضمن تعداد b ها باید فرد باشه.
برنامه ای که نوشتم، گرامر و جمله ی موردنظر شما رو میگیره و عضویت یا عدم عضویت جمله ی شما در زبانی که توسط گرامر تعریف کردید رو مشخص میکنه. شما میتونید هرچن جمله ای که میخواهید برای عضویت آزمایش کنید.
فقط یه چیزایی رو باید رعایت کنید :
1- متغییر شروع تون رو S بگیرید.
2-به جای نوشتن S---->AB باید بنویسد S>AB.
3-بعد از واردکردن آخرین قانون گرامر دیگر اینتر نکنید.
4- و از همه مهمتر اینکه گرامر باید در فرم نرمال چامسکی باشه.
تصویر نرم افزار رو که نحوه ی نوشتن گرامر را نشان میده همراه برنامه ضمیمه کردم.
درصورت درست بودن جمله پیغام Valid Sentence ظاهر خواهد شد.