1/*=============================================================================
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
8#include <boost/spirit/include/qi_operator.hpp>
9#include <boost/spirit/include/qi_char.hpp>
10#include <boost/spirit/include/qi_string.hpp>
11#include <boost/spirit/include/qi_numeric.hpp>
12#include <boost/spirit/include/qi_nonterminal.hpp>
13#include <boost/spirit/include/qi_parse.hpp>
14
15namespace qi = boost::spirit::qi;
16
17struct num_list : qi::grammar<char const*, qi::rule<char const*> >
18{
19 num_list() : base_type(start)
20 {
21 num = qi::int_;
22 start = num >> *(',' >> num);
23 }
24
25 qi::rule<char const*, qi::rule<char const*> > start, num;
26};
27
28// this test must fail compiling
29int main()
30{
31 char const* input = "some input, it doesn't matter";
32 char const* end = &input[strlen(s: input)];
33
34 num_list g;
35 qi::phrase_parse(first&: input, last: end, expr: g,
36 skipper: qi::space | ('%' >> *~qi::char_('\n') >> '\n'));
37
38 return 0;
39}
40

source code of boost/libs/spirit/test/qi/grammar_fail.cpp