یک تحلیلگر لغوی (tokenizer) ساده برای یک زبان مینیکد بنویسید که رشتهٔ ورودی را پردازش کرده و توکنهای کلماتکلیدی (if, else, while)، شناسهها، اعداد صحیح، عملگرها (+ - * / = ==) و پرانتزها را شناسایی و نوع و مقدار هر توکن را چاپ کند.
4.0 بازدید آخرین ویرایش در 203 روز قبل ساعت 02:38 0.0
رشته را کاراکتر به کاراکتر پیمایش کنید، از توابع استاندارد مانند isspace، isalpha و isdigit برای تشخیص فضاها، شروع شناسهها و اعداد استفاده کنید، شناسههای جمعشده را با لیست کلماتکلیدی مقایسه کنید و برای عملگرهای دوکاراکتری مانند "==" با نگاه کردن به کاراکتر بعدی تصمیم بگیرید؛ از هدر استفاده نکنید. پیشنهاد میشود ساختار توکن (نوع و مقدار) را در یک struct تعریف کرده و با توابع کمکی هر دسته از توکنها را استخراج و در یک بردار ذخیره و سپس چاپ کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
ایدهٔ شما برای پیادهسازی tokenizer ساده برای زبان مینیکد خوب و عملی است. توصیه میکنم توکنها را در یک struct با فیلدهای نوع و مقدار نگه دارید و همه را در یک بردار جمعآوری کنید تا چاپ و دیباگ ساده باشد. ابتدا با پیمایش کاراکتر به کاراکتر، فضاها را رد کنید و با isspace، isalpha و isdigit تشخیص آغاز شناسهها و اعداد بدهید، کلیدواژهها را با لیست (if, else, while) مقایسه کنید و شناسههای نامکلیدی را به صورت IDENT یا KEYWORD دستهبندی کنید. برای دوکاراکتریها مثل ==، به کاراکتر بعدی نگاه کنید تا توکنِ کامل ساخته شود، و برای پرانتزها هم توکنهای جداگانه بسازید. در پایان، توکنها را در بردار چاپ کنید و به خطای ورودی ناهمخوان نیز پاسخ مناسبی بدهید.
گزارش