Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <boost/spirit/include/qi.hpp>
- namespace qi = boost::spirit::qi;
- template < typename Iterator >
- struct Magic : qi::grammar<Iterator, std::string() > {
- qi::rule<Iterator,std::string()> start;
- Magic() : Magic::base_type(start) {
- using qi::char_;
- start %= *char_(' ', '}');
- }
- };
- int main() {
- using namespace std;
- // Analizowana linia
- string input;
- getline(cin,input);
- // Wczytany wynik
- string result;
- // Poczatek wejscia
- string::iterator it = input.begin();
- // Koniec wyjscia
- string::iterator end = input.end();
- // Parser pozwalajacy na ciag znakow od ' ' do '}'
- Magic<string::iterator> parser;
- // Odpalenie parsera na stringu 'input'
- // i zapakowanie wczytyanych danych do 'result'
- bool r = parse(it,end, parser,result);
- // Jezeli r == true (oznacza poprawne parsowanie)
- // oraz wszystkie dane zostaly sprasowane
- // to mamy poprawny string
- if(r && it == end)
- cout << "Poprawny string" << endl;
- // wpp string zawiera niepoprawne znaki
- else cout << "String zawiera niepoprawne dane" << endl;
- // Wypisanie wyniku
- cout << "Wczytany string: " << endl;
- cout << result << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement