56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| /*=============================================================================
 | |
|     Copyright (c) 1998-2003 Joel de Guzman
 | |
|     http://spirit.sourceforge.net/
 | |
| 
 | |
|     Use, modification and distribution is subject to 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_PARSER_IPP)
 | |
| #define BOOST_SPIRIT_PARSER_IPP
 | |
| 
 | |
| namespace boost { namespace spirit {
 | |
| 
 | |
| BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
 | |
| 
 | |
|     ///////////////////////////////////////////////////////////////////////////
 | |
|     //
 | |
|     //  Generic parse function implementation
 | |
|     //
 | |
|     ///////////////////////////////////////////////////////////////////////////
 | |
|     template <typename IteratorT, typename DerivedT>
 | |
|     inline parse_info<IteratorT>
 | |
|     parse(
 | |
|         IteratorT const& first_
 | |
|       , IteratorT const& last
 | |
|       , parser<DerivedT> const& p)
 | |
|     {
 | |
|         IteratorT first = first_;
 | |
|         scanner<IteratorT, scanner_policies<> > scan(first, last);
 | |
|         match<nil_t> hit = p.derived().parse(scan);
 | |
|         return parse_info<IteratorT>(
 | |
|             first, hit, hit && (first == last), hit.length());
 | |
|     }
 | |
| 
 | |
|     ///////////////////////////////////////////////////////////////////////////
 | |
|     //
 | |
|     //  Parse function for null terminated strings implementation
 | |
|     //
 | |
|     ///////////////////////////////////////////////////////////////////////////
 | |
|     template <typename CharT, typename DerivedT>
 | |
|     inline parse_info<CharT const*>
 | |
|     parse(CharT const* str, parser<DerivedT> const& p)
 | |
|     {
 | |
|         CharT const* last = str;
 | |
|         while (*last)
 | |
|             last++;
 | |
|         return parse(str, last, p);
 | |
|     }
 | |
| 
 | |
| BOOST_SPIRIT_CLASSIC_NAMESPACE_END
 | |
| 
 | |
| }} // namespace boost::spirit
 | |
| 
 | |
| #endif
 | |
| 
 | 
