2016-05-06 11 views
3

Ich versuche, die richtige Methode zum Analysieren von istream mit x3 zu finden. Ältere Dokumente beziehen sich auf multi_pass Zeug, kann ich das noch nutzen? Oder gibt es eine andere Möglichkeit, Streams für X3 zu puffern, damit es zurückverfolgen kann?Wie "streamen" Parsen in Boost Spirit X3?

Antwort

4

Sie können immer noch dies verwenden. Gerade sind

#include <boost/spirit/include/support_istream_iterator.hpp> 

Beispiel Live On Coliru

#include <boost/spirit/home/x3.hpp> 
#include <boost/spirit/include/support_istream_iterator.hpp> 
#include <iostream> 
#include <sstream> 

int main() { 
    std::istringstream iss("{ 123, 234, 345, 456, 567, 678, 789, 900, 1011 }"); 
    boost::spirit::istream_iterator f(iss), l; 

    std::vector<int> values; 

    namespace x3 = boost::spirit::x3; 

    if (x3::phrase_parse(f, l, '{' >> (x3::int_ % ',') >> '}', x3::space, values)) { 
     std::cout << "Parse results:\n"; 
     for (auto v : values) std::cout << v << " "; 
    } else 
     std::cout << "Parse failed\n"; 
} 

Drucke

Parse results: 
123 234 345 456 567 678 789 900 1011 
Verwandte Themen