1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /*=============================================================================
- Copyright (c) 2001-2011 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)
- =============================================================================*/
- #if !defined(BOOST_SPIRIT_TEST_PARSER_SEP_24_2007_0558PM)
- #define BOOST_SPIRIT_TEST_PARSER_SEP_24_2007_0558PM
- #include <boost/spirit/include/qi_parse.hpp>
- #include <boost/spirit/include/qi_what.hpp>
- namespace spirit_test
- {
- template <typename Char, typename Parser, typename Lexer>
- inline bool test_parser(Char const* in, Parser const& p, Lexer& lex,
- bool full_match = true)
- {
- // we don't care about the result of the "what" function.
- // we only care that all parsers have it:
- boost::spirit::qi::what(p);
- std::string str (in);
- std::string::iterator it_in = str.begin();
- std::string::iterator end_in = str.end();
- typedef typename Lexer::iterator_type iterator_type;
- iterator_type iter = lex.begin(it_in, end_in);
- iterator_type end = lex.end();
- return boost::spirit::qi::parse(iter, end, p)
- && (!full_match || (iter == end));
- }
- template <typename Char, typename Parser, typename Lexer, typename Skipper>
- inline bool test_parser(Char const* in, Parser const& p, Lexer& lex,
- Skipper const& s, bool full_match = true)
- {
- // we don't care about the result of the "what" function.
- // we only care that all parsers have it:
- boost::spirit::qi::what(p);
- std::string str (in);
- std::string::iterator it_in = str.begin();
- std::string::iterator end_in = str.end();
- typedef typename Lexer::iterator_type iterator_type;
- iterator_type iter = lex.begin(it_in, end_in);
- iterator_type end = lex.end();
- return boost::spirit::qi::phrase_parse(iter, end, p, s)
- && (!full_match || (iter == end));
- }
- }
- #endif
|