عنوان پروژه :
برنامه ۱۰ عدد از کاربر بگیرد و ماکزیمم و مینیمم و نزدیک ترین عدد به میانگین را نمایش دهد :
توضیحات :
ابتدا می بایست ۱۰ عدد از کاربر دریافت کنیم :
برای هر عدد ما باید عدد را به صورت یک رشته کاراکتر دریافت کنیم و با توسط تابع زیر مقدار عددی آن رشته را محاسبه نماییم ! فرض شده است که اعداد کوچکتر از ۶۵۵۳۵ هستند که در دو بایت جا بگیرند!
این پروژه ی درس کامپایلر من باشد و عملیات یک پارسر پیشگو را شبیه سازی می نماید. هدف این پروژه تشخیص این مقوله است که آیا گرامر ورودی ، یک گرامر LL1 می باشد یا خیر!
در طی این پروژه عملیات حذف بازگشتی چپ غیر مستقیم ، حذف بازگشتی چپ مستقیم و حذف فاکتور چپ جهت رفع ابهام انجام می شود ، سپس مجموعه های First و Follow به ازای هر NonTerminal ساخته می شود و در نهایت جدول LL1 ساخته می شود ، در صورتی که در هیچ یک از خانه های جدول تولید شده بیش از یک Role موجود نباشد گرامر LL1 می باشد.
نکته : برای نمایش Lambda از _ درگرامر استفاده شده است!
نکته : به ازای هر Nonterminal دقیقا در ورودی بیان کنید که چه Role هایی وجود دارد ! یعنی اگر Nonterminal ای با نام X وجود دارد حتما باید حداقل Source Token یک Role گرامر X باشد!
نکته : اگر گرامر نیاز به تولید Nonterminal دارد ، حتما Nonterminal های موجود در گرامر را به صورت دنباله ای از حروف الفبا انتخاب نمایید ، مثلا اگر ۳ Nonterminal دارید ، از حروف A تا C برای نام گذاری استفاده نمایید !
نمونه گرامر ورودی :
A->iBtAC|a;
C->eC|_|Cf;
B->b|Dg;
D->Ar|_;