diff options
Diffstat (limited to 'src/boost/libs/spirit/test/qi/grammar_fail.cpp')
-rw-r--r-- | src/boost/libs/spirit/test/qi/grammar_fail.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/boost/libs/spirit/test/qi/grammar_fail.cpp b/src/boost/libs/spirit/test/qi/grammar_fail.cpp new file mode 100644 index 00000000..72b3a566 --- /dev/null +++ b/src/boost/libs/spirit/test/qi/grammar_fail.cpp @@ -0,0 +1,39 @@ +/*============================================================================= + 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; +} |