PDA

View Full Version : سوال: پروژه کامپایلر



hani9776
جمعه 19 آبان 1396, 18:59 عصر
پروژه
ورودی: آدرس یک فایل متنی شامل کاراکترهای ASCII
خروجی: آدرس صفحات وب و ایمیلهای موجود در فایل متنی
مواردی که باید تحویل داده شوند:
1 . طراحی یک عبارت منظم برای آدرسهای ایمیل
2 . طراحی یک عبارت منظم برای آدرسهای وب
3 . تبدیل عبارات منظم به NFA و سپس DFA
4 . کمینهسازی تعداد حالات DFA
5 . پیاده سازی نرم افزاری با استفاده از موارد فوق برای استخراج آدرسها از فایل متنی ورودی

m.r226
سه شنبه 30 آبان 1396, 23:11 عصر
از GCC-4.9 به بعد میتونی مستقیم از regex یا همون regular expression مستقیم در C++‎‎‎‎‎ استفاده کنی
یه مثال:




int main(int argc, char *argv[])
{
std::string url (argv[1]);
unsigned counter = 0;

std::regex url_regex (
R"(^(([^:\/?#]+):)?(//([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?)",
std::regex::extended
);
std::smatch url_match_result;

std::cout << "Checking: " << url << std::endl;

if (std::regex_match(url, url_match_result, url_regex)) {
for (const auto& res : url_match_result) {
std::cout << counter++ << ": " << res << std::endl;
}
} else {
std::cerr << "Malformed url." << std::endl;
}

return EXIT_SUCCESS;
}

اجرا و خروجی:




0: www.google.de/test.php&id=2#anker stackoverflow www.test.com please work example.com/test
1:
2:
3:
4:
5: www.google.de/test.php&id=2
6:
7:
8: #anker stackoverflow www.test.com please work example.com/test
9: anker stackoverflow www.test.com please work example.com/test
www.google.de/test.php&id=2#anker stackoverflow www.test.com please work example.com/test