• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //  Copyright (c) 2010 Daniel James
2 //  Copyright (c) 2001-2010 Hartmut Kaiser
3 //
4 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
5 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 
7 #include <boost/config/warning_disable.hpp>
8 #include <boost/detail/lightweight_test.hpp>
9 
10 #include <boost/spirit/include/qi.hpp>
11 #include <vector>
12 
main()13 int main()
14 {
15     typedef char const* Iterator;
16     namespace qi = boost::spirit::qi;
17 
18     qi::rule<Iterator, std::vector<boost::iterator_range<Iterator> >()> list;
19     list = *qi::raw[qi::char_]; // This fails to compile
20 
21     char const* test = "abcdef";
22     unsigned test_length = 6;
23     char const* test_begin = test;
24     char const* test_end = test + test_length;
25     std::vector<boost::iterator_range<Iterator> > result;
26     bool r = qi::parse(test_begin, test_end, list, result);
27 
28     BOOST_TEST(r);
29     BOOST_TEST(test_begin == test_end);
30     BOOST_TEST(result.size() == test_length);
31 
32     for(unsigned i = 0; i < test_length; ++i) {
33         BOOST_TEST(result[i].begin() == test + i);
34         BOOST_TEST(result[i].end() == test + i + 1);
35     }
36 
37     return boost::report_errors();
38 }
39