123456789101112131415161718192021222324252627282930313233343536373839 |
- /*=============================================================================
- Copyright (c) 2001-2010 Hartmut Kaiser
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- =============================================================================*/
- #include <boost/spirit/include/qi_operator.hpp>
- #include <boost/spirit/include/qi_char.hpp>
- #include <boost/spirit/include/qi_string.hpp>
- #include <boost/spirit/include/qi_numeric.hpp>
- #include <boost/spirit/include/qi_nonterminal.hpp>
- #include <boost/spirit/include/qi_parse.hpp>
- namespace qi = boost::spirit::qi;
- struct num_list : qi::grammar<char const*, qi::rule<char const*> >
- {
- num_list() : base_type(start)
- {
- num = qi::int_;
- start = num >> *(',' >> num);
- }
- qi::rule<char const*, qi::rule<char const*> > start, num;
- };
- // this test must fail compiling
- int main()
- {
- char const* input = "some input, it doesn't matter";
- char const* end = &input[strlen(input)];
- num_list g;
- qi::phrase_parse(input, end, g,
- qi::space | ('%' >> *~qi::char_('\n') >> '\n'));
- return 0;
- }
|