grammar_fail.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*=============================================================================
  2. Copyright (c) 2001-2010 Hartmut Kaiser
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. =============================================================================*/
  6. #include <boost/spirit/include/qi_operator.hpp>
  7. #include <boost/spirit/include/qi_char.hpp>
  8. #include <boost/spirit/include/qi_string.hpp>
  9. #include <boost/spirit/include/qi_numeric.hpp>
  10. #include <boost/spirit/include/qi_nonterminal.hpp>
  11. #include <boost/spirit/include/qi_parse.hpp>
  12. namespace qi = boost::spirit::qi;
  13. struct num_list : qi::grammar<char const*, qi::rule<char const*> >
  14. {
  15. num_list() : base_type(start)
  16. {
  17. num = qi::int_;
  18. start = num >> *(',' >> num);
  19. }
  20. qi::rule<char const*, qi::rule<char const*> > start, num;
  21. };
  22. // this test must fail compiling
  23. int main()
  24. {
  25. char const* input = "some input, it doesn't matter";
  26. char const* end = &input[strlen(input)];
  27. num_list g;
  28. qi::phrase_parse(input, end, g,
  29. qi::space | ('%' >> *~qi::char_('\n') >> '\n'));
  30. return 0;
  31. }