- #include <iostream> 
- #include <string> 
- #include <vector> 
- #include <regex> 
- using namespace std; 
-   
- int main() { 
- 	std::regex rx(R"(&&|\|\||[();])"); 
- 	std::string exp = "a < b | c | d > e >> f && ((g) || h) ; i"; 
- 	std::sregex_token_iterator srti(exp.begin(), exp.end(), rx, {-1, 0}); 
- 	std::vector<std::string> tokens; 
- 	std::remove_copy_if(srti, std::sregex_token_iterator(),  
-                     std::back_inserter(tokens), 
-                     [](std::string const &s) { return s.empty(); }); 
-     for( auto & p : tokens ) std::cout <<"'"<< p <<"'"<< std::endl; 
-     return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cmVnZXg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCXN0ZDo6cmVnZXggcngoUiIoJiZ8XHxcfHxbKCk7XSkiKTsKCXN0ZDo6c3RyaW5nIGV4cCA9ICJhIDwgYiB8IGMgfCBkID4gZSA+PiBmICYmICgoZykgfHwgaCkgOyBpIjsKCXN0ZDo6c3JlZ2V4X3Rva2VuX2l0ZXJhdG9yIHNydGkoZXhwLmJlZ2luKCksIGV4cC5lbmQoKSwgcngsIHstMSwgMH0pOwoJc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRva2VuczsKCXN0ZDo6cmVtb3ZlX2NvcHlfaWYoc3J0aSwgc3RkOjpzcmVnZXhfdG9rZW5faXRlcmF0b3IoKSwgCiAgICAgICAgICAgICAgICAgICAgc3RkOjpiYWNrX2luc2VydGVyKHRva2VucyksCiAgICAgICAgICAgICAgICAgICAgW10oc3RkOjpzdHJpbmcgY29uc3QgJnMpIHsgcmV0dXJuIHMuZW1wdHkoKTsgfSk7CiAgICBmb3IoIGF1dG8gJiBwIDogdG9rZW5zICkgc3RkOjpjb3V0IDw8IiciPDwgcCA8PCInIjw8IHN0ZDo6ZW5kbDsKICAgIHJldHVybiAwOwp9