[/==============================================================================
    Copyright (C) 2001-2008 Joel de Guzman
    Copyright (C) 2001-2008 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)
===============================================================================/]

[section Parsing]

Central to the library is the parser. The parser does the actual
work of recognizing a linear input stream of data read sequentially
from start to end by the supplied iterators. The parser attempts to
match the input following a well-defined set of specifications known
as grammar rules. The parser returns a `bool` to report the success or
failure. When successful, the parser calls a client-supplied semantic
action, if there is one. The semantic action extracts structural
information depending on the data passed by the parser and the
hierarchical context of the parser it is attached to.

Parsers come in different flavors. The Spirit library comes bundled with an 
extensive set of pre-defined parsers that perform various parsing tasks from 
the trivial to the complex. The parser, as a concept, has a public conceptual 
interface contract. Following the contract, anyone can write a conforming 
parser that will play along well with the library's predefined components. We 
shall provide a blueprint detailing the conceptual interface of the parser 
later.

Clients of the library generally do not need to write their own hand-coded 
parsers at all. Spirit has an immense repertoire of pre-defined parsers 
covering all aspects of syntax and semantic analysis. We shall examine this 
repertoire of parsers in the following sections. In the rare case where a 
specific functionality is not available, it is extremely easy to write a 
user-defined parser. The ease in writing a parser entity is the main reason 
for Spirit's extensibility.

[heading The API functions exposed by __qi__ ]

[heading The parse() function]

[heading The phrase_parse() function]

[heading The tokenize_and_parse() function]

[heading The tokenize_and_phrase_parse() function]

[endsect]

