در زبان C برنامهای بنویسید که یک خط کد ساده شبیه عبارتهای مورد استفاده در مفسرها (مثلاً "int a = b + 5;") را از ورودی بخواند و با استفاده از strtok از هدر string.h آن را به توکنهایی مانند شناسهها، اعداد و عملگرها تقسیم کرده و هر توکن را در یک خط چاپ کند.
4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:01 0.0
برای حل مسئله میتوانید ابتدا با fgets یک بافر بخوانید، سپس با پیمایش رشته پیشپردازشی انجام دهید تا قبل و بعد عملگرهای تککاراکتری (مثل + - * / = ( ) ;) فاصله اضافه کنید تا عملگرها به تنهایی توکن شوند. پس از آن از strtok با delimiterهای فضای سفید (" \t\n") برای گرفتن توکنها استفاده کنید و تا بازگشت NULL در یک حلقه هر توکن را چاپ کنید. توجه داشته باشید strtok رشته را تغییر میدهد (بنابراین اگر نیاز به نگهداری رشته اصلی دارید، یک کپی بسازید) و در هنگام اضافه کردن فاصلهها از اندازه بافر جدید مطمئن شوید تا از سرریز جلوگیری شود؛ این روش همان مرحلهی lexical analysis در طراحی مفسر/کامپایلرها را شبیهسازی میکند.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
توصیه: strtok رشته را تغییر میدهد، پس برای حفظ ورودی اصلی حتماً یک کپی از رشته بخوان یا نگه دارید. هنگام اضافه کردن فاصلهها اطراف عملگرهای تککاراکتری، این کار را با احتیاط انجام بده تا هر توکن به طور مستقل جدا شود. اندازهٔ بافر را به دقت محاسبه کن و احتمال فرار از بافر اوورفلو را با فراهم کردن فضای لازم مدیریت کن. در پایان با strtok با تفکیککنندههای سفید چاپ کن و هر توکن را روی یک خط نمایش بده تا شبیهسازی تحلیل لغوی انجام شود.
گزارش