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 | ||
|  | 
 |