10de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant//===----------------------------------------------------------------------===// 20de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant// 30de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant// The LLVM Compiler Infrastructure 40de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 70de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant// 80de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant//===----------------------------------------------------------------------===// 90de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant 100de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant// <regex> 110de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant 120de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant// template <class charT, class traits = regex_traits<charT>> class basic_regex; 130de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant 140de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant// basic_regex(const charT* p, flag_type f = regex_constants::ECMAScript); 150de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant 160de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant#include <regex> 170de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant#include <cassert> 18ee226c05af9e0187098f43fb71465a581487af9bDan Austin#include "test_macros.h" 190de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant 200de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnanttemplate <class CharT> 210de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnantvoid 220de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnanttest(const CharT* p, std::regex_constants::syntax_option_type f, unsigned mc) 230de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant{ 240de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant std::basic_regex<CharT> r(p, f); 250de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant assert(r.flags() == f); 260de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant assert(r.mark_count() == mc); 270de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant} 280de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant 290de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnantint main() 300de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant{ 310de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant test("\\(a\\)", std::regex_constants::basic, 1); 320de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant test("\\(a[bc]\\)", std::regex_constants::basic, 1); 330de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant test("\\(a\\([bc]\\)\\)", std::regex_constants::basic, 2); 340de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant test("(a([bc]))", std::regex_constants::basic, 0); 35878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant 36878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\)", std::regex_constants::extended, 0); 37878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a[bc]\\)", std::regex_constants::extended, 0); 38878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\([bc]\\)\\)", std::regex_constants::extended, 0); 39878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("(a([bc]))", std::regex_constants::extended, 2); 40878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant 41878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\)", std::regex_constants::ECMAScript, 0); 42878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a[bc]\\)", std::regex_constants::ECMAScript, 0); 43878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\([bc]\\)\\)", std::regex_constants::ECMAScript, 0); 44878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("(a([bc]))", std::regex_constants::ECMAScript, 2); 45878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant 46878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\)", std::regex_constants::awk, 0); 47878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a[bc]\\)", std::regex_constants::awk, 0); 48878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\([bc]\\)\\)", std::regex_constants::awk, 0); 49878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("(a([bc]))", std::regex_constants::awk, 2); 50878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant 51878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\)", std::regex_constants::grep, 1); 52878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a[bc]\\)", std::regex_constants::grep, 1); 53878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\([bc]\\)\\)", std::regex_constants::grep, 2); 54878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("(a([bc]))", std::regex_constants::grep, 0); 55878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant 56878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\)", std::regex_constants::egrep, 0); 57878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a[bc]\\)", std::regex_constants::egrep, 0); 58878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("\\(a\\([bc]\\)\\)", std::regex_constants::egrep, 0); 59878465043ff69cb10c3e65385c31384ef853d9abHoward Hinnant test("(a([bc]))", std::regex_constants::egrep, 2); 600de86b6338b4bf222acfee1384ac1fd9b2a08bd9Howard Hinnant} 61