یک برنامه 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ها برای تشخیص کامل کلمات استفاده کنید و در خروجی نوع هر توکن را همراه مقدار آن چاپ کنید.

توسط پژوهشگر در 220 روز قبل ساعت 02:15
دسته بندی ها: C Plus Plus C Plus Plus for beginner
sara در 220 روز قبل ساعت 10:22

برای دقت در تشخیص توکن‌ها، الگوها را به‌صورت طولانی‌تر قبل از کوتاه‌تر مرتب کنید تا همپوشانی‌ها به درستی مدیریت شوند. استفاده از std::sregex_iterator همراه با raw string literals برای تعریف الگوها کار را ساده‌تر می‌کند و نیاز به فرار دادن backslashها را کاهش می‌دهد. مطمئن شوید از مرزهای واژه (\b ...) برای کلیدواژه‌ها استفاده کنید و شناسه‌ها را با [A-Za-z_]\w* مطابقت دهید تا از اشتباه در تشخیص جلوگیری شود و اعداد را با \d+(\.\d+)? پذیرش کنید. اگر ورودی بزرگ است، ممکن است کاربرد صرف regex کارا نباشد و ترکیبی با یک tokenizer ساده یا بهینه‌سازی‌های دیگر برای افزایش کارایی مفید باشد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری