یک برنامه C++ بنویسید که یک رشته شامل کد سادهٔ زبان ساختگی دریافت کند و با استفاده از regex توکنهای کلیدی (مثلاً if، else، while)، شناسهها، اعداد و عملگرها را استخراج و همراه نوع هر توکن چاپ کند.
3.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:15 0.0
برای حل مسئله از کتابخانهٔ استاندارد std::regex در C++ (کامپایل با -std=c++11 یا بالاتر) استفاده کنید؛ الگوهای جداگانهای برای کلیدواژهها (مثلاً \b(if|else|while)\b)، شناسهها ([A-Za-z_]\w*)، اعداد (\d+(\.\d+)?) و عملگرها (==|!=|=|[+\-*/=]) تعریف کنید و با استفاده از std::sregex_iterator یا std::regex_search به ترتیب مناسب (الگوهای طولانیتر ابتدا) روی رشته پیمایش کنید تا توکنها تولید شوند، فاصلهها و نظرات را نادیده بگیرید و برای راحتی از raw string literal (R"( ... )") برای الگوها استفاده کنید؛ نکتهها: ترتیب تطبیق مهم است، از anchorها و boundaryها برای تشخیص کامل کلمات استفاده کنید و در خروجی نوع هر توکن را همراه مقدار آن چاپ کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای دقت در تشخیص توکنها، الگوها را بهصورت طولانیتر قبل از کوتاهتر مرتب کنید تا همپوشانیها به درستی مدیریت شوند. استفاده از std::sregex_iterator همراه با raw string literals برای تعریف الگوها کار را سادهتر میکند و نیاز به فرار دادن backslashها را کاهش میدهد. مطمئن شوید از مرزهای واژه (\b ...) برای کلیدواژهها استفاده کنید و شناسهها را با [A-Za-z_]\w* مطابقت دهید تا از اشتباه در تشخیص جلوگیری شود و اعداد را با \d+(\.\d+)? پذیرش کنید. اگر ورودی بزرگ است، ممکن است کاربرد صرف regex کارا نباشد و ترکیبی با یک tokenizer ساده یا بهینهسازیهای دیگر برای افزایش کارایی مفید باشد.
گزارش