Mamy oto kod:
#include <boost/spirit/core.hpp>
#include <boost/spirit/iterator/multi_pass.hpp>
using namespace boost::spirit;
using namespace std;
ifstream in("input_file.txt"); // we get our input from this file
typedef char char_t;
typedef multi_pass<istreambuf_iterator<char_t> > iterator_t;
typedef skip_parser_iteration_policy<space_parser> iter_policy_t;
typedef scanner_policies<iter_policy_t> scanner_policies_t;
typedef scanner<iterator_t, scanner_policies_t> scanner_t;
typedef rule<scanner_t> rule_t;
iter_policy_t iter_policy(space_p);
scanner_policies_t policies(iter_policy);
iterator_t first(
make_multi_pass(std::istreambuf_iterator<char_t>(in)));
scanner_t scan(
first, make_multi_pass(std::istreambuf_iterator<char_t>()),
policies);
rule_t n_list = real_p >> *(',' >> real_p);
match<> m = n_list.parse(scan);
Ten kod jest ściągnięty ze dokumentacji boost.spirit z tematu "The multi_pass".
Powyższy program analizuje Od razu cały plik input_file.txt parserem n_list a nie kolejne wiersze.
Pytanie:Jak przekształcić powyższy program by parsował kolejne wiersze parserem n_list a nie jednocześnie cały plik.
Za każdą pomoc wdzięcznie dziękuję!